Очистка информационной базы 1С 8.3: от удаления лишнего до пустой базы
Содержание
Чтобы очистить базу данных 1С полностью, проще всего не удалять документы, а создать новую пустую базу с той же конфигурацией: сохранить её в файл .cf и загрузить в новую информационную базу. Если нужно убрать только лишнее, хватит штатной обработки «Удаление помеченных объектов».
Частое заблуждение — что очистка начинается с SQL и команды TRUNCATE. В 1С 8.3 так делать нельзя: таблицы итогов и служебные таблицы платформы перестанут сходиться с данными. Очистку БД в 1С Предприятии ведут средствами самой платформы, а SQL оставляют для сжатия файлов и резервных копий.
Подготовка к очистке базы 1С: копия и выбор способа
Любая очистка необратима. Удалённый документ не вернуть кнопкой «Отменить».
Сделайте резервную копию до любых действий с данными.
Как её сделать:
- Откройте базу в режиме Конфигуратор.
- Выберите
Администрирование → Выгрузить информационную базу. - Сохраните файл
.dtна другой диск или в сетевую папку. - Для файловой базы дополнительно скопируйте файл
1Cv8.1CDиз каталога базы, когда в ней никто не работает .
Выгружайте базу, когда пользователи вышли: так копия будет согласованной. Список сеансов в Конфигураторе — Администрирование → Активные пользователи.
Затем определите, что именно нужно:
| Задача | Способ | Риск |
|---|---|---|
| Убрать черновики, дубли, ошибочные документы | Удаление помеченных объектов | Низкий |
| Получить пустую базу для нового учёта или теста | Новая база из .cf или шаблона | Низкий, старая база не трогается |
| Стереть записи одного регистра | Обработка с кодом | Средний |
| Уменьшить размер базы после удаления | Сжатие таблиц, выгрузка-загрузка .dt | Низкий |
| Убрать накопленную историю | Свёртка базы, сокращение журнала регистрации | Средний |
Удаление помеченных объектов — штатный способ очистки
В 1С нет удаления «насовсем» одним нажатием Delete. Сначала объект помечают, потом обработка проверяет ссылки и удаляет то, на что никто не ссылается.
В 1С:Бухгалтерии 3.0 обработка находится в разделе Администрирование → Обслуживание, группа «Корректировка данных». В любой конфигурации её можно открыть через Все функции → Стандартные → Удаление помеченных объектов. Если пункта «Все функции» нет в меню, включите его в параметрах программы: флажок «Отображать команду “Все функции”».
Порядок работы:
- Пометьте ненужные документы и элементы справочников (клавиша
Deleteв списке ставит пометку). - Откройте обработку и выберите режим полного удаления или выборочного, если нужно удалить не всё помеченное.
- Запустите удаление и дождитесь результата.
- Посмотрите список объектов, которые удалить не удалось.
Объект не удаляется, если на него ссылается другой объект без пометки. Например, контрагент указан в непомеченном документе. Обработка покажет, кто держит ссылку: откройте этот объект, пометьте его или замените в нём ссылку.
Документы перед пометкой лучше распровести. Тогда их движения уйдут из регистров сразу, и вы увидите влияние на остатки до удаления.
Удаление сотен тысяч объектов идёт долго. Запускайте его вечером, когда пользователей нет: заблокированные чужой работой объекты обработка пропустит.
Как полностью очистить базу 1С и оставить конфигурацию
Удалять все документы и справочники по одному — путь на часы и с риском ошибок. Быстрее создать пустую базу.
Через файл конфигурации .cf
- В Конфигураторе рабочей базы выберите
Конфигурация → Сохранить конфигурацию в файл. - В окне запуска 1С нажмите «Добавить» и создайте новую информационную базу без конфигурации.
- Откройте её в Конфигураторе:
Конфигурация → Загрузить конфигурацию из файла, укажите сохранённый.cf. - Согласитесь на обновление конфигурации базы данных.
- Запустите базу в режиме «1С:Предприятие». Типовая конфигурация выполнит начальное заполнение.
Этот способ сохраняет доработки конфигурации. Данные, пользователи и настройки остаются в старой базе.
Из шаблона
Если конфигурация типовая без доработок, при добавлении базы выберите «Создание информационной базы из шаблона». В новой базе будет релиз из шаблона. Если он старее рабочего, обновите его до нужного.
Перенос справочников
Часто нужна база без документов, но с контрагентами, номенклатурой и организацией. Для типовых конфигураций есть обработка «Выгрузка и загрузка данных XML» (поставляется на диске ИТС) — она переносит выбранные справочники в новую базу.
Свёртка вместо очистки
Если база разрослась за годы и нужно убрать старые периоды, а не всё, подойдёт свёртка. В 1С:Бухгалтерии 3.0 обработку свёртки ищите через Все функции → Обработки по слову «свертка». Она удаляет документы до выбранной даты и формирует документы ввода остатков. Свёртку запускайте только на копии и сравнивайте ОСВ до и после.
Очистка регистров: консоль запросов и код
Язык запросов 1С только читает данные. Командой УДАЛИТЬ очистить регистр через консоль запросов не получится. Консоль нужна, чтобы оценить объём и найти регистраторы, а удаляет код.
Сначала посчитайте записи во внешней обработке «Консоль запросов»:
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Записей
ИЗ
РегистрНакопления.ИмяРегистра
Дальше всё зависит от типа регистра.
Независимый регистр сведений. Пустой набор записей без отбора, записанный с замещением, стирает все записи регистра:
Набор = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
Набор.Записать(Истина);
Регистр, подчинённый регистратору (все регистры накопления и бухгалтерии). Записи удаляют по каждому документу-регистратору:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрНакопления.ИмяРегистра";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыНакопления.ИмяРегистра.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать(Истина);
КонецЦикла;
Вместо ИмяРегистра подставьте имя из дерева конфигурации. Выполняйте код на сервере с правами администратора, например во внешней обработке.
Документ останется проведённым, но без движений. Отчёты и остатки разойдутся с документами. Если цель — убрать движения навсегда, честнее распровести или удалить сами документы. Код уместен для служебных и технических регистров, а также в тестовой базе.
Прямое удаление строк в таблицах SQL (_AccumRg…, _InfoRg…) не делайте. Таблицы итогов останутся со старыми цифрами, и базу придётся лечить пересчётом итогов.
Файловая и клиент-серверная база: что меняется при очистке
Методы очистки внутри 1С одинаковы. Разница — в том, как освободить место и как сделать копию.
| Действие | Файловая база | Клиент-серверная база |
|---|---|---|
| Резервная копия | Копия 1Cv8.1CD или .dt | Средства СУБД (MS SQL, PostgreSQL) или .dt |
| Освобождение места | Сжатие таблиц, выгрузка-загрузка .dt | Сжатие средствами СУБД |
| Пустая база | Новый каталог | Новая база в кластере |
| Проверка физической целостности | Утилита chdbfl.exe в каталоге bin платформы | Средства СУБД |
Файловая база. После удаления объектов файл 1Cv8.1CD не уменьшается: освободившиеся страницы остаются внутри. Размер падает после сжатия таблиц или после выгрузки в .dt и загрузки обратно. Второй способ даёт самый компактный файл.
Клиент-серверная база. Удалённые строки освобождают место внутри файлов СУБД, но файлы на диске не сжимаются сами. В MS SQL это делает администратор БД командой DBCC SHRINKDATABASE, в PostgreSQL — VACUUM FULL. Обе операции блокируют таблицы, поэтому их запускают в нерабочее время.
В консоли администрирования кластера при удалении информационной базы можно выбрать, что сделать с базой данных на сервере СУБД: оставить, удалить или очистить. Вариант «Очистить» стирает содержимое, но саму базу СУБД сохраняет. Это стирает всё без возможности отмены — только после резервной копии СУБД.
Автоматизация: пакетный режим и внешние обработки
Если очистку тестовой копии нужно повторять, например каждую неделю для разработчиков, её стоит описать скриптом.
Пакетный запуск Конфигуратора умеет выгружать и загружать базу и запускать проверку:
set V8="C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe"
set IB=/F"D:\Bases\Test"
rem Выгрузка резервной копии
%V8% DESIGNER %IB% /N"Администратор" /P"" /DumpIB "D:\Backup\test.dt" /Out "D:\Backup\dump.log"
rem Загрузка эталонной копии поверх тестовой базы
%V8% DESIGNER %IB% /N"Администратор" /P"" /RestoreIB "D:\Backup\etalon.dt" /Out "D:\Backup\restore.log"
Вместо 8.3.xx.xxxx подставьте номер установленной платформы. Для клиент-серверной базы вместо /F укажите /S"сервер\имябазы".
Для удаления данных пишут внешнюю обработку .epf с кодом из раздела про регистры или с удалением документов по фильтру. Запустить её без участия человека можно параметром /Execute в режиме ENTERPRISE:
%V8% ENTERPRISE %IB% /N"Администратор" /P"" /Execute "D:\Scripts\ochistka.epf"
Обработка должна сама завершать сеанс после работы, иначе окно 1С останется открытым.
Для регулярного удаления помеченных объектов в типовых конфигурациях есть регламентное задание. Его включают в форме обработки удаления помеченных: там можно задать расписание. Задание идёт в фоне и удаляет только то, на что нет ссылок.
Скрипт с /RestoreIB затирает базу целиком. Проверьте путь в /F или /S дважды: опечатка превратит очистку теста в очистку рабочей базы.
После очистки: проверка и восстановление работы базы
После массового удаления базу нужно привести в порядок. Иначе отчёты могут показывать старые итоги, а база — работать медленнее.
Откройте Конфигуратор в монопольном режиме и выберите Администрирование → Тестирование и исправление. Отметьте:
- 🔧 Реиндексация таблиц информационной базы;
- 🔍 Проверка логической и ссылочной целостности;
- 🔢 Пересчёт итогов;
- 📦 Сжатие таблиц информационной базы.
Пересчёт итогов обязателен, если удаляли записи регистров кодом. Сжатие нужно файловой базе, чтобы уменьшился 1Cv8.1CD.
То же можно запустить пакетно:
%V8% DESIGNER %IB% /N"Администратор" /P"" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -IBCompression /Out "D:\Backup\check.log"
Что ещё сделать:
- Сократите журнал регистрации:
Администрирование → Настройка журнала регистрациив Конфигураторе, кнопка «Сократить». Можно сохранить удаляемые записи в файл. - Очистите персональные настройки пользователей, если база готовится для других людей. В типовых конфигурациях:
Администрирование → Настройки пользователей и прав → Персональные настройки пользователей. - Запустите клиент с параметром
/ClearCache, если после загрузки.dtу пользователей открываются старые формы. - Сформируйте оборотно-сальдовую ведомость и сравните с ожиданием: пустая база — нули, свёрнутая — остатки на дату свёртки.
Ошибки, из-за которых очистка бьёт по рабочим данным
Сама обработка редко ломает базу. Проблемы приносят связи базы с внешним миром.
- 🔄 Обмены и РИБ. Копия базы с настроенным обменом или распределённой базой при следующей синхронизации может отправить удаления в другие узлы. В копии для тестов сначала отключите обмены, потом удаляйте данные.
- 🌐 Внешние ресурсы. Типовые конфигурации замечают перенос базы на другой адрес и предлагают заблокировать работу с внешними ресурсами. Если ответить «Это не копия», тестовая база начнёт работать с банком, ЭДО и почтой как рабочая.
- 🔒 Дата запрета изменения. Документы закрытых периодов не распроводятся и не удаляются. Снимите запрет на время очистки и верните его после.
- 👤 Пароль администратора. После загрузки чужой
.dtв базе будут чужие пользователи. Узнайте пароль администратора до загрузки, иначе в базу не войти.
Частые вопросы об очистке БД 1С
Можно ли восстановить объект после удаления помеченных?
Почему после удаления документов база не стала меньше?
1Cv8.1CD не сжимается сам. Выполните сжатие таблиц в «Тестировании и исправлении» или выгрузите базу в .dt и загрузите обратно.Сохранятся ли пользователи при создании пустой базы из .cf?
Как очистить только историю изменений объектов?
Можно ли очистить базу, не выгоняя пользователей?
.dt требуют монопольного доступа.