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

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

Многие разработчики и системные администраторы задаются вопросом: почему абсолютно «пустая» база данных 1С (например, «Управление нашей фирмой», «Управление торговлей» или «Комплексная автоматизация») сразу после создания весит около 1–1.5 Гигабайт? Ведь в ней еще нет ни единого документа, ни одного контрагента или элемента номенклатуры!

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

Анатомия проблемы: почему макеты драйверов весят так много?

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

В результате один-единственный макет драйвера для фискального регистратора или терминала сбора данных может занимать от 10 до 50 Мегабайт в сжатом виде. Когда таких драйверов в конфигурации несколько десятков, общий объем бинарных данных внутри метаданных конфигурации мгновенно превышает 500–700 Мегабайт. Вся эта информация хранится в общих макетах метаданных.

Экспериментальный анализ: сколько места можно сэкономить?

Рассмотрим реальный практический эксперимент по удалению макетов драйверов из типовой конфигурации «1С:Управление нашей фирмой» редакции 1.6.

  1. Берем чистую базу данных конфигурации УНФ. На момент создания она имеет исходный «тяжелый» объем.
  2. Снимаем конфигурацию с поддержки (для возможности редактирования объектов) и выгружаем файл конфигурации (.cf). Исходный вес файла .cf составляет 590 Мегабайт.
  3. Переходим в ветку метаданных ОбщиеМакеты и удаляем макеты неиспользуемых драйверов торгового оборудования (оставляя только те, которые действительно планируется использовать на проекте).
  4. Выгружаем измененный файл конфигурации (.cf). Вес нового файла составляет всего 207 Мегабайт! Нам удалось сократить объем конфигурации почти в 3 раза.
  5. Загружаем оптимизированный файл конфигурации обратно в информационную базу и выполняем обновление. Физический размер файла базы данных (.1cd) сокращается с 1.6 Гигабайт до 0.8 Гигабайт (после выполнения сжатия таблиц).

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

Технический нюанс: Предопределенные элементы и обновление драйверов

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


// Обновить поставляемые драйверы в составе конфигурации.
Процедура ОбновитьПоставляемыеДрайвера() Экспорт
    // Инициализация обновления драйверов торгового оборудования
    МенеджерОборудованияСлужебный.ОбновитьПоставляемыеДрайверы();
КонецПроцедуры

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

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

Современное и безопасное решение: Новая концепция поставки БПО

К счастью для разработчиков, фирма «1С» осознала проблему избыточного веса конфигураций и внедрила новую архитектуру интеграции Библиотеки подключаемого оборудования. В современных версиях БПО реализована блочная концепция поставки драйверов. Разработчикам предлагается три варианта интеграции библиотеки в прикладные решения:

  1. Поставка без макетов драйверов. Конфигурация поставляется абсолютно чистой от бинарных файлов. Сама конфигурация весит минимально. Когда пользователю в режиме предприятия требуется подключить конкретное устройство (например, ККТ АТОЛ или Штрих-М), система автоматически скачивает нужный драйвер в режиме онлайн с Портала 1С и устанавливает его локально. Это самый современный и рекомендуемый подход.
  2. Поставка только с мобильными макетами. В метаданных оставляются исключительно драйверы для мобильных платформ (Android/iOS). Это необходимо, так как политики магазинов приложений Google Play и App Store накладывают жесткие ограничения на динамическую загрузку исполняемого кода из внешних источников в процессе работы программы.
  3. Классическая поставка (все макеты). Традиционный тяжелый вариант, при котором все возможные драйверы «зашиты» внутрь конфигурации. Он используется для полностью изолированных систем, не имеющих никакого доступа к интернету.

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

Влияние конфигурации поставщика на размер базы данных

Разбирая тему оптимизации размера базы данных, важно затронуть фундаментальный механизм платформы «1С:Предприятие 8» — хранение конфигураций поставщика в СУБД. Многие разработчики замечают, что при включении возможности редактирования («снятии замка») пустая база моментально увеличивается в объеме почти в два раза. Выясним техническую причину этого явления.

Внутри физического файла базы данных .1cd (или в соответствующих таблицах SQL-сервера, таких как Config, ConfigSave) одновременно могут храниться до трех различных конфигураций:

Когда база находится на полной поддержке (на «замке»), платформа оптимизирует хранение данных и физически не дублирует одинаковую информацию. Но как только вы нажимаете кнопку «Разрешить изменение», платформа вынуждена создать обособленную физическую копию конфигурации поставщика, чтобы хранить ее отдельно для возможности будущего сравнения и объединения. В результате размер метаданных в вашей СУБД удваивается.

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

Дополнительные практические методы сжатия баз данных 1С

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

1. Настройка хранения присоединенных файлов в томах на диске

По умолчанию все загружаемые файлы (сканы договоров, PDF-документы, изображения номенклатуры) сохраняются непосредственно в СУБД. Проанализируйте базу: файлы могут занимать до 80% всего ее объема. Перевод хранения файлов в физические тома на диске (в сетевую папку или локальный каталог сервера) позволит разгрузить базу данных, ускорить ее резервное копирование и существенно повысить быстродействие СУБД.

2. Настройка регламентной очистки версий объектов

Если в базе активно используется подсистема «Версионирование объектов» из состава БСП, то история изменений каждого документа сохраняется в регистре сведений ВерсииОбъектов. Со временем этот регистр разрастается до гигантских масштабов. Настройте регламентное задание по автоматическому удалению версий объектов старше определенного срока (например, старше 3 или 6 месяцев).

3. Физическое сжатие таблиц базы данных

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

Для файловых баз данных:

  1. Запустите утилиту тестирования и исправления файловых баз данных chdbfl.exe (она находится в каталоге установки платформы 1С в папке bin) и установите флаг «Сжатие таблиц».
  2. Или откройте базу в режиме «Конфигуратор», перейдите в меню Администрирование — Тестирование и исправление, выберите пункт «Сжатие таблиц информационной базы» и нажмите «Выполнить».

Для клиент-серверных баз данных (MS SQL Server, PostgreSQL):

  1. Выполните операцию усечения файлов базы данных (Shrink Database) через стандартные утилиты администрирования СУБД (например, SQL Server Management Studio). Это позволит физически уменьшить файлы данных (.mdf) и логов транзакций (.ldf) на сервере.
← На главную