Какие подводные камни могут возникнуть при снятии конфигурации 1С:Розница с поддержки для оптимизации обновлений?

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

При обслуживании территориально распределенных сетей магазинов (особенно в условиях «дохлых» каналов связи) системные администраторы и программисты 1С часто сталкиваются с проблемой огромного размера файла конфигурации (.cf). Типовая «1С:Розница» версии 2.0 или 3.0 может весить около 900 Мб, значительную часть которых занимают двоичные данные драйверов торгового оборудования. Рассмотрим ситуацию, когда для ускорения доставки обновлений принимается решение снять конфигурацию с поддержки и физически удалить лишние макеты, сократив объем файла до 100–150 Мб.

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

Зачем снимать с поддержки и облегчать CF?

Основная цель — оперативность доставки изменений. В крупных сетях, где количество точек исчисляется сотнями, одновременная рассылка тяжелого файла парализует каналы связи. Если конфигурация уже значительно доработана («перепилена»), типовое обновление через сравнение/объединение с конфигурацией поставщика становится трудоемким. В таком случае переход на схему «Загрузить конфигурацию из файла» (LoadConfigFromFiles) в пакетном режиме кажется логичным шагом.

Разберем по шагам риски и механизмы, которые могут «выстрелить» в самый неподходящий момент.

Конфликты с Библиотекой стандартных подсистем (БСП)

Библиотека стандартных подсистем — это фундамент современной «Розницы». Она жестко контролирует целостность системы и версии объектов. Проанализируем основные точки отказа:

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

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

  2. Проверка имени и идентификаторов. В коде БСП часто встречаются проверки через Метаданные.Имя. Если при «облегчении» конфигурации вы случайно переименуете или удалите объект, на который завязана инициализация подсистемы, база откажется открываться даже в режиме конфигуратора.

Для решения этой проблемы рассмотрим необходимость корректировки процедур в модуле ОбновлениеИнформационнойБазыСлужебный. Часто приходится внедрять «заглушки», которые имитируют успешное завершение проверок или игнорируют расхождения версий, если вы ведете собственный контроль версионности.

Удаление двоичных данных: подводные камни в драйверах

Удаление макетов с драйверами (двоичные данные) — самый эффективный способ уменьшить размер .cf. Однако в «Рознице» механизм работы с торговым оборудованием построен на динамическом обращении к этим объектам. Выясним причину возможных сбоев:

Циклический перебор драйверов. В типовом функционале при открытии формы настроек торгового оборудования или при попытке подключения устройства код может сканировать все доступные макеты драйверов в конфигурации. Если в метаданных ссылка на макет осталась, а сам двоичный объект удален или поврежден, платформа выдаст исключение: Объект метаданных не найден.

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

Особенности пакетного обновления (Batch Mode)

Когда мы работаем с распределенной сетью без использования стандартного РИБ (Распределенной информационной базы), обновление часто происходит через командную строку. Рассмотрим нюансы использования команды /UpdateCfg и /LoadConfigFromFiles.

Раздувание таблицы Config. При частой полной загрузке конфигурации (особенно в файловых версиях .1CD, которые часто стоят в магазинах) таблица Config начинает быстро расти. Это происходит из-за того, что платформа не всегда эффективно очищает место после удаления старых версий объектов. Решение: В скрипт обновления обязательно нужно включать команду сжатия базы данных:


"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "ПутьКБазе" /N "Admin" /P "Pass" /CompactDataBase

Потеря конфигурации поставщика. Снятие с поддержки физически удаляет конфигурацию поставщика из файла базы данных. Это экономит место (база на диске может «похудеть» на 300–500 Мб), но делает невозможным использование .cfu (файлов обновлений). С этого момента вы обречены передавать только полные .cf, пусть и облегченные.

Контроль версий и кэширование

Проанализируем ситуацию с локальным кэшем на рабочих местах кассиров. При радикальном изменении размера конфигурации (с 900 до 100 Мб) кэш платформы на клиентских машинах часто ведет себя неадекватно. Возникают ошибки вида Ошибка при вызове метода контекста в самых неожиданных местах.

Важный момент: При каждом обновлении «облегченным» файлом на удаленных точках рекомендуется программно или через скрипт очищать содержимое папок в %AppData%\1C\1Cv8\. Это гарантирует, что платформа заново построит дерево объектов и не будет обращаться к адресам памяти, где раньше располагались тяжелые драйверы.

Альтернативные стратегии для слабых каналов

Если снятие с поддержки кажется слишком рискованным, рассмотрим другие варианты оптимизации:

Итоги и рекомендации

Снятие «1С:Розница» с поддержки для облегчения .cf — это рабочая стратегия для крупных сетей, но она требует высокой квалификации разработчика. Посмотрим на итоговый чек-лист:

  1. Проверьте модули БСП на предмет жестких проверок версий подсистем.
  2. Не удаляйте макеты драйверов полностью, просто очищайте их внутреннее содержимое.
  3. Автоматизируйте очистку кэша и сжатие базы данных (/CompactDataBase) на каждой точке после обновления.
  4. Используйте собственные реквизиты для контроля версий, так как типовой реквизит «Версия» может быть задействован в системных механизмах платформы.

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

← На главную