Пустая база с той же конфигурацией: удаляем документы, справочники и движения в 1С 8.3

· 10 мин

Содержание

Быстрее и чище всего очистить базу 1С 8.3 от всех данных так: сохранить её конфигурацию в файл .cf и загрузить этот файл в новую пустую базу. Документы, справочники, движения регистров и журнал регистрации остаются в старой базе, а в новой — та же конфигурация с доработками, но без единой записи.

Если пустая база нужна именно на месте старой (с теми же пользователями, константами и настройками), данные удаляют обработкой. Прямая очистка таблиц через SQL — третий, самый рискованный вариант, только для клиент-серверных баз и только с полной копией.

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

Подготовка: что сохранить, прежде чем очищать базу 1С

Сделайте полную выгрузку базы в .dt до любого удаления. Отменить удаление нельзя: корзины в 1С нет, а пометка на удаление и само удаление — разные операции.

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

  1. Попросите пользователей выйти и запретите вход на время работ. В клиент-серверной базе это делают в свойствах информационной базы в консоли кластера: флаг блокировки начала сеансов и сообщение для пользователей.
  2. Откройте Конфигуратор и выполните Администрирование → Выгрузить информационную базу. Файл .dt положите на другой диск.
  3. Выполните Конфигурация → Сохранить конфигурацию в файл. Этот .cf понадобится для первого способа и пригодится как страховка для остальных.
  4. Сохраните расширения. Откройте Конфигурация → Расширения конфигурации и выгрузите каждое расширение в файл .cfe. Расширения не входят в основной .cf.
  5. Отключите обмены. Если база участвует в синхронизации с другой программой или в распределённой базе, остановите обмен до очистки, иначе пустая база может отправить «удаления» во все узлы.

Что ещё выписать до очистки:

  • 🔑 логины и роли пользователей, если база будет новой;
  • ⚙️ значения учётной политики и параметры учёта;
  • 🏢 реквизиты организаций, банковские счета, ответственных лиц;
  • 🔗 адреса веб-сервисов, пути обмена, настройки регламентных заданий;
  • 🧩 подключённые внешние отчёты и обработки — их тоже придётся вернуть.

Способ 1. Новая база из файла конфигурации через Конфигуратор

Этот способ даёт гарантированно пустую базу. Ничего не удаляется по одной записи, поэтому не возникает «висящих» ссылок и остатков в регистрах.

Создание пустой базы

  1. В окне запуска 1С нажмите Добавить и выберите создание новой информационной базы.
  2. Отметьте вариант создания базы без конфигурации — шаблоны конфигураций здесь не нужны.
  3. Укажите имя и расположение: каталог на диске для файловой базы или сервер 1С и параметры СУБД для клиент-серверной.
  4. Откройте новую базу в Конфигураторе.

Загрузка конфигурации

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

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

Если конфигурация на поддержке, выгруженный .cf переносит и настройки поддержки. Дальнейшие обновления типовых релизов в новой базе ставятся так же, как в старой.

Ограничения способа

  • 👥 Пользователей информационной базы нет — создайте их заново. В типовых конфигурациях это делается в пользовательском режиме, в разделе Администрирование → Настройки пользователей и прав.
  • 📇 Справочники пусты полностью, включая организации, склады и номенклатуру.
  • 🗂 Пользовательские настройки форм и отчётов не переносятся.

Если хочется сохранить нормативно-справочную информацию, заранее выгрузите нужные справочники универсальным обменом в формате XML и загрузите их в новую базу после первого запуска.

Способ 2. Очистить базу от всех данных обработкой

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

Ручной вариант для маленькой базы

Для учебной или тестовой базы с несколькими сотнями документов хватит штатных средств:

  1. Откройте журнал документов , выделите все строки Ctrl+A и пометьте их на удаление клавишей Del.
  2. Так же пометьте элементы справочников, кроме предопределённых — они выделены отдельным значком и не удаляются.
  3. Запустите удаление помеченных объектов. В БП 3.0 оно находится в разделе Администрирование → Обслуживание, группа «Корректировка данных».

Программа сначала проверит ссылки и удалит только то, на что никто не ссылается. Поэтому документы удаляют раньше справочников, а запуск иногда приходится повторять 2–3 раза.

Внешняя обработка для полной очистки

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

&НаСервереБезКонтекста
Процедура ОчиститьДанныеНаСервере()

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

	// 2. Независимые регистры сведений: пустой набор без отбора стирает все записи
	Для Каждого МетаРег Из Метаданные.РегистрыСведений Цикл
		Если МетаРег.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
			Набор = РегистрыСведений[МетаРег.Имя].СоздатьНаборЗаписей();
			Набор.ОбменДанными.Загрузка = Истина;
			Набор.Записать(Истина);
		КонецЕсли;
	КонецЦикла;

	// 3. Справочники, кроме исключений и предопределённых элементов
	Исключения = СтрРазделить("Пользователи,ГруппыПользователей", ",");
	Для Каждого МетаСпр Из Метаданные.Справочники Цикл
		Если Исключения.Найти(МетаСпр.Имя) <> Неопределено Тогда
			Продолжить;
		КонецЕсли;
		Запрос = Новый Запрос("ВЫБРАТЬ Т.Ссылка КАК Ссылка ИЗ Справочник." + МетаСпр.Имя + " КАК Т
		|ГДЕ НЕ Т.Предопределенный");
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			Объект = Выборка.Ссылка.ПолучитьОбъект();
			Если Объект = Неопределено Тогда
				Продолжить; // уже удалён вместе с родителем или владельцем
			КонецЕсли;
			Объект.ОбменДанными.Загрузка = Истина;
			Объект.Удалить();
		КонецЦикла;
	КонецЦикла;

КонецПроцедуры

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

  • 📄 Документы идут первыми. Движения по регистрам накопления, бухгалтерии и расчёта подчинены регистратору и удаляются вместе с документом.
  • 🗃 Независимые регистры сведений очищаются записью пустого набора с замещением. Подчинённые регистратору уже ушли на первом шаге.
  • 📚 Справочники выбираются запросом без предопределённых элементов: их платформа удалить не даст.
  • 🛡 ОбменДанными.Загрузка = Истина отключает обработчики конфигурации при удалении. Без этого типовые подписки на события будут проверять и регистрировать каждое изменение, и работа затянется в разы.

Список Исключения дополните тем, что должно остаться: например, Организации или ВидыКонтактнойИнформации. По тому же образцу добавьте циклы для бизнес-процессов, задач и узлов планов обмена, если они есть в конфигурации.

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

Какой способ очистки выбрать?

Способ 3. Удаление данных из таблиц через SQL

В клиент-серверной базе таблицы лежат в MS SQL Server или PostgreSQL. Их можно очистить командой TRUNCATE за минуты, а не за сутки. Фирма 1С такой путь не поддерживает: платформа ничего не знает о том, что данные исчезли в обход неё.

Как узнать имена таблиц

Имена в СУБД обезличены: _Document123, _AccumRg456, _InfoRg789. Соответствие объектам конфигурации покажет функция платформы. Запустите её в толстом клиенте или в серверной процедуре:

Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
	Если СтрНачинаетсяС(Строка.Метаданные, "Документ.") Тогда
		Сообщить(Строка.Метаданные + " — " + Строка.ИмяТаблицыХранения);
	КонецЕсли;
КонецЦикла;

Второй параметр Истина возвращает имена таблиц так, как они называются в СУБД. Так же отберите строки регистров и справочников. Помните про табличные части: у каждой своя таблица, и её тоже нужно очистить.

Очистка таблиц

-- MS SQL Server. Пользователи отключены, есть свежая полная копия базы СУБД
TRUNCATE TABLE dbo._Document123;
TRUNCATE TABLE dbo._Document123_VT456;
TRUNCATE TABLE dbo._AccumRg456;
TRUNCATE TABLE dbo._AccumRgT470;

Имена в примере условные — подставьте свои из структуры хранения. В PostgreSQL имена таблиц в нижнем регистре: _document123.

Справочники через SQL лучше не трогать. В их таблицах лежат предопределённые элементы, на которые ссылаются план счетов и настройки. Удалите их — база запустится с ошибками, которые придётся чинить вручную.

После SQL-очистки обязательно запустите тестирование и исправление (о нём ниже). Работы ведите в нерабочее время: перед началом сеансы пользователей нужно завершить, и они оборвутся без сохранения.

Файловая и клиент-серверная база: в чём разница при очистке

Методы одни и те же, отличаются детали.

Файловая базаКлиент-серверная база
Где лежат данныеОдин файл 1Cv8.1CD в каталоге базыТаблицы в СУБД на сервере
Создать пустую базуНовый каталог в окне запускаОкно запуска или консоль кластера, нужны права на СУБД
Размер после удаленияФайл не уменьшается самФайлы базы СУБД не уменьшаются сами
Как вернуть местоСжатие таблиц при тестировании или выгрузка-загрузка .dtDBCC SHRINKDATABASE в MS SQL, VACUUM FULL в PostgreSQL
SQL-очисткаНевозможнаВозможна, с оговорками выше

Что учесть в клиент-серверной базе:

  • ⏸ Включите блокировку регламентных заданий в свойствах базы в консоли кластера. Иначе задания загрузки курсов, классификаторов и обменов начнут заполнять базу во время очистки.
  • 📈 Следите за журналом транзакций MS SQL. Массовое удаление обработкой раздувает его на десятки гигабайт. На время работ можно перевести базу в простую модель восстановления, а после — вернуть полную и сделать новую копию.
  • 🔒 VACUUM FULL и сжатие в MS SQL блокируют таблицы. Запускайте их, когда в базе нет пользователей.

В файловой базе после обработки размер 1Cv8.1CD останется прежним. Освободить место проще всего выгрузкой в .dt и загрузкой обратно в новый каталог: файл получится компактным.

Что сделать после очистки базы 1С 8.3

Пустая база должна пройти проверку, прежде чем в неё начнут вносить данные.

Тестирование и исправление

В Конфигураторе откройте Администрирование → Тестирование и исправление и отметьте:

  • ✅ реиндексацию таблиц информационной базы;
  • ✅ проверку логической и ссылочной целостности;
  • ✅ пересчёт итогов;
  • ✅ сжатие таблиц информационной базы.

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

Проверка в пользовательском режиме

  1. Откройте план счетов и убедитесь, что предопределённые счета на месте.
  2. Сформируйте оборотно-сальдовую ведомость за любой период — она должна быть пустой.
  3. Проверьте карточку организации и учётную политику. Если их удалили, введите заново.
  4. Создайте и проведите один тестовый документ, затем удалите его.

Порядок и нумерация

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

Журнал регистрации платформа хранит отдельно от данных, и он помнит старые события. Сократите его в Конфигураторе через Администрирование → Журнал регистрации, если история не нужна.

Пустая база готова к работе
Выполнено: 0 / 7

Частые ошибки и как их избежать

  • ❌ Удаляют справочники раньше документов. Удаление помеченных объектов отказывается удалять элементы, на которые ссылаются документы. Порядок всегда такой: документы, потом регистры, потом справочники.
  • ❌ Не отключают обработчики событий. Без ОбменДанными.Загрузка = Истина каждая запись регистрируется для обменов и проверяется подписками. Удаление 100 000 документов вместо часа идёт сутки.
  • ❌ Очищают узел распределённой базы. Изменения уйдут в главный узел, и данные пропадут во всех узлах. Перед очисткой отключите синхронизацию или работайте с новой базой из .cf.
  • ❌ Забывают про расширения. Новая база из .cf открывается без доработок из расширений, и часть отчётов и печатных форм исчезает.
  • ❌ Считают, что место на диске освободится само. Ни файл 1Cv8.1CD, ни база СУБД не уменьшаются без сжатия.

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

Можно ли очистить базу 1С 8.3, но оставить справочники?
Да. Используйте обработку и удаляйте только документы и независимые регистры сведений, пропустив цикл по справочникам. Движения уйдут вместе с документами.
Сохранятся ли пользователи при создании новой базы из .cf?
Нет. Список пользователей хранится в данных базы, а не в конфигурации. Создайте их заново или оставьте старую базу и очистите её обработкой.
Почему после очистки в базе остались счета и элементы справочников?
Это предопределённые данные. Они описаны в конфигурации, и платформа не удаляет их. Без них план счетов и часть механизмов учёта перестанут работать.
Сколько идёт очистка большой базы обработкой?
Зависит от числа документов и мощности сервера. Ориентир — от нескольких часов до суток на базу в миллионы документов. Если это неприемлемо, создайте новую базу из .cf.
Можно ли отменить очистку?
Только загрузкой выгрузки .dt или восстановлением резервной копии СУБД, сделанной до удаления. Другого способа вернуть данные нет.