Пустая база с той же конфигурацией: удаляем документы, справочники и движения в 1С 8.3
Содержание
Быстрее и чище всего очистить базу 1С 8.3 от всех данных так: сохранить её конфигурацию в файл .cf и загрузить этот файл в новую пустую базу. Документы, справочники, движения регистров и журнал регистрации остаются в старой базе, а в новой — та же конфигурация с доработками, но без единой записи.
Если пустая база нужна именно на месте старой (с теми же пользователями, константами и настройками), данные удаляют обработкой. Прямая очистка таблиц через SQL — третий, самый рискованный вариант, только для клиент-серверных баз и только с полной копией.
| Способ | Когда подходит | Что остаётся | Риски |
|---|---|---|---|
Новая база из .cf | Нужна пустая копия конфигурации | Только конфигурация и предопределённые данные | Пользователей и настройки создают заново |
| Обработка удаления | Пустая база на месте старой | Пользователи, константы, нужные справочники | Долго на больших базах, ошибки в коде |
SQL TRUNCATE | Клиент-сервер, десятки гигабайт | Всё, что не тронули | Битые ссылки, способ не поддерживается фирмой 1С |
Подготовка: что сохранить, прежде чем очищать базу 1С
Сделайте полную выгрузку базы в .dt до любого удаления. Отменить удаление нельзя: корзины в 1С нет, а пометка на удаление и само удаление — разные операции.
Порядок подготовки:
- Попросите пользователей выйти и запретите вход на время работ. В клиент-серверной базе это делают в свойствах информационной базы в консоли кластера: флаг блокировки начала сеансов и сообщение для пользователей.
- Откройте Конфигуратор и выполните
Администрирование → Выгрузить информационную базу. Файл.dtположите на другой диск. - Выполните
Конфигурация → Сохранить конфигурацию в файл. Этот.cfпонадобится для первого способа и пригодится как страховка для остальных. - Сохраните расширения. Откройте
Конфигурация → Расширения конфигурациии выгрузите каждое расширение в файл.cfe. Расширения не входят в основной.cf. - Отключите обмены. Если база участвует в синхронизации с другой программой или в распределённой базе, остановите обмен до очистки, иначе пустая база может отправить «удаления» во все узлы.
Что ещё выписать до очистки:
- 🔑 логины и роли пользователей, если база будет новой;
- ⚙️ значения учётной политики и параметры учёта;
- 🏢 реквизиты организаций, банковские счета, ответственных лиц;
- 🔗 адреса веб-сервисов, пути обмена, настройки регламентных заданий;
- 🧩 подключённые внешние отчёты и обработки — их тоже придётся вернуть.
Способ 1. Новая база из файла конфигурации через Конфигуратор
Этот способ даёт гарантированно пустую базу. Ничего не удаляется по одной записи, поэтому не возникает «висящих» ссылок и остатков в регистрах.
Создание пустой базы
- В окне запуска 1С нажмите
Добавитьи выберите создание новой информационной базы. - Отметьте вариант создания базы без конфигурации — шаблоны конфигураций здесь не нужны.
- Укажите имя и расположение: каталог на диске для файловой базы или сервер 1С и параметры СУБД для клиент-серверной.
- Откройте новую базу в Конфигураторе.
Загрузка конфигурации
- Выполните
Конфигурация → Загрузить конфигурацию из файлаи укажите сохранённый.cf. - Согласитесь на обновление конфигурации базы данных. Платформа создаст таблицы под все объекты.
- Загрузите расширения из файлов
.cfeв окне расширений конфигурации. - Запустите базу в режиме 1С:Предприятие.
При первом запуске типовая конфигурация на БСП заполнит предопределённые данные: план счетов , виды субконто, классификаторы, начальные настройки. Мастер начального заполнения попросит данные организации — это нормально для пустой базы.
Если конфигурация на поддержке, выгруженный .cf переносит и настройки поддержки. Дальнейшие обновления типовых релизов в новой базе ставятся так же, как в старой.
Ограничения способа
- 👥 Пользователей информационной базы нет — создайте их заново. В типовых конфигурациях это делается в пользовательском режиме, в разделе
Администрирование → Настройки пользователей и прав. - 📇 Справочники пусты полностью, включая организации, склады и номенклатуру.
- 🗂 Пользовательские настройки форм и отчётов не переносятся.
Если хочется сохранить нормативно-справочную информацию, заранее выгрузите нужные справочники универсальным обменом в формате XML и загрузите их в новую базу после первого запуска.
Способ 2. Очистить базу от всех данных обработкой
Когда пользователи, права и константы должны остаться на месте, данные удаляют программно. Пометка на удаление тут не помогает: она лишь ставит флаг, а реальное удаление идёт через проверку ссылок и на базе в сотни тысяч документов длится сутками.
Ручной вариант для маленькой базы
Для учебной или тестовой базы с несколькими сотнями документов хватит штатных средств:
- Откройте журнал документов
, выделите все строки
Ctrl+Aи пометьте их на удаление клавишейDel. - Так же пометьте элементы справочников, кроме предопределённых — они выделены отдельным значком и не удаляются.
- Запустите удаление помеченных объектов. В БП 3.0 оно находится в разделе
Администрирование → Обслуживание, группа «Корректировка данных».
Программа сначала проверит ссылки и удалит только то, на что никто не ссылается. Поэтому документы удаляют раньше справочников, а запуск иногда приходится повторять 2–3 раза.
Внешняя обработка для полной очистки
Для рабочей базы удобнее внешняя обработка. Создайте её в Конфигураторе (Файл → Новый → Внешняя обработка), добавьте форму, команду и такой серверный код:
&НаСервереБезКонтекста
Процедура ОчиститьДанныеНаСервере()
// 1. Документы. Вместе с документом платформа удаляет его движения
Для Каждого МетаДок Из Метаданные.Документы Цикл
Выборка = Документы[МетаДок.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина;
Объект.Удалить();
КонецЦикла;
КонецЦикла;
// 2. Независимые регистры сведений: пустой набор без отбора стирает все записи
Для Каждого МетаРег Из Метаданные.РегистрыСведений Цикл
Если МетаРег.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда
Набор = РегистрыСведений[МетаРег.Имя].СоздатьНаборЗаписей();
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать(Истина);
КонецЕсли;
КонецЦикла;
// 3. Справочники, кроме исключений и предопределённых элементов
Исключения = СтрРазделить("Пользователи,ГруппыПользователей", ",");
Для Каждого МетаСпр Из Метаданные.Справочники Цикл
Если Исключения.Найти(МетаСпр.Имя) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос("ВЫБРАТЬ Т.Ссылка КАК Ссылка ИЗ Справочник." + МетаСпр.Имя + " КАК Т
|ГДЕ НЕ Т.Предопределенный");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда
Продолжить; // уже удалён вместе с родителем или владельцем
КонецЕсли;
Объект.ОбменДанными.Загрузка = Истина;
Объект.Удалить();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Как работает этот код:
- 📄 Документы идут первыми. Движения по регистрам накопления, бухгалтерии и расчёта подчинены регистратору и удаляются вместе с документом.
- 🗃 Независимые регистры сведений очищаются записью пустого набора с замещением. Подчинённые регистратору уже ушли на первом шаге.
- 📚 Справочники выбираются запросом без предопределённых элементов: их платформа удалить не даст.
- 🛡
ОбменДанными.Загрузка = Истинаотключает обработчики конфигурации при удалении. Без этого типовые подписки на события будут проверять и регистрировать каждое изменение, и работа затянется в разы.
Список Исключения дополните тем, что должно остаться: например, Организации или ВидыКонтактнойИнформации. По тому же образцу добавьте циклы для бизнес-процессов, задач и узлов планов обмена, если они есть в конфигурации.
Обработку запускает пользователь с полными правами. Типовые конфигурации при открытии внешнего файла показывают предупреждение безопасности — открывайте только свою, проверенную обработку.
.cf и создайте новую базу. Пользователей и настройки введите заново — это быстрее, чем удалять данные.Способ 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 в каталоге базы | Таблицы в СУБД на сервере |
| Создать пустую базу | Новый каталог в окне запуска | Окно запуска или консоль кластера, нужны права на СУБД |
| Размер после удаления | Файл не уменьшается сам | Файлы базы СУБД не уменьшаются сами |
| Как вернуть место | Сжатие таблиц при тестировании или выгрузка-загрузка .dt | DBCC SHRINKDATABASE в MS SQL, VACUUM FULL в PostgreSQL |
| SQL-очистка | Невозможна | Возможна, с оговорками выше |
Что учесть в клиент-серверной базе:
- ⏸ Включите блокировку регламентных заданий в свойствах базы в консоли кластера. Иначе задания загрузки курсов, классификаторов и обменов начнут заполнять базу во время очистки.
- 📈 Следите за журналом транзакций MS SQL. Массовое удаление обработкой раздувает его на десятки гигабайт. На время работ можно перевести базу в простую модель восстановления, а после — вернуть полную и сделать новую копию.
- 🔒
VACUUM FULLи сжатие в MS SQL блокируют таблицы. Запускайте их, когда в базе нет пользователей.
В файловой базе после обработки размер 1Cv8.1CD останется прежним. Освободить место проще всего выгрузкой в .dt и загрузкой обратно в новый каталог: файл получится компактным.
Что сделать после очистки базы 1С 8.3
Пустая база должна пройти проверку, прежде чем в неё начнут вносить данные.
Тестирование и исправление
В Конфигураторе откройте Администрирование → Тестирование и исправление и отметьте:
- ✅ реиндексацию таблиц информационной базы;
- ✅ проверку логической и ссылочной целостности;
- ✅ пересчёт итогов;
- ✅ сжатие таблиц информационной базы.
Для режима исправления ссылок выберите удаление ссылок на несуществующие объекты, если после частичной очистки остались хвосты. Тестирование требует монопольного доступа — пользователей в базе быть не должно.
Проверка в пользовательском режиме
- Откройте план счетов и убедитесь, что предопределённые счета на месте.
- Сформируйте оборотно-сальдовую ведомость за любой период — она должна быть пустой.
- Проверьте карточку организации и учётную политику. Если их удалили, введите заново.
- Создайте и проведите один тестовый документ, затем удалите его.
Порядок и нумерация
После удаления всех документов нумерация продолжится с первого номера в пределах периода, заданного в конфигурации. Если новые документы нужно продолжить с определённого номера, задайте его вручную в первом документе.
Журнал регистрации платформа хранит отдельно от данных, и он помнит старые события. Сократите его в Конфигураторе через Администрирование → Журнал регистрации, если история не нужна.
Частые ошибки и как их избежать
- ❌ Удаляют справочники раньше документов. Удаление помеченных объектов отказывается удалять элементы, на которые ссылаются документы. Порядок всегда такой: документы, потом регистры, потом справочники.
- ❌ Не отключают обработчики событий. Без
ОбменДанными.Загрузка = Истинакаждая запись регистрируется для обменов и проверяется подписками. Удаление 100 000 документов вместо часа идёт сутки. - ❌ Очищают узел распределённой базы. Изменения уйдут в главный узел, и данные пропадут во всех узлах. Перед очисткой отключите синхронизацию или работайте с новой базой из
.cf. - ❌ Забывают про расширения. Новая база из
.cfоткрывается без доработок из расширений, и часть отчётов и печатных форм исчезает. - ❌ Считают, что место на диске освободится само. Ни файл
1Cv8.1CD, ни база СУБД не уменьшаются без сжатия.