Работа с распределенными информационными базами (РИБ) часто сталкивает администраторов и программистов с проблемой лавинообразного роста объема данных. Особенно это критично для периферийных узлов, которые могут работать на слабом оборудовании или в условиях ограниченного дискового пространства. В данной статье мы подробно разберем, как уменьшить объем периферийной базы за счет удаления старых документов, не повредив при этом данные в центральном узле и сохранив работоспособность системы.
Прежде чем приступать к радикальным мерам по удалению, нам необходимо выяснить, что именно занимает место. В файловом варианте 1С база представляет собой один файл 1Cv8.1CD. Мы не можем просто удалить документы и ожидать мгновенного уменьшения размера файла на диске. Рассмотрим ситуацию: база весит 6 Гб, и даже после удаления 50% документов она может продолжать занимать те же 6 Гб из-за особенностей внутреннего устройства файловой СУБД 1С.
Проанализируем структуру базы. Для этого рекомендуется использовать статистику конфигуратора или сторонние утилиты, такие как Tool_1CD. Мы должны понять, какие таблицы самые "тяжелые": это могут быть не сами документы, а регистры сведений (например, версионирование объектов), регистры накопления или прикрепленные файлы (хранилища значений).
Если мы просто удалим документы в периферийной базе, система 1С расценит это как действие, которое нужно транслировать в центральный узел. В итоге при следующем обмене документы удалятся и в центре, что чаще всего является катастрофой. Чтобы этого избежать, разберем правильную последовательность действий.
ВводОстатков на дату начала "живого" периода.Разберем подробнее, как программно очистить регистрацию изменений для конкретного узла. Рассмотрим пример кода, который можно использовать во внешней обработке:
УзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("ЦУ"); // Замените на код вашего центрального узла
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);
Этот код полностью очищает очередь выгрузки. После этого периферийная база "забудет", что в ней что-то удалялось, и при обмене не отправит команды на удаление в центральную базу.
Как мы уже выяснили, удаление записей лишь помечает место в файле как свободное. Чтобы операционная система увидела реальное уменьшение объема 1Cv8.1CD, нам необходимо выполнить процедуру сжатия. Проанализируем, как это сделать правильно:
После этой процедуры 1С пересоберет файл базы данных, исключив пустые "дыры", оставшиеся после удаления документов. Только после этого мы увидим реальное уменьшение размера файла с 6 Гб до, например, 2 Гб.
Чтобы база не начала "раздуваться" снова сразу после очистки, нам нужно ограничить миграцию данных из центра. Рассмотрим вариант настройки фильтров. Если мы работаем с типовой конфигурацией (например, УПП или ERP), мы можем настроить правила миграции по дате.
В модуле плана обмена или через правила конвертации данных (если обмен идет через них) мы можем прописать условие, чтобы документы старше определенной даты не регистрировались для выгрузки в данный периферийный узел. Это позволит поддерживать базу в компактном состоянии на постоянной основе.
Проанализируем ситуацию с регистрами накопления. При удалении документа РеализацияТоваровУслуг из базы исчезают и его движения по регистрам. Если этот документ был в прошлом году, а мы смотрим остатки на сегодня, то сумма остатка уменьшится на сумму этого документа. Это приведет к тому, что отчеты в периферийной базе станут неверными.
Варианты решения:
Посмотрим на ситуацию шире. Иногда документы — не главная причина объема. Выясним, включено ли в базе Версионирование объектов. В крупных базах история изменений может занимать до половины объема всей БД. Рассмотрим очистку регистра сведений ВерсииОбъектов. Удаление записей из этого регистра за старые периоды абсолютно безопасно для текущего учета, но значительно освобождает место.
Также проанализируем наличие прикрепленных файлов. В современных версиях на базе БСП (Библиотека стандартных подсистем) предусмотрен механизм выноса файлов в тома на диске. Если мы переключим хранение файлов из базы в сетевую папку или на локальный диск, сам файл .1CD станет в разы легче, а работа с ним — быстрее.
Мы совместно разобрали комплексный подход к очистке периферийной базы. Помните: в РИБ самое главное — это управление регистрацией изменений. Если вы удалили данные в периферии, обязательно очистите таблицу регистрации перед запуском обмена. Последовательное выполнение удаления, очистки регистрации и последующее сжатие таблиц в конфигураторе гарантированно решит проблему с объемом базы и обеспечит стабильную работу пользователя в удаленном офисе.