Как правильно удалить старые документы в периферийной базе 1С и уменьшить её размер?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Работа с распределенными информационными базами (РИБ) часто сталкивает администраторов и программистов с проблемой лавинообразного роста объема данных. Особенно это критично для периферийных узлов, которые могут работать на слабом оборудовании или в условиях ограниченного дискового пространства. В данной статье мы подробно разберем, как уменьшить объем периферийной базы за счет удаления старых документов, не повредив при этом данные в центральном узле и сохранив работоспособность системы.

Анализ текущего состояния базы данных

Прежде чем приступать к радикальным мерам по удалению, нам необходимо выяснить, что именно занимает место. В файловом варианте 1С база представляет собой один файл 1Cv8.1CD. Мы не можем просто удалить документы и ожидать мгновенного уменьшения размера файла на диске. Рассмотрим ситуацию: база весит 6 Гб, и даже после удаления 50% документов она может продолжать занимать те же 6 Гб из-за особенностей внутреннего устройства файловой СУБД 1С.

Проанализируем структуру базы. Для этого рекомендуется использовать статистику конфигуратора или сторонние утилиты, такие как Tool_1CD. Мы должны понять, какие таблицы самые "тяжелые": это могут быть не сами документы, а регистры сведений (например, версионирование объектов), регистры накопления или прикрепленные файлы (хранилища значений).

Пошаговый алгоритм безопасного удаления данных в РИБ

Если мы просто удалим документы в периферийной базе, система 1С расценит это как действие, которое нужно транслировать в центральный узел. В итоге при следующем обмене документы удалятся и в центре, что чаще всего является катастрофой. Чтобы этого избежать, разберем правильную последовательность действий.

  1. Выполнение полного цикла обмена. Перед началом работ убедимся, что все данные синхронизированы. Выполним обмен "Центр -> Периферия" и "Периферия -> Центр".
  2. Создание резервной копии. Это обязательный этап. Любая ошибка при работе с планами обмена может привести к потере данных.
  3. Удаление документов. Проведем непосредственное удаление документов за выбранный период. Важно помнить, что если документы формируют остатки, их нельзя просто "вырезать". Необходимо предварительно сформировать документы типа ВводОстатков на дату начала "живого" периода.
  4. Сброс регистрации изменений. Это ключевой момент. После удаления документов в периферии создастся огромное количество записей в таблицах регистрации изменений. Нам нужно их очистить, чтобы информация об удалении не улетела в центр.

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


УзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("ЦУ"); // Замените на код вашего центрального узла
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

Этот код полностью очищает очередь выгрузки. После этого периферийная база "забудет", что в ней что-то удалялось, и при обмене не отправит команды на удаление в центральную базу.

Реальное уменьшение размера файла (Сжатие таблиц)

Как мы уже выяснили, удаление записей лишь помечает место в файле как свободное. Чтобы операционная система увидела реальное уменьшение объема 1Cv8.1CD, нам необходимо выполнить процедуру сжатия. Проанализируем, как это сделать правильно:

  1. Зайдем в базу в режиме Конфигуратор.
  2. Откроем меню Администрирование — Тестирование и исправление.
  3. Установим флажок только на пункте Сжатие таблиц информационной базы.
  4. Нажмем "Выполнить".

После этой процедуры 1С пересоберет файл базы данных, исключив пустые "дыры", оставшиеся после удаления документов. Только после этого мы увидим реальное уменьшение размера файла с 6 Гб до, например, 2 Гб.

Настройка фильтрации в Плане обмена

Чтобы база не начала "раздуваться" снова сразу после очистки, нам нужно ограничить миграцию данных из центра. Рассмотрим вариант настройки фильтров. Если мы работаем с типовой конфигурацией (например, УПП или ERP), мы можем настроить правила миграции по дате.

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

Риски и подводные камни: Остатки и Ссылки

Проанализируем ситуацию с регистрами накопления. При удалении документа РеализацияТоваровУслуг из базы исчезают и его движения по регистрам. Если этот документ был в прошлом году, а мы смотрим остатки на сегодня, то сумма остатка уменьшится на сумму этого документа. Это приведет к тому, что отчеты в периферийной базе станут неверными.

Варианты решения:

Дополнительные методы оптимизации

Посмотрим на ситуацию шире. Иногда документы — не главная причина объема. Выясним, включено ли в базе Версионирование объектов. В крупных базах история изменений может занимать до половины объема всей БД. Рассмотрим очистку регистра сведений ВерсииОбъектов. Удаление записей из этого регистра за старые периоды абсолютно безопасно для текущего учета, но значительно освобождает место.

Также проанализируем наличие прикрепленных файлов. В современных версиях на базе БСП (Библиотека стандартных подсистем) предусмотрен механизм выноса файлов в тома на диске. Если мы переключим хранение файлов из базы в сетевую папку или на локальный диск, сам файл .1CD станет в разы легче, а работа с ним — быстрее.

Итоги работы

Мы совместно разобрали комплексный подход к очистке периферийной базы. Помните: в РИБ самое главное — это управление регистрацией изменений. Если вы удалили данные в периферии, обязательно очистите таблицу регистрации перед запуском обмена. Последовательное выполнение удаления, очистки регистрации и последующее сжатие таблиц в конфигураторе гарантированно решит проблему с объемом базы и обеспечит стабильную работу пользователя в удаленном офисе.

← На главную