Многие разработчики и администраторы систем 1С сталкивались с проблемой избыточного веса метаданных конфигурации. Одной из главных причин «раздувания» файла .cf долгое время являлись макеты с драйверами торгового оборудования, которые вшивались непосредственно в дерево метаданных. В этой статье мы разберем механизм оптимизации состава конфигурации, предложенный фирмой «1С» в 2024 году, и выясним, как это влияет на скорость обновления и обслуживания баз.
Рассмотрим ситуацию: раньше в типовых решениях (например, в «1С:Бухгалтерия» или «1С:ERP») все возможные драйверы для касс, сканеров и весов хранились внутри конфигурации. Это приводило к тому, что дистрибутивы весили гигабайты, а процесс сравнения/объединения при обновлении занимал значительное время. Проанализируем изменения: теперь фирма «1С» исключает тяжелые дистрибутивы драйверов из состава метаданных.
Основные принципы новой архитектуры:
1С:Предприятие сама обращается к веб-сервису и скачивает нужный компонент.Выясним причину, по которой это может быть проблемой: не все серверы имеют прямой доступ к интернету. Для таких случаев мы можем настроить локальное хранение. Разберем по шагам, как это работает через Библиотеку подключаемого оборудования (БПО):
Если ваша база работает в закрытом контуре, вы можете скачать необходимые компоненты заранее и разместить их в информационной базе или в специально выделенном каталоге на сервере. Система будет искать компонент сначала в локальном кэше, затем в справочнике ДополнительныеОтчетыИОбработки (или аналогичном в БПО) и только потом попытается уйти в интернет.
Помимо облегчения веса конфигурации, программисты часто ищут способы ускорить работу в Конфигураторе. Рассмотрим возможности, которые предоставляют внешние инструменты (например, расширения типа Турбоконф с адаптерами), чтобы приблизить комфорт разработки к уровню современных IDE:
Посмотрим на пример того, как программно может выглядеть обращение к внешней компоненте, если она не вшита в макет:
// Пример подключения внешней компоненты из файла или общего хранилища
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверККТ", "Driver", ТипВнешнейКомпоненты.Native);
Если Не Результат Тогда
// Если в макете нет, система может инициировать загрузку из внешнего источника
ЗагрузитьКомпонентуСПортала("1c.ru/components/kkt_driver");
КонецЕсли;
Проанализировав текущий вектор развития платформы, мы видим, что будущее за модульностью. Чтобы ваша база работала быстрее, рекомендуем:
БПО до актуальных версий, поддерживающих вынос компонентов.1С:EDT для долгосрочных проектов, так как там работа с внешними зависимостями реализована более прозрачно.Таким образом, мы не только уменьшаем размер базы данных, но и упрощаем процесс поддержки, так как драйверы теперь могут обновляться независимо от релиза основной конфигурации.