Пустая база с сохранённой конфигурацией: четыре способа очистить 1С и чем каждый рискует

· 10 мин

Содержание

Самый чистый способ почистить 1С от всех данных — не удалять ничего, а создать новую пустую базу на той же конфигурации. В Конфигураторе сохраните конфигурацию в файл (Конфигурация → Сохранить конфигурацию в файл), создайте новую информационную базу без конфигурации и загрузите в неё этот .cf. Все доработки останутся, а документов, справочников и движений не будет вовсе. Если нужно сохранить справочники, их переносят в новую базу выгрузкой в XML.

Удалять данные внутри рабочей базы приходится, когда пустая база не подходит: нужно оставить пользователей, настройки, контрагентов и номенклатуру, а убрать только документы. Тогда выбирают между штатным удалением помеченных объектов (медленно, но безопасно), внешней обработкой с прямым удалением (быстро, нужен опыт) и SQL (последнее средство только для клиент-серверной базы). Способы ниже — от безопасного к радикальному.

СпособКогда выбиратьЧто остаётсяРиски
Новая база из .cfНужна полностью пустая базаТолько конфигурацияМинимальные; пользователи и настройки не переносятся
Удаление помеченных объектовУбрать документы, оставить справочникиВсё, что не помеченоДолго на большой базе, мешают ссылки
Внешняя обработка с Удалить()Десятки тысяч документов, нужен результат за часЧто не попало в кодБитые ссылки, если удалить лишнее
SQL TRUNCATE / DELETEКлиент-серверная база, остальное не справилосьЧто не тронуто в СУБДНарушение целостности, потеря данных без возврата

Подготовка базы 1С к полной очистке

Перед любой очисткой сделайте выгрузку информационной базы в .dt и проверьте, что файл открывается. Удалённые данные 1С не хранит в «корзине», вернуть их можно только из копии.

Порядок подготовки:

  1. 💾 Выгрузите базу: Конфигуратор → Администрирование → Выгрузить информационную базу. Для выгрузки и последующих операций пользователи должны выйти из базы.
  2. 📁 Для файловой базы дополнительно скопируйте каталог с файлом 1Cv8.1CD целиком — это самая быстрая страховка.
  3. 🧪 Работайте на копии. Загрузите .dt в новую базу, отработайте очистку на ней, и только потом повторяйте на рабочей. Либо очищенная копия просто становится новой рабочей базой.
  4. 📋 Решите заранее, что оставить: справочники (контрагенты, номенклатура, сотрудники), константы, учётную политику, пользователей, начальные остатки.
  5. 🔌 Отключите обмены и регламентные задания на копии. Иначе копия начнёт отправлять данные в рабочие узлы или выгружать документы в ЭДО.

Копия рабочей базы считает себя рабочей. Если в ней настроены обмены с другими базами или банком, первая же синхронизация может удалить данные и у партнёра по обмену. При запуске копии платформа обычно спрашивает, является ли база копией, — отвечайте, что это копия.

Ещё одно решение до старта — нужна ли пустая база с нуля или база «без документов». От этого зависит способ.

Что нужно получить после очистки?

Обработки вроде 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. Включите режим «Все функции»

  1. Откройте меню (значок с тремя полосками или шестерёнкой в заголовке окна) → Сервис и настройки → Параметры.
  2. Поставьте флажок Отображать команду "Все функции".
  3. Теперь в главном меню есть пункт Все функции: в нём списки всех документов, справочников и регистров.

Шаг 2. Пометьте документы на удаление

  1. Все функции → Документы → откройте вид документа, например «Реализация (акты, накладные, УПД)».
  2. Выделите все строки сочетанием Ctrl+A.
  3. Нажмите Del — платформа спросит, пометить ли выделенные объекты на удаление. Подтвердите.
  4. Повторите для каждого вида документа, который нужно убрать.

Проведённые документы при пометке распроводятся: движения по регистрам удаляются сразу. Поэтому пометка 20 тысяч проведённых документов занимает заметное время.

Начинайте с документов-«потомков»: реализаций, оплат, счетов-фактур. Затем помечайте документы-основания — заказы, поступления. Так меньше ссылок останется, и удаление пройдёт с первого раза.

Шаг 3. Удалите помеченные объекты

  1. В БП 3.0: Администрирование → Обслуживание, в группе «Корректировка данных» → Удаление помеченных объектов.
  2. Выберите режим удаления всех помеченных объектов и запустите.
  3. После завершения обработка покажет список объектов, которые удалить не удалось, и ссылки, которые этому мешают.

Если не удалились объекты, на которые ссылаются другие данные, откройте мешающий объект из списка, пометьте его тоже или уберите из него ссылку, затем повторите удаление.

Скорость: на файловой базе обработка проверяет ссылки по всей базе для каждого объекта. Сотни тысяч документов могут удаляться часами — это нормально, прерывать процесс не нужно.

Очистка через внешнюю обработку и SQL

Когда документов слишком много, их удаляют программно — без проверки ссылок. Консоль запросов здесь не поможет: язык запросов 1С умеет только читать данные. Удалять можно кодом встроенного языка или средствами СУБД.

Внешняя обработка с прямым удалением

Создайте в Конфигураторе внешнюю обработку (Файл → Новый → Внешняя обработка), добавьте форму, на форму — команду, и в модуле формы напишите:

&НаКлиенте
Процедура УдалитьВсеДокументы(Команда)
	УдалитьВсеДокументыНаСервере();
	Сообщить("Готово");
КонецПроцедуры

&НаСервере
Процедура УдалитьВсеДокументыНаСервере()
	Для Каждого МетаДокумент Из Метаданные.Документы Цикл
		Выборка = Документы[МетаДокумент.Имя].Выбрать();
		Пока Выборка.Следующий() Цикл
			Объект = Выборка.ПолучитьОбъект();
			Объект.ОбменДанными.Загрузка = Истина;
			Объект.Удалить();
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

Как это работает:

  • ОбменДанными.Загрузка = Истина отключает обработчики модуля объекта и подписки. Без этого удаление может упасть на проверках конфигурации.
  • Удалить() удаляет объект сразу, без пометки и без проверки ссылок. Движения документа в подчинённых регистрах платформа удаляет вместе с ним.
  • Удаление идёт по всем видам документов. Чтобы удалить только часть, замените цикл по Метаданные.Документы на список нужных имён.

Независимые регистры сведений (курсы валют, цены, настройки) документам не подчинены и после удаления документов остаются. Очистить такой регистр целиком можно пустым набором записей:

Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать(); // без отбора — заменяет все записи регистра пустым набором

Набор записей без отбора, записанный в регистр, стирает его полностью. Имя регистра проверьте в дереве конфигурации — в каждой конфигурации оно своё.

Справочники так удалять не советуем. На них ссылаются документы, регистры и другие справочники. Удалённый без проверки контрагент превратится в документах в <Объект не найден>.

Очистка таблиц в СУБД

Для клиент-серверной базы на MS SQL или PostgreSQL можно очистить таблицы напрямую. Документы лежат в таблицах _Document…, их табличные части — в _Document…_VT…, регистры накопления — в _AccumRg…, итоги — в _AccumRgT…. Соответствие имён таблиц объектам конфигурации возвращает метод ПолучитьСтруктуруХраненияБазыДанных().

Этот способ разработчики платформы не поддерживают. Практические правила, если всё же решились:

  1. Остановите доступ к базе: заблокируйте начало сеансов в консоли кластера и дождитесь, пока пользователи выйдут. Активные сеансы будут прерваны, поэтому работы делают вне рабочего времени.
  2. Сделайте резервную копию средствами СУБД в дополнение к .dt.
  3. Очищайте таблицы документа, всех его табличных частей и всех регистров, где он регистратор, — одной группой. Частичная очистка гарантирует рассогласование.
  4. После очистки обязательно выполните проверку и пересчёт итогов (следующий раздел).

Радикальный способ: новая пустая база из файла конфигурации

Этот путь даёт пустую базу без хвостов: ни удалённых записей, ни разросшегося файла, ни битых ссылок. Его выбирают для полной очистки чаще всего.

Создайте базу с той же конфигурацией

  1. В рабочей базе откройте Конфигуратор → Конфигурация → Сохранить конфигурацию в файл. Получите файл .cf со всеми доработками.
  2. В окне запуска 1С нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  3. Откройте новую базу в Конфигураторе → Конфигурация → Загрузить конфигурацию из файла → выберите сохранённый .cf.
  4. Подтвердите обновление конфигурации базы данных.
  5. Запустите базу в режиме 1С:Предприятие. Конфигурация выполнит первоначальное заполнение: создаст предопределённые элементы, план счетов, классификаторы.

Если база типовая без изменений, проще взять шаблон из каталога шаблонов: Создание информационной базы из шаблона → выберите конфигурацию и релиз, совпадающий с рабочей базой.

Не путайте с «Выгрузить/Загрузить информационную базу». Файл .dt переносит все данные целиком — загрузка .dt в новую базу даст точную копию старой, а не пустую базу.

Перенесите справочники, которые нужно сохранить

Для переноса справочников между базами с одинаковой конфигурацией используют внешнюю обработку «Выгрузка и загрузка данных XML». Её берут в комплекте поставки конфигурации или на портале поддержки 1С.

  1. В старой базе откройте обработку через Файл → Открыть.
  2. Отметьте справочники: контрагенты, номенклатура, физлица, сотрудники, банковские счета.
  3. Выгрузите в файл .xml.
  4. В новой базе откройте ту же обработку и загрузите файл.

Связанные объекты выгружаются вместе с выбранными: у контрагента — договоры и банковские счета, если они отмечены или на них есть ссылки. Остатки на дату начала работы вводят заново через помощник ввода остатков.

Пользователи в новую базу не переносятся. Создайте их в Администрирование → Настройки пользователей и прав → Пользователи или в Конфигураторе (Администрирование → Пользователи).

После очистки: проверка целостности и сжатие базы 1С

Любой способ, кроме новой базы, оставляет следы. Их убирает «Тестирование и исправление информационной базы».

Проверка и исправление

  1. Пользователи выходят из базы — проверка требует монопольного доступа.
  2. Конфигуратор → Администрирование → Тестирование и исправление.
  3. Отметьте:
    • «Проверка логической целостности информационной базы»;
    • «Проверка ссылочной целостности информационной базы»;
    • «Пересчёт итогов»;
    • «Сжатие таблиц информационной базы».
  4. Выберите режим «Тестирование и исправление».
  5. Для ссылок на несуществующие объекты выберите «Удалять ссылки» — если уверены, что эти объекты не нужны. Вариант «Создавать объекты» вернёт пустые заглушки, которые потом придётся разбирать вручную.

Почему файл базы не уменьшился

В файловой базе удалённые записи освобождают место внутри 1Cv8.1CD, но размер файла на диске сам не меняется. Уменьшает его только сжатие таблиц. Если база была 4 ГБ и из неё удалили документы за пять лет, после сжатия файл может уменьшиться в разы. Без сжатия он останется 4 ГБ.

Для клиент-серверной базы освобождение места выполняют средствами СУБД: сжатие базы в MS SQL, VACUUM в PostgreSQL.

Частые сбои при очистке и как их устранить

Диагностика: выберите симптом

Если ни один способ не дал чистого результата, вернитесь к копии и создайте новую базу из .cf. Перенос справочников через XML почти всегда быстрее, чем разбор тысяч битых ссылок.

Частые вопросы

Удалятся ли пользователи и их настройки при удалении документов?
Нет. Пользователи хранятся отдельно от данных конфигурации, документы на них не влияют. Пользователи пропадают только при создании новой базы из .cf.
Можно ли очистить базу 1С в облаке 1С:Фреш?
Прямого доступа к Конфигуратору в облачном сервисе нет. Доступно штатное удаление помеченных объектов в самой программе. Для пустой базы проще создать новое приложение в сервисе.
Сохранится ли нумерация документов после очистки?
Нумерация начнётся заново с учётом оставшихся документов в периоде. Если все документы года удалены, первый новый получит номер 1 с префиксом организации.
Нужна ли отдельная лицензия на новую пустую базу?
Нет. Лицензии 1С выдаются на рабочие места или сеансы, а не на количество информационных баз. Новая база на том же компьютере работает с теми же лицензиями.
Чем очистка отличается от свёртки базы?
Очистка убирает все данные. Свёртка удаляет документы за прошлые периоды и сохраняет остатки на дату свёртки, чтобы учёт продолжался без разрыва.