Почему резко увеличился размер файловой базы 1С:Управление торговлей 10.3 и как его уменьшить?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При активной работе со старыми, но до сих пор поддерживаемыми конфигурациями (такими как 1С:Управление торговлей редакции 10.3) системные администраторы и разработчики часто сталкиваются с парадоксальной ситуацией. База данных, в которой ведется учет по одной небольшой организации с минимальным количеством документов, после очередного обновления конфигурации резко "раздувается" в объеме — например, с 300 МБ до 1.5 ГБ. При этом стандартное тестирование и исправление сжатием таблиц не приносит видимых результатов.

В этой статье мы подробно разберем, почему происходит скачкообразный рост файловой базы данных, как устроена внутренняя структура хранения конфигурации CONFIG и какие практические шаги помогут вернуть размер файла 1Cv8.1CD к исходным минимальным значениям.

Выясняем причину: почему растет таблица CONFIG?

Для начала проанализируем, что именно вызывает столь бурный рост размера базы при обновлении на релизы линейки 10.3.48.x и выше. Если воспользоваться специализированными утилитами для анализа структуры файловой базы (например, Tool_1CD), то станет очевидно, что основной объем занимает не таблица с документами или справочниками, а системная таблица конфигурации — CONFIG.

Выделим ключевые причины этого явления:

  1. Интеграция с государственными информационными системами и 54-ФЗ. Начиная с конца 2018 года, разработчики фирмы "1С" добавили в конфигурацию УТ 10.3 полноценную поддержку онлайн-касс, систем маркировки "Честный Знак", ЕГАИС и ВетИС ("Меркурий"). Чтобы обеспечить работоспособность сотен моделей торгового оборудования без необходимости скачивания внешних компонентов, все необходимые драйверы, внешние компоненты и библиотеки (файлы формата .dll, .so, .jar) были встроены непосредственно внутрь конфигурации в ветку ОбщиеМакеты в виде двоичных данных.
  2. Дублирование механизмов. Для обеспечения обратной совместимости в конфигурации часто остаются старые механизмы работы с торговым оборудованием, параллельно с которыми сосуществуют новые модули. Это приводит к двукратному увеличению количества объектов метаданных, выполняющих одну и ту же роль.
  3. Хранение нескольких конфигураций в одной базе. Мало кто задумывается, но если в базе данных включена возможность изменения (конфигурация снята с полной поддержки), платформа вынуждена хранить внутри файла 1Cv8.1CD сразу три конфигурации:
    • Конфигурация поставщика (исходная эталонная конфигурация от "1С", используемая для сравнения при обновлениях);
    • Основная конфигурация (та, которую вы редактируете в Конфигураторе);
    • Конфигурация базы данных (актуальная рабочая конфигурация, под которой работают пользователи).
    Когда размер одного файла метаданных .cf превышает 300-400 МБ, их тройное хранение мгновенно раздувает базу до 1-1.5 ГБ еще до внесения каких-либо пользовательских данных.

Особенности внутреннего устройства файловой базы данных

Для понимания того, почему обычное "Сжатие таблиц" в режиме "Тестирование и исправление" не уменьшает физический размер файла базы данных, обратимся к особенностям хранения данных формата .1CD.

Файловая СУБД 1С имеет страничную организацию. Физический файл базы состоит из страниц размером 4096 байт (4 КБ). Страницы организованы в древовидную структуру и делятся на три типа:

При обновлении конфигурации старые записи в таблице CONFIG не заменяются физически в тех же ячейках. Вместо этого старая страница помечается как "удаленная", а обновленные данные (например, новые тяжелые общие макеты драйверов) записываются в новые страницы в конец файла. Из-за этого файл базы данных лавинообразно увеличивается.

Стандартный механизм сжатия таблиц в "Тестировании и исправлении" очищает записи внутри таблиц, но часто из-за фрагментации дерева индексов СУБД 1С не может освободить эти страницы на уровне операционной системы и уменьшить размер самого файла 1Cv8.1CD. База остается раздутой, храня внутри себя "пустоту", зарезервированную под будущие записи.

---

Способ 1. Выгрузка и загрузка через DT-файл (Дефрагментация)

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

Выполним этот процесс по шагам:

  1. Запустите информационную базу в режиме Конфигуратор.
  2. Убедитесь, что в базе нет активных сеансов пользователей (меню Администрирование — Активные пользователи).
  3. Откройте меню Администрирование — Выгрузить информационную базу... и сохраните файл с расширением .dt на жесткий диск.
  4. Закройте Конфигуратор.
  5. Создайте на диске новую пустую папку (например, C:\1C_Bases\UT_New).
  6. В стартовом окне запуска 1С нажмите кнопку Добавить, выберите создание новой информационной базы без конфигурации и укажите путь к созданной пустой папке.
  7. Запустите новую пустую базу в режиме Конфигуратор.
  8. Перейдите в меню Администрирование — Загрузить информационную базу... и выберите ранее выгруженный файл .dt.

После завершения загрузки платформа сформирует файл 1Cv8.1CD с нуля. Все страницы данных запишутся последовательно, без фрагментации, а неиспользуемое свободное пространство исчезнет. В большинстве случаев размер базы уменьшается на 30–50%.

---

Способ 2. Очистка неиспользуемых макетов драйверов в конфигурации

Если ваша база данных снята с поддержки (или включена возможность изменения), вы можете радикально снизить размер конфигурации (и, как следствие, таблицы CONFIG), удалив из нее двоичные макеты оборудования, которые гарантированно не используются в вашей организации. Например, если вы используете только фискальные регистраторы марки "Атол", вам не нужны встроенные компоненты для касс "Штрих-М", "Дримкас", "Эвотор" и т.д.

Рассмотрим, как это сделать программно или вручную:

  1. Откройте конфигурацию и перейдите в ветку Общие — Общие макеты.
  2. Найдите макеты, в именах которых фигурируют драйверы оборудования (например, ДрайверККТДримкас, ДрайверШтрихМККТ54ФЗ и другие). Обратите внимание: такие макеты имеют тип Двоичные данные.
  3. Удалите неиспользуемые макеты. Если полное удаление объекта метаданных вызывает опасения из-за возможных ошибок компиляции в коде, примените альтернативный метод: откройте макет и очистите его содержимое (замените тяжелый двоичный файл пустым текстовым файлом).

Для автоматизации поиска тяжелых макетов или очистки можно использовать несложный код в обработке. Посмотрим на пример кода, позволяющий проанализировать макеты:


ВыборкаМакетов = Метаданные.ОбщиеМакеты;
Для Каждого Макет Из ВыборкаМакетов Цикл
    // Проверяем имя макета на наличие ключевых слов драйверов
    Если Найти(Макет.Имя, "Драйвер") > 0 Или Найти(Макет.Имя, "Компонента") > 0 Тогда
        ЗаписьЖурналаРегистрации("АнализРазмера", УровеньЖурналаРегистрации.Информация, , ,
            "Найден потенциально тяжелый макет: " + Макет.Имя);
    КонецЕсли;
КонецЦикла;

После удаления или очистки макетов обязательно выполните обновление конфигурации базы данных (клавиша F7), а затем проведите процедуру выгрузки/загрузки через .dt, описанную в первом способе. Размер базы может снизиться в несколько раз.

---

Способ 3. Перенос данных в чистую базу через XML

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

Разберем этот процесс по шагам:

  1. Откройте вашу рабочую базу в конфигураторе и сохраните конфигурацию в файл (Конфигурация — Сохранить конфигурацию в файл...), получив чистый файл .cf.
  2. Создайте новую пустую базу в новой папке на диске.
  3. Запустите новую базу в режиме Конфигуратор и загрузите в нее ранее сохраненный файл конфигурации (Конфигурация — Загрузить конфигурацию из файла...). Выполните обновление конфигурации базы данных (F7). Теперь у вас есть полностью идентичная по структуре, но абсолютно пустая база без истории старых транзакций и "мусора" в таблицах CONFIG.
  4. Используйте универсальную обработку "Выгрузка и загрузка данных XML" (ее можно найти на диске ИТС или в составе инструментов разработчика).
  5. В исходной базе запустите обработку, выберите все необходимые справочники, документы и константы, настройте период выгрузки (если нужно отсечь старые периоды для оптимизации объема) и выгрузите данные в XML-файл.
  6. В новой пустой базе запустите аналогичную обработку в режиме загрузки и укажите полученный XML-файл.

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

---

Резюме и рекомендации

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

← На главную