Как очистить базу 1С от несуществующих элементов и уменьшить ее размер

Программист 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с базами данных 1С:Предприятие 8.2 и 8.3, особенно в конфигурации «Управление торговлей 10.3», системные администраторы и программисты часто сталкиваются с ситуацией, когда после удаления документов и очистки справочников физический размер файла базы данных (1CD) практически не уменьшается. Даже если штатные средства, такие как Тестирование и исправление (ТиИ) или утилита chdbfl.exe, не показывают ошибок, таблицы могут содержать миллионы скрытых записей. Рассмотрим подробнее, почему это происходит и как эффективно «сжать» базу.

Анализ структуры таблиц и выявление причин «раздувания»

Прежде чем приступать к очистке, нам необходимо понять, какие именно таблицы занимают место. Для этого проанализируем ситуацию с помощью внешних утилит, таких как V8TableSizes. Часто в лидерах по объему оказываются таблицы с префиксами _INFORGCHNGR или специфические регистры сведений, такие как ОбъектыДоступаДокументов.

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

Проанализируем также регистр ОбъектыДоступаДокументов. Он используется механизмом RLS (Record Level Security). Если в настройках параметров учета включено ограничение прав на уровне записей, система автоматически заполняет этот регистр данными для контроля прав доступа. Пока опция включена, очистка регистра в режиме «Предприятие» может быть бесполезной — он заполнится снова.

Метод 1: Выгрузка и загрузка данных через файл .dt

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

  1. Запустим базу в режиме Конфигуратор.
  2. Выберем пункт меню Администрирование — Выгрузить информационную базу и сохраним файл .dt.
  3. Создадим новую пустую папку на диске.
  4. В списке баз нажмем «Добавить», создадим новую информационную базу без конфигурации в подготовленной папке.
  5. Зайдем в Конфигуратор новой пустой базы.
  6. Выберем Администрирование — Загрузить информационную базу и укажем наш файл .dt.

Важное замечание: Как показывает практика, загрузка в ту же самую базу часто не дает результата, так как файл 1CD не всегда физически уменьшается на диске из-за особенностей работы файловой системы с заблокированными фрагментами. Загрузка именно в новую базу позволяет достичь максимального сжатия (в рассматриваемом примере база уменьшилась с 9 Гб до 1.3 Гб).

Метод 2: Принудительная реструктуризация регистра через Конфигуратор

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

Рассмотрим алгоритм действий:

  1. Найдем проблемный регистр в дереве метаданных.
  2. Сохраним конфигурацию в файл (.cf) на всякий случай.
  3. Удалим все измерения у этого регистра. Чтобы конфигурация сохранила работоспособность для реструктуризации, добавим одно новое фиктивное измерение (например, ТехническоеПоле с типом Число).
  4. Внимание: При попытке применить изменения (F7) 1С может выдать ошибки в коде модулей, где используются удаленные измерения. Нам необходимо временно закомментировать эти участки кода.
  5. Примем изменения и запустим базу в режиме «Предприятие». В этот момент платформа физически удалит старую таблицу и создаст новую, пустую.
  6. Вернемся в Конфигуратор и восстановим исходную структуру регистра (либо загрузив ранее сохраненный .cf, либо вручную вернув измерения).
  7. Снова примем изменения и проверим размер базы.

Метод 3: Очистка планов обмена

Если «раздуты» таблицы регистрации изменений, выполним следующие действия:

Посмотрим на список планов обмена в меню Операции — Планы обмена. Если там присутствуют узлы (помимо предопределенного «Этот узел»), и обмен по ним давно не проводился, выделим их и удалим. Если узлы нужны, воспользуемся типовой обработкой РегистрацияИзмененийДляОбмена.epf (обычно входит в состав ИТС или подсистемы БСП) и нажмем кнопку «Снять регистрацию всех изменений».

Решение проблемы с торговым оборудованием после чистки базы

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

Выясним причину: настройки торгового оборудования хранятся в справочнике ТорговоеОборудование и связаны с конкретным рабочим местом (именем компьютера и учетной записью). При переносе данных через .dt в новую базу или при чистке справочников эти связи могут нарушиться.

Чтобы исправить это, выполним следующие шаги:

  1. Перейдем в меню Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  2. Убедимся, что для вашего сканера выбран правильный тип драйвера.
  3. Если список обработчиков пуст, необходимо нажать кнопку «Добавить» или «Обновить» (в зависимости от версии УТ 10.3), чтобы система заново зарегистрировала dll-библиотеки в справочнике внешних компонент.
  4. Проверим, что в справочнике ОбработкиОбслуживанияТО загружены соответствующие файлы (обычно с расширением .epf или встроенные в конфигурацию).

Использование внешних инструментов для файловых баз

Проанализируем ситуацию, когда стандартные средства бессильны. Существует инструмент Tool_1CD, который позволяет просматривать и редактировать структуру файла .1CD напрямую.

Важно: Это крайне рискованный метод. Если вы решите удалять таблицы через Tool_1CD, обязательно создайте резервную копию. После удаления таблицы «снаружи» необходимо запустить chdbfl.exe, чтобы утилита исправила ошибки в индексах и заголовке файла базы данных.

Подводя итог, наиболее безопасным и эффективным алгоритмом очистки является: Отключение RLS -> Очистка регистрации в планах обмена -> Выгрузка в .dt -> Загрузка в новую пустую базу.

← На главную