Почему после подключения БПО (ДТО) размер конфигурации 1С увеличился до 800 Мб и как это исправить

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

При разработке собственных конфигураций или кастомизации типовых решений программисты часто сталкиваются с ситуацией: после интеграции подсистемы Библиотека подключаемого оборудования (БПО), которую часто путают с термином ДТО (драйверы торгового оборудования), размер файла конфигурации (.cf) взрывным образом увеличивается. Если изначально «нетленка» весила 2–10 Мб, то после внедрения БПО она может раздуться до 800 Мб и более. В этой статье мы разберем, является ли это нормой, проанализируем причины такого поведения системы и рассмотрим по шагам, как вернуть конфигурации легкость без потери функциональности.

Выясним причину: почему БПО такая тяжелая?

Проанализируем структуру современной БПО. Основной объем занимают не программные модули, а Общие макеты. В состав библиотеки включены десятки драйверов для самого разного оборудования: ККТ с передачей данных, сканеры штрихкодов, терминалы сбора данных, весы и, конечно, эквайринговые системы.

Разберем факторы, влияющие на размер:

  1. Кроссплатформенность. Современная платформа «1С:Предприятие» работает на Windows, Linux и Android. Для каждого драйвера в макетах часто хранятся бинарные файлы (.dll, .so) под все эти архитектуры (x86, x64, ARM).
  2. Универсальность вендоров. Производители оборудования (например, Атол или Штрих-М) поставляют универсальные драйверы, которые сами по себе весят по 50–100 Мб, так как содержат внутри обширные библиотеки сопряжения.
  3. Автоматическая дистрибуция. 1С намеренно хранит эти компоненты в конфигурации, чтобы при подключении нового рабочего места система могла автоматически «раскатать» нужный драйвер на компьютер пользователя без необходимости ручного поиска и установки файлов.

Рассмотрим решение №1: Выпиливание лишних драйверов

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

Зайдем в Общие макеты и найдем объекты, чьи имена начинаются с Драйвер.... Рассмотрим алгоритм очистки:

  1. Определите, какие именно драйверы будут использоваться в вашем проекте.
  2. Для всех остальных макетов выполните процедуру «очистки». Важно: не удаляйте сам объект макета из дерева метаданных, если вы не хотите переписывать программный код БПО, который обращается к этим макетам по имени.
  3. Замените содержимое «тяжелых» бинарных макетов на пустые текстовые файлы или маленькие заглушки.

После такой процедуры размер .cf файла обычно сокращается с 800 Мб до комфортных 50–100 Мб.

Рассмотрим решение №2: Хранение драйверов в базе как данных

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

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

Разберем шаги для реализации этого подхода:

  1. Удалите или очистите все тяжелые макеты в конфигураторе.
  2. В режиме «1С:Предприятие» откройте справочник драйверов.
  3. Создайте новый элемент и выберите вариант загрузки «Из файла на диске» или «Из внешнего архива».

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

Проанализируем последствия «тяжелой» конфигурации

Многие задаются вопросом: «А что плохого в 800 Мб, если диски сейчас терабайтные?». Разберем, почему размер имеет значение для разработчика:

Технический пример: Программное обращение к драйверу

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


// Пример логики проверки наличия компоненты
ПараметрыПодключения = МенеджерОборудованияВызовСервера.ПолучитьПараметрыПодключения(СсылкаНаДрайвер);
Если ПараметрыПодключения.ДрайверУстановлен Тогда
    // Работаем с оборудованием
Иначе
    // Если макет в конфигурации пуст, система предложит загрузить драйвер из файла
    МенеджерОборудованияКлиент.УстановитьДрайвер(СсылкаНаДрайвер);
КонецЕсли;

Использование метода УстановитьДрайвер позволяет интерактивно подгрузить компоненту, даже если вы очистили все макеты в конфигураторе для уменьшения размера базы.

Подведем итоги

Размер конфигурации в 800 Мб после подключения БПО — это нормальное, но нежелательное явление. Это плата за универсальность и удобство «коробочного» внедрения. Для профессиональной разработки рекомендуется:

  1. Выполнять выборочную интеграцию: При использовании «Помощника внедрения БСП/БПО» выбирайте только необходимые типы оборудования.
  2. Чистить макеты: Оставляйте бинарные данные только для тех моделей, которые реально используются на объекте.
  3. Использовать внешние компоненты: Переносите драйверы в справочник (в данные), а не в дерево объектов (в метаданные).

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

← На главную