Очистка базы 1С 8.3 от старых данных: что можно удалить, чем и в каком порядке

· 9 мин

Содержание

Почистить историю в 1С 8.3 безопасно можно четырьмя штатными способами: сократить журнал регистрации (Конфигуратор → Администрирование → Журнал регистрации), удалить устаревшие версии объектов, снять регистрацию изменений в планах обмена и свернуть базу на дату обработкой «Свертка информационной базы». Удаление движений и записей регистров напрямую — крайняя мера: она ломает остатки и итоги, если делать её без пересчёта.

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

Что в базе 1С считается «историей» и что на самом деле занимает место

Под словом «история» пользователи понимают разные вещи. От этого зависит инструмент.

  • 📄 Документы прошлых лет и их движения по регистрам накопления, бухгалтерии, сведений.
  • 🗂 Журнал регистрации — кто, когда и что делал в базе. Хранится отдельно от данных.
  • 🕘 Версии объектов — копии документа или справочника при каждой записи. Нужны, чтобы посмотреть, кто поменял сумму.
  • 🔁 Таблицы регистрации изменений планов обмена. Копятся, если узел обмена давно не забирает данные.
  • 🗑 Помеченные на удаление объекты — формально удалены, физически ещё в базе.
  • 📊 Таблицы итогов регистров накопления и бухгалтерии — служебные агрегаты для быстрых отчётов.

Прежде чем что-то удалять, посмотрите, какие таблицы реально большие. В клиент-серверной базе на MS SQL это делает стандартный отчёт SQL Server Management Studio «Disk Usage by Top Tables». Имена таблиц там служебные (_AccumRg123, _InfoRg456), их сопоставляют с объектами метаданных так:

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

Второй параметр Истина возвращает имена в терминах СУБД. Часто оказывается, что 70% объёма — не документы, а версии объектов, регистрация изменений или регистр сведений с логами обмена.

В файловой базе журнал регистрации лежит в папке 1Cv8Log рядом с файлом 1Cv8.1CD, в серверной — в каталоге кластера srvinfo\reg_1541\<GUID базы>\1Cv8Log. Его размер в размер 1Cv8.1CD не входит.

Сколько лет истории обязаны хранить

Удалять документы «до 2015 года» можно не всегда. По статье 29 Закона № 402-ФЗ первичные документы и регистры бухучёта хранят не меньше пяти лет после отчётного года. Налоговый кодекс (пункт 1 статьи 23) требует хранить данные для исчисления налогов пять лет. Для кадровых документов и данных по зарплате сроки бывают дольше.

До удаления документов из рабочей базы сделайте архивную копию в формате .dt и сохраните её отдельно. Это и есть хранение: архивную базу можно развернуть и сформировать любой отчёт за старый период.

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

Самый безопасный способ избавиться от лишних документов — пометить их на удаление и удалить штатной обработкой. Платформа проверит ссылки и не даст удалить объект, на который что-то ссылается.

Порядок для документов за период:

  1. Откройте журнал документов нужного вида и установите отбор по периоду.
  2. Выделите документы и отмените проведение. Движения по регистрам удалятся вместе с отменой.
  3. Пометьте документы на удаление (Del или команда в меню Ещё).
  4. Запустите удаление: в БП 3.0 и УТ 11 — Администрирование → Обслуживание → Удаление помеченных объектов; в любой конфигурации — Все функции → Стандартные → Удаление помеченных объектов.
  5. Посмотрите список объектов, которые не удалились из-за ссылок, и разберитесь с каждым.

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

Минус метода — он рвёт остатки. Если удалить приходы 2019 года, а расходы 2020-го оставить, склад и взаиморасчёты уйдут в минус. Поэтому для старых периодов целиком используют свертку.

Свертка информационной базы

В БП 3.0, УТ 11 и КА 2 есть обработка «Свертка информационной базы». Найти её проще всего через поиск по командам или в Администрирование → Обслуживание, группа корректировки данных. Обработка:

  • 📅 формирует остатки по регистрам на дату свертки;
  • 📝 создаёт служебные документы, которые эти остатки вводят;
  • 🗑 удаляет документы до даты свертки.

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

Альтернатива свертке — новая база «с нуля» с переносом остатков на 1 января и справочников. Старая база остаётся архивом. Так часто поступают при переходе на новую редакцию.

Внешняя обработка для очистки движений документов

Иногда нужно удалить движения, не трогая сам документ: например, документ провели по ошибке в регистр, который потом сняли из его движений, и записи «повисли». Штатно это делается перепроведением, но если документов тысячи, пишут небольшую внешнюю обработку .

Пустой набор записей с отбором по регистратору при записи стирает все движения этого документа в регистре:

&НаСервере
Процедура ОчиститьДвиженияНаСервере(ДокументСсылка)
    НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
    НаборЗаписей.Записать(Истина);
КонецПроцедуры

Имя регистра в примере условное — подставьте своё. Для всех регистров документа удобнее работать через объект:

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Для Каждого Движение Из ДокументОбъект.Движения Цикл
    Движение.Очистить();
    Движение.Записать();
КонецЦикла;

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

Что знает практик и что легко забыть:

  • 🔐 Обработку запускают пользователем с полными правами, иначе запись набора упадёт на ограничениях доступа.
  • 📆 Если в базе установлена дата запрета изменения, запись набора за закрытый период не пройдёт. Временно сдвигать дату запрета — только с ведома главного бухгалтера.
  • 🧮 После массовой очистки регистров накопления пересчитайте итоги (см. ниже), иначе остатки в отчётах разойдутся с движениями.
  • 🧾 Регистр бухгалтерии чистится так же, но после этого закрытие месяца за затронутые периоды придётся повторить.

Журнал регистрации, версии объектов и таблицы изменений обмена

Эти данные к учёту не относятся, и чистить их почти не страшно. Чаще всего именно они дают основной прирост места.

Сокращение журнала регистрации

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

Там же, в Администрирование → Настройка журнала регистрации, задают уровень событий (ошибки, предупреждения, информация, примечания) и разделение журнала по периодам. При разделении по месяцам старые файлы можно просто перенести в архив.

Удалять файлы 1Cv8Log вручную можно только при остановленной работе с базой. В серверной базе для этого останавливают службу агента сервера 1С — все сеансы пользователей оборвутся. Делайте это в нерабочее время и предупредите людей.

С платформы 8.3.5 журнал по умолчанию хранится в одном файле 1Cv8.lgd (формат SQLite). Старый формат — множество файлов .lgp и файл 1Cv8.lgf. Формат переключается в той же настройке журнала.

Версии объектов

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) версионирование включается в Администрирование → Общие настройки, группа «Версионирование объектов». Там же задают, какие объекты версионировать и сколько хранить. Старые версии удаляет регламентное задание очистки устаревших версий — проверьте, что оно включено и выполняется.

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

Регистрация изменений в планах обмена

Когда узел распределённой базы или обмен с сайтом давно отключён, изменения для него продолжают регистрироваться. Таблицы _ReferenceChngR, _DocumentChngR растут бесконечно.

Решение — удалить ненужный узел из плана обмена или снять для него регистрацию:

ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

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

Что у вас занимает больше всего места?

Итоги регистров, сжатие таблиц и производительность после очистки

Удаление записей не уменьшает файл базы и не всегда ускоряет отчёты само по себе. Нужны ещё два шага.

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

  • Все функции → Стандартные → Управление итогами — пересчёт итогов по выбранным регистрам и установка периода рассчитанных итогов;
  • Конфигуратор → Администрирование → Тестирование и исправление, флажок «Пересчёт итогов».

Сжатие. Файловая база 1Cv8.1CD после удаления данных не уменьшается: освободившиеся страницы остаются внутри файла. Их отдаёт флажок «Сжатие таблиц информационной базы» в Тестировании и исправлении. Тестирование и исправление требует монопольного доступа — все пользователи должны выйти.

В клиент-серверной базе место возвращают средствами СУБД:

СУБДЧто делатьКомментарий
MS SQL ServerDBCC SHRINKFILE для файла данных, затем перестроение индексовСжатие фрагментирует индексы, поэтому обслуживание индексов обязательно
MS SQL Server, растёт файл .ldfМодель восстановления Simple или регулярный бэкап журнала транзакцийБольшой лог — не история 1С, а настройки СУБД
PostgreSQLVACUUM FULL для крупных таблицБлокирует таблицу на время работы, только в нерабочее время
-- MS SQL: сжать файл данных базы до 50 ГБ (размер в МБ)
USE [buh_base];
DBCC SHRINKFILE (N'buh_base', 51200);

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

Почему не удалять записи прямо в SQL

Технически можно выполнить DELETE по таблице _AccumRg… за старые даты. Это быстро, но:

  • 🧮 итоги в таблицах _AccumRgT… останутся старыми, отчёты покажут неверные остатки;
  • 🔗 документы останутся проведёнными без движений, а ссылки на удалённые объекты станут «битыми»;
  • 🛠 типовая конфигурация такой сценарий не предусматривает, и при ошибке восстановить базу можно будет только из копии.

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

Сравнение способов очистки истории в 1С

СпособЧто чиститКогда подходитРиски
Сокращение журнала регистрацииСобытия пользователейЖурнал разросся до гигабайтТеряется аудит до даты сокращения
Очистка версий объектовКопии объектовВерсионирование включено на всёНельзя посмотреть старые изменения
Снятие регистрации измененийТаблицы обменаОтключённые узлы обменаДля живого узла — потеря данных обмена
Удаление помеченныхОтдельные объектыОшибочные и пробные документыРазрыв остатков при выборочном удалении
Свертка базыДокументы до датыМноголетняя база, нужен короткий хвостДолго; без проверки ОСВ возможны расхождения
Внешняя обработкаДвижения документаПовисшие движения, ошибки проведенияРасхождение итогов без пересчёта
Прямой SQLЛюбые таблицыПочти никогда для учётаПорча данных, восстановление только из копии

Разумный порядок — сверху вниз: сначала то, что не касается учёта, потом документы. Чаще всего первые три строки таблицы решают проблему размера без свертки.

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

Уменьшится ли файл 1Cv8.1CD после удаления документов?
Нет. Пока не выполнено сжатие таблиц в «Тестировании и исправлении», размер файла остаётся прежним.
Можно ли удалить историю изменений одного документа, не трогая другие?
Да. В форме истории версий документа можно удалить выбранные версии, если у пользователя есть право на администрирование версий.
Повлияет ли сокращение журнала регистрации на учёт?
Нет. Журнал хранит только события работы пользователей, проводки и остатки от него не зависят.
Сколько лет данных можно оставить после свертки?
Столько, сколько нужно для текущей работы — обычно текущий и прошлый год. Старые периоды хранят в архивной копии не меньше пяти лет.
Нужно ли выгонять пользователей для удаления помеченных объектов?
В клиент-серверной базе нет, но работа замедлится. Тестирование и исправление и сжатие файловой базы без монопольного доступа не запустятся.

Источники

  • Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учете», статья 29
  • Налоговый кодекс РФ, статья 23, пункт 1