Пустая база с сохранённой конфигурацией: четыре способа очистить 1С и чем каждый рискует
Содержание
Самый чистый способ почистить 1С от всех данных — не удалять ничего, а создать новую пустую базу на той же конфигурации. В Конфигураторе сохраните конфигурацию в файл (Конфигурация → Сохранить конфигурацию в файл), создайте новую информационную базу без конфигурации и загрузите в неё этот .cf. Все доработки останутся, а документов, справочников и движений не будет вовсе. Если нужно сохранить справочники, их переносят в новую базу выгрузкой в XML.
Удалять данные внутри рабочей базы приходится, когда пустая база не подходит: нужно оставить пользователей, настройки, контрагентов и номенклатуру, а убрать только документы. Тогда выбирают между штатным удалением помеченных объектов (медленно, но безопасно), внешней обработкой с прямым удалением (быстро, нужен опыт) и SQL (последнее средство только для клиент-серверной базы). Способы ниже — от безопасного к радикальному.
| Способ | Когда выбирать | Что остаётся | Риски |
|---|---|---|---|
Новая база из .cf | Нужна полностью пустая база | Только конфигурация | Минимальные; пользователи и настройки не переносятся |
| Удаление помеченных объектов | Убрать документы, оставить справочники | Всё, что не помечено | Долго на большой базе, мешают ссылки |
Внешняя обработка с Удалить() | Десятки тысяч документов, нужен результат за час | Что не попало в код | Битые ссылки, если удалить лишнее |
SQL TRUNCATE / DELETE | Клиент-серверная база, остальное не справилось | Что не тронуто в СУБД | Нарушение целостности, потеря данных без возврата |
Подготовка базы 1С к полной очистке
Перед любой очисткой сделайте выгрузку информационной базы в .dt и проверьте, что файл открывается. Удалённые данные 1С не хранит в «корзине», вернуть их можно только из копии.
Порядок подготовки:
- 💾 Выгрузите базу:
Конфигуратор → Администрирование → Выгрузить информационную базу. Для выгрузки и последующих операций пользователи должны выйти из базы. - 📁 Для файловой базы дополнительно скопируйте каталог с файлом
1Cv8.1CDцеликом — это самая быстрая страховка. - 🧪 Работайте на копии. Загрузите
.dtв новую базу, отработайте очистку на ней, и только потом повторяйте на рабочей. Либо очищенная копия просто становится новой рабочей базой. - 📋 Решите заранее, что оставить: справочники (контрагенты, номенклатура, сотрудники), константы, учётную политику, пользователей, начальные остатки.
- 🔌 Отключите обмены и регламентные задания на копии. Иначе копия начнёт отправлять данные в рабочие узлы или выгружать документы в ЭДО.
Копия рабочей базы считает себя рабочей. Если в ней настроены обмены с другими базами или банком, первая же синхронизация может удалить данные и у партнёра по обмену. При запуске копии платформа обычно спрашивает, является ли база копией, — отвечайте, что это копия.
Ещё одно решение до старта — нужна ли пустая база с нуля или база «без документов». От этого зависит способ.
Обработки вроде DBFix: что они умеют на самом деле
В советах по очистке часто упоминают «DBFix». Такой штатной обработки в платформе 1С:Предприятие 8.3 нет. Под этим названием ходят сторонние внешние обработки, и путаницу добавляет утилита chdbfl.exe — она проверяет и восстанавливает файловую базу, но данные не удаляет.
Что важно знать про сторонние обработки очистки:
- 🔍 Откройте модуль и прочитайте код до запуска. Внешняя обработка выполняется с правами пользователя, который её открыл. У администратора это права на всё.
- ⚙️ Почти все такие обработки делают одно и то же: обходят документы и вызывают удаление объекта с отключёнными проверками. Это легко написать самому — пример ниже.
- 🛑 Не запускайте обработки из непроверенных источников на рабочей базе. Ошибка в отборе удалит справочники вместе с документами.
Утилита chdbfl.exe пригодится после очистки. Она лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe (номер версии — ваш). Запускать её можно только когда база закрыта всеми пользователями.
Штатное удаление документов и их движений в 1С
Это самый безопасный способ: платформа проверяет ссылки и не удаляет объект, на который что-то ссылается. Подходит для БП 3.0, ЗУП 3.1, УТ 11 и других конфигураций на БСП.
Шаг 1. Включите режим «Все функции»
- Откройте меню (значок с тремя полосками или шестерёнкой в заголовке окна) →
Сервис и настройки → Параметры. - Поставьте флажок
Отображать команду "Все функции". - Теперь в главном меню есть пункт
Все функции: в нём списки всех документов, справочников и регистров.
Шаг 2. Пометьте документы на удаление
Все функции → Документы→ откройте вид документа, например «Реализация (акты, накладные, УПД)».- Выделите все строки сочетанием
Ctrl+A. - Нажмите
Del— платформа спросит, пометить ли выделенные объекты на удаление. Подтвердите. - Повторите для каждого вида документа, который нужно убрать.
Проведённые документы при пометке распроводятся: движения по регистрам удаляются сразу. Поэтому пометка 20 тысяч проведённых документов занимает заметное время.
Начинайте с документов-«потомков»: реализаций, оплат, счетов-фактур. Затем помечайте документы-основания — заказы, поступления. Так меньше ссылок останется, и удаление пройдёт с первого раза.
Шаг 3. Удалите помеченные объекты
- В БП 3.0:
Администрирование → Обслуживание, в группе «Корректировка данных» →Удаление помеченных объектов. - Выберите режим удаления всех помеченных объектов и запустите.
- После завершения обработка покажет список объектов, которые удалить не удалось, и ссылки, которые этому мешают.
Если не удалились объекты, на которые ссылаются другие данные, откройте мешающий объект из списка, пометьте его тоже или уберите из него ссылку, затем повторите удаление.
Скорость: на файловой базе обработка проверяет ссылки по всей базе для каждого объекта. Сотни тысяч документов могут удаляться часами — это нормально, прерывать процесс не нужно.
Очистка через внешнюю обработку и SQL
Когда документов слишком много, их удаляют программно — без проверки ссылок. Консоль запросов здесь не поможет: язык запросов 1С умеет только читать данные. Удалять можно кодом встроенного языка или средствами СУБД.
Внешняя обработка с прямым удалением
Создайте в Конфигураторе внешнюю обработку (Файл → Новый → Внешняя обработка), добавьте форму, на форму — команду, и в модуле формы напишите:
&НаКлиенте
Процедура УдалитьВсеДокументы(Команда)
УдалитьВсеДокументыНаСервере();
Сообщить("Готово");
КонецПроцедуры
&НаСервере
Процедура УдалитьВсеДокументыНаСервере()
Для Каждого МетаДокумент Из Метаданные.Документы Цикл
Выборка = Документы[МетаДокумент.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина;
Объект.Удалить();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Как это работает:
ОбменДанными.Загрузка = Истинаотключает обработчики модуля объекта и подписки. Без этого удаление может упасть на проверках конфигурации.Удалить()удаляет объект сразу, без пометки и без проверки ссылок. Движения документа в подчинённых регистрах платформа удаляет вместе с ним.- Удаление идёт по всем видам документов. Чтобы удалить только часть, замените цикл по
Метаданные.Документына список нужных имён.
Независимые регистры сведений (курсы валют, цены, настройки) документам не подчинены и после удаления документов остаются. Очистить такой регистр целиком можно пустым набором записей:
Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать(); // без отбора — заменяет все записи регистра пустым набором
Набор записей без отбора, записанный в регистр, стирает его полностью. Имя регистра проверьте в дереве конфигурации — в каждой конфигурации оно своё.
Справочники так удалять не советуем. На них ссылаются документы, регистры и другие справочники. Удалённый без проверки контрагент превратится в документах в <Объект не найден>.
Очистка таблиц в СУБД
Для клиент-серверной базы на MS SQL или PostgreSQL можно очистить таблицы напрямую. Документы лежат в таблицах _Document…, их табличные части — в _Document…_VT…, регистры накопления — в _AccumRg…, итоги — в _AccumRgT…. Соответствие имён таблиц объектам конфигурации возвращает метод ПолучитьСтруктуруХраненияБазыДанных().
Этот способ разработчики платформы не поддерживают. Практические правила, если всё же решились:
- Остановите доступ к базе: заблокируйте начало сеансов в консоли кластера и дождитесь, пока пользователи выйдут. Активные сеансы будут прерваны, поэтому работы делают вне рабочего времени.
- Сделайте резервную копию средствами СУБД в дополнение к
.dt. - Очищайте таблицы документа, всех его табличных частей и всех регистров, где он регистратор, — одной группой. Частичная очистка гарантирует рассогласование.
- После очистки обязательно выполните проверку и пересчёт итогов (следующий раздел).
Радикальный способ: новая пустая база из файла конфигурации
Этот путь даёт пустую базу без хвостов: ни удалённых записей, ни разросшегося файла, ни битых ссылок. Его выбирают для полной очистки чаще всего.
Создайте базу с той же конфигурацией
- В рабочей базе откройте Конфигуратор →
Конфигурация → Сохранить конфигурацию в файл. Получите файл.cfсо всеми доработками. - В окне запуска 1С нажмите
Добавить→Создание новой информационной базы→Создание информационной базы без конфигурации. - Откройте новую базу в Конфигураторе →
Конфигурация → Загрузить конфигурацию из файла→ выберите сохранённый.cf. - Подтвердите обновление конфигурации базы данных.
- Запустите базу в режиме 1С:Предприятие. Конфигурация выполнит первоначальное заполнение: создаст предопределённые элементы, план счетов, классификаторы.
Если база типовая без изменений, проще взять шаблон из каталога шаблонов: Создание информационной базы из шаблона → выберите конфигурацию и релиз, совпадающий с рабочей базой.
Не путайте с «Выгрузить/Загрузить информационную базу». Файл .dt переносит все данные целиком — загрузка .dt в новую базу даст точную копию старой, а не пустую базу.
Перенесите справочники, которые нужно сохранить
Для переноса справочников между базами с одинаковой конфигурацией используют внешнюю обработку «Выгрузка и загрузка данных XML». Её берут в комплекте поставки конфигурации или на портале поддержки 1С.
- В старой базе откройте обработку через
Файл → Открыть. - Отметьте справочники: контрагенты, номенклатура, физлица, сотрудники, банковские счета.
- Выгрузите в файл
.xml. - В новой базе откройте ту же обработку и загрузите файл.
Связанные объекты выгружаются вместе с выбранными: у контрагента — договоры и банковские счета, если они отмечены или на них есть ссылки. Остатки на дату начала работы вводят заново через помощник ввода остатков.
Пользователи в новую базу не переносятся. Создайте их в Администрирование → Настройки пользователей и прав → Пользователи или в Конфигураторе (Администрирование → Пользователи).
После очистки: проверка целостности и сжатие базы 1С
Любой способ, кроме новой базы, оставляет следы. Их убирает «Тестирование и исправление информационной базы».
Проверка и исправление
- Пользователи выходят из базы — проверка требует монопольного доступа.
- Конфигуратор →
Администрирование → Тестирование и исправление. - Отметьте:
- «Проверка логической целостности информационной базы»;
- «Проверка ссылочной целостности информационной базы»;
- «Пересчёт итогов»;
- «Сжатие таблиц информационной базы».
- Выберите режим «Тестирование и исправление».
- Для ссылок на несуществующие объекты выберите «Удалять ссылки» — если уверены, что эти объекты не нужны. Вариант «Создавать объекты» вернёт пустые заглушки, которые потом придётся разбирать вручную.
Почему файл базы не уменьшился
В файловой базе удалённые записи освобождают место внутри 1Cv8.1CD, но размер файла на диске сам не меняется. Уменьшает его только сжатие таблиц. Если база была 4 ГБ и из неё удалили документы за пять лет, после сжатия файл может уменьшиться в разы. Без сжатия он останется 4 ГБ.
Для клиент-серверной базы освобождение места выполняют средствами СУБД: сжатие базы в MS SQL, VACUUM в PostgreSQL.
Частые сбои при очистке и как их устранить
Если ни один способ не дал чистого результата, вернитесь к копии и создайте новую базу из .cf. Перенос справочников через XML почти всегда быстрее, чем разбор тысяч битых ссылок.
Частые вопросы
Удалятся ли пользователи и их настройки при удалении документов?
.cf.