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

· 9 мин

Содержание

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

Частое заблуждение — что очистка начинается с SQL и команды TRUNCATE. В 1С 8.3 так делать нельзя: таблицы итогов и служебные таблицы платформы перестанут сходиться с данными. Очистку БД в 1С Предприятии ведут средствами самой платформы, а SQL оставляют для сжатия файлов и резервных копий.

Подготовка к очистке базы 1С: копия и выбор способа

Любая очистка необратима. Удалённый документ не вернуть кнопкой «Отменить».

Сделайте резервную копию до любых действий с данными.

Как её сделать:

  1. Откройте базу в режиме Конфигуратор.
  2. Выберите Администрирование → Выгрузить информационную базу.
  3. Сохраните файл .dt на другой диск или в сетевую папку.
  4. Для файловой базы дополнительно скопируйте файл 1Cv8.1CD из каталога базы, когда в ней никто не работает .

Выгружайте базу, когда пользователи вышли: так копия будет согласованной. Список сеансов в Конфигураторе — Администрирование → Активные пользователи.

Затем определите, что именно нужно:

ЗадачаСпособРиск
Убрать черновики, дубли, ошибочные документыУдаление помеченных объектовНизкий
Получить пустую базу для нового учёта или тестаНовая база из .cf или шаблонаНизкий, старая база не трогается
Стереть записи одного регистраОбработка с кодомСредний
Уменьшить размер базы после удаленияСжатие таблиц, выгрузка-загрузка .dtНизкий
Убрать накопленную историюСвёртка базы, сокращение журнала регистрацииСредний
Что нужно сделать с базой?

Удаление помеченных объектов — штатный способ очистки

В 1С нет удаления «насовсем» одним нажатием Delete. Сначала объект помечают, потом обработка проверяет ссылки и удаляет то, на что никто не ссылается.

В 1С:Бухгалтерии 3.0 обработка находится в разделе Администрирование → Обслуживание, группа «Корректировка данных». В любой конфигурации её можно открыть через Все функции → Стандартные → Удаление помеченных объектов. Если пункта «Все функции» нет в меню, включите его в параметрах программы: флажок «Отображать команду “Все функции”».

Порядок работы:

  1. Пометьте ненужные документы и элементы справочников (клавиша Delete в списке ставит пометку).
  2. Откройте обработку и выберите режим полного удаления или выборочного, если нужно удалить не всё помеченное.
  3. Запустите удаление и дождитесь результата.
  4. Посмотрите список объектов, которые удалить не удалось.

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

Документы перед пометкой лучше распровести. Тогда их движения уйдут из регистров сразу, и вы увидите влияние на остатки до удаления.

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

Как полностью очистить базу 1С и оставить конфигурацию

Удалять все документы и справочники по одному — путь на часы и с риском ошибок. Быстрее создать пустую базу.

Через файл конфигурации .cf

  1. В Конфигураторе рабочей базы выберите Конфигурация → Сохранить конфигурацию в файл.
  2. В окне запуска 1С нажмите «Добавить» и создайте новую информационную базу без конфигурации.
  3. Откройте её в Конфигураторе: Конфигурация → Загрузить конфигурацию из файла, укажите сохранённый .cf.
  4. Согласитесь на обновление конфигурации базы данных.
  5. Запустите базу в режиме «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"

Что ещё сделать:

  1. Сократите журнал регистрации: Администрирование → Настройка журнала регистрации в Конфигураторе, кнопка «Сократить». Можно сохранить удаляемые записи в файл.
  2. Очистите персональные настройки пользователей, если база готовится для других людей. В типовых конфигурациях: Администрирование → Настройки пользователей и прав → Персональные настройки пользователей.
  3. Запустите клиент с параметром /ClearCache, если после загрузки .dt у пользователей открываются старые формы.
  4. Сформируйте оборотно-сальдовую ведомость и сравните с ожиданием: пустая база — нули, свёрнутая — остатки на дату свёртки.
База готова к работе после очистки
Выполнено: 0 / 6

Ошибки, из-за которых очистка бьёт по рабочим данным

Сама обработка редко ломает базу. Проблемы приносят связи базы с внешним миром.

  • 🔄 Обмены и РИБ. Копия базы с настроенным обменом или распределённой базой при следующей синхронизации может отправить удаления в другие узлы. В копии для тестов сначала отключите обмены, потом удаляйте данные.
  • 🌐 Внешние ресурсы. Типовые конфигурации замечают перенос базы на другой адрес и предлагают заблокировать работу с внешними ресурсами. Если ответить «Это не копия», тестовая база начнёт работать с банком, ЭДО и почтой как рабочая.
  • 🔒 Дата запрета изменения. Документы закрытых периодов не распроводятся и не удаляются. Снимите запрет на время очистки и верните его после.
  • 👤 Пароль администратора. После загрузки чужой .dt в базе будут чужие пользователи. Узнайте пароль администратора до загрузки, иначе в базу не войти.

Частые вопросы об очистке БД 1С

Можно ли восстановить объект после удаления помеченных?
Только из резервной копии. Платформа не хранит корзину: после удаления объект исчезает из базы.
Почему после удаления документов база не стала меньше?
Файл 1Cv8.1CD не сжимается сам. Выполните сжатие таблиц в «Тестировании и исправлении» или выгрузите базу в .dt и загрузите обратно.
Сохранятся ли пользователи при создании пустой базы из .cf?
Нет. Список пользователей хранится в данных базы, а не в конфигурации. В новой базе их создают заново.
Как очистить только историю изменений объектов?
В типовых конфигурациях хранение версий объектов включают и отключают в общих настройках раздела «Администрирование». Отключение не стирает уже накопленные версии: их чистят отдельно, а для полной уверенности создают новую базу.
Можно ли очистить базу, не выгоняя пользователей?
Удаление помеченных объектов работает при открытых сеансах, но пропустит занятые объекты. Тестирование и исправление и загрузка .dt требуют монопольного доступа.