При работе с базами данных 1С:Предприятие 8.2 и 8.3, особенно в конфигурации «Управление торговлей 10.3», системные администраторы и программисты часто сталкиваются с ситуацией, когда после удаления документов и очистки справочников физический размер файла базы данных (1CD) практически не уменьшается. Даже если штатные средства, такие как Тестирование и исправление (ТиИ) или утилита chdbfl.exe, не показывают ошибок, таблицы могут содержать миллионы скрытых записей. Рассмотрим подробнее, почему это происходит и как эффективно «сжать» базу.
Прежде чем приступать к очистке, нам необходимо понять, какие именно таблицы занимают место. Для этого проанализируем ситуацию с помощью внешних утилит, таких как V8TableSizes. Часто в лидерах по объему оказываются таблицы с префиксами _INFORGCHNGR или специфические регистры сведений, такие как ОбъектыДоступаДокументов.
Выясним причину появления огромного количества записей в пустом, на первый взгляд, регистре. В 1С таблицы с суффиксом CHNG являются таблицами регистрации изменений для планов обмена. Если в базе настроен обмен (например, с «Бухгалтерией предприятия»), то при удалении каждого документа система записывает информацию об этом событии в специальную таблицу, чтобы потом «сообщить» другой базе об удалении. Если узлы обмена не очищаются, эти таблицы будут расти бесконечно, даже если самих документов в базе уже нет.
Проанализируем также регистр ОбъектыДоступаДокументов. Он используется механизмом RLS (Record Level Security). Если в настройках параметров учета включено ограничение прав на уровне записей, система автоматически заполняет этот регистр данными для контроля прав доступа. Пока опция включена, очистка регистра в режиме «Предприятие» может быть бесполезной — он заполнится снова.
Это классический способ, который позволяет пересобрать файловую базу «с нуля», исключив фрагментацию и часть временных данных. Разберем этот процесс по шагам:
.dt..dt.Важное замечание: Как показывает практика, загрузка в ту же самую базу часто не дает результата, так как файл 1CD не всегда физически уменьшается на диске из-за особенностей работы файловой системы с заблокированными фрагментами. Загрузка именно в новую базу позволяет достичь максимального сжатия (в рассматриваемом примере база уменьшилась с 9 Гб до 1.3 Гб).
Если конкретная таблица регистра сведений (например, _INFORG или _INFORGCHNG) остается аномально большой даже после удаления данных, воспользуемся методом изменения структуры метаданных. Это заставит платформу полностью пересоздать физическую таблицу в файле базы данных.
Рассмотрим алгоритм действий:
.cf) на всякий случай.ТехническоеПоле с типом Число)..cf, либо вручную вернув измерения).Если «раздуты» таблицы регистрации изменений, выполним следующие действия:
Посмотрим на список планов обмена в меню Операции — Планы обмена. Если там присутствуют узлы (помимо предопределенного «Этот узел»), и обмен по ним давно не проводился, выделим их и удалим. Если узлы нужны, воспользуемся типовой обработкой РегистрацияИзмененийДляОбмена.epf (обычно входит в состав ИТС или подсистемы БСП) и нажмем кнопку «Снять регистрацию всех изменений».
Часто после глобальной очистки или переноса данных в новую базу «слетают» драйверы оборудования, например, сканеров штрихкодов. При попытке подключения возникает ошибка: «Обработчик драйвера не заполнен».
Выясним причину: настройки торгового оборудования хранятся в справочнике ТорговоеОборудование и связаны с конкретным рабочим местом (именем компьютера и учетной записью). При переносе данных через .dt в новую базу или при чистке справочников эти связи могут нарушиться.
Чтобы исправить это, выполним следующие шаги:
dll-библиотеки в справочнике внешних компонент.ОбработкиОбслуживанияТО загружены соответствующие файлы (обычно с расширением .epf или встроенные в конфигурацию).Проанализируем ситуацию, когда стандартные средства бессильны. Существует инструмент Tool_1CD, который позволяет просматривать и редактировать структуру файла .1CD напрямую.
Важно: Это крайне рискованный метод. Если вы решите удалять таблицы через Tool_1CD, обязательно создайте резервную копию. После удаления таблицы «снаружи» необходимо запустить chdbfl.exe, чтобы утилита исправила ошибки в индексах и заголовке файла базы данных.
Подводя итог, наиболее безопасным и эффективным алгоритмом очистки является: Отключение RLS -> Очистка регистрации в планах обмена -> Выгрузка в .dt -> Загрузка в новую пустую базу.