Обновление Библиотеки стандартных подсистем (БСП) в сильно кастомизированных или значительно устаревших конфигурациях, таких как Управление торговлей 11.1, представляет собой сложную инженерную задачу. Обычное сравнение и объединение конфигураций в данном случае не сработает «из коробки» из-за колоссального архитектурного разрыва между версиями. Рассмотрим подробно, с какими трудностями придется столкнуться и как правильно выстроить процесс обновления, чтобы система осталась работоспособной.
Разберем причину, по которой при запуске системы после объединения возникают ошибки отсутствия процедур и функций. В современных версиях БСП (начиная с 3.0 и выше) произошел глобальный рефакторинг. Разработчики 1С перенесли значительную часть программного интерфейса (API) из публичных общих модулей во внутренние (служебные) модули. Кроме того, изменились сигнатуры многих функций: состав и типы передаваемых параметров стали иными.
Проанализируем ситуацию: код основной конфигурации УТ 11.1 по-прежнему обращается к модулям типа ОбщегоНазначения или ОбменДаннымиСервер, ожидая найти там функции, которые в новой БСП либо удалены, либо переименованы, либо объявлены как служебные. Для решения этой проблемы мы можем применить метод «заглушек» или «оберток». Если старый код ищет функцию в модуле ОбщегоНазначения, которой там больше нет, нам придется вручную прописать эту функцию в старом модуле, чтобы она перенаправляла вызов в новый служебный модуль БСП. Выглядеть это может примерно так:
Процедура СтараяПроцедураИзУТ11(Параметр1, Параметр2) Экспорт
// Перенаправляем вызов в новый служебный модуль БСП
БСПСлужебныйМодуль.НоваяПроцедура(Параметр1, Параметр2);
КонецПроцедуры
Перед тем как приступать к объединению, крайне важно выполнить предварительную проверку. Рассмотрим инструменты, которые предлагает сама библиотека. В дистрибутиве БСП всегда присутствует обработка «Помощник первого внедрения». Несмотря на то что в УТ 11.1 БСП уже встроена, эту обработку необходимо запустить. Она позволит нам визуализировать дерево зависимостей подсистем.
Выясним причину, почему нельзя обновить только одну подсистему (например, «Обмен данными»). Данная подсистема тесно связана с другими блоками. Для корректной работы обмена вам почти наверняка придется обновить:
При выполнении сравнения и объединения важно помнить, что 1С:Предприятие не умеет автоматически объединять некоторые критически важные модули. Рассмотрим шаги, которые необходимо выполнить вручную:
Модуль сеанса и модуль управляемого приложения: Эти модули нужно открывать в демо-базе БСП и в вашей рабочей базе, после чего вручную копировать вызовы процедур БСП. Например, в УстановкаПараметровСеанса должны быть добавлены вызовы инициализации новых подсистем. Если этого не сделать, при запуске вы получите неочевидные ошибки прав доступа или неопределенных параметров сеанса.
Переопределяемые модули: Это «точки входа» конфигурации в механизмы БСП. При обновлении нельзя просто заместить их код. Нам нужно проанализировать содержание модулей типа ОбменДаннымиПереопределяемый. Сначала мы обновляем их до версии БСП, а затем аккуратно возвращаем специфику УТ 11.1, адаптируя её под новые параметры процедур.
Если основной целью обновления является поддержка нового формата обмена с Бухгалтерией предприятия 3.0, то одних правок кода БСП будет недостаточно. Логика формирования XML или JSON структуры обмена жестко завязана на XDTO-пакеты в дереве метаданных.
Разберем по шагам, что нужно сделать:
EnterpriseData (например, версия 1.0.1).Многие разработчики игнорируют файлы, идущие в комплекте с дистрибутивом, однако файл UpdateBSP.htm является ключевым. Он находится в папке Docs дистрибутива БСП. Проанализируем, как с ним работать:
Если вы прыгаете через несколько версий (например, с БСП 2.2 на 3.1), вам нужно изучить инструкции ко всем промежуточным релизам. Разработчики описывают изменения только относительно предыдущей версии. В этих инструкциях четко указано: «Процедура Х переименована в Y», «Параметр Z больше не используется». Без этого списка вы будете тратить часы на поиск причин ошибок в отладчике.
Иногда полное обновление всей БСП в старой конфигурации обходится дороже, чем разработка обмена с нуля. Рассмотрим альтернативный вариант — бэкпорт. Вместо того чтобы перекраивать всё ядро УТ 11.1, мы можем локально внедрить только нужный нам функционал.
Например, если нам нужен только экспорт в EnterpriseData новой версии, мы можем создать внешнюю обработку или добавить в конфигурацию новый модуль, который будет содержать логику формирования сообщения обмена, скопированную из новой БСП, но адаптированную под текущие реалии УТ 11.1. Это позволит избежать массовых ошибок во всех остальных частях программы, которые даже не касаются обмена данными.
Важное замечание по платформе: Обратите внимание, что новые версии БСП требуют актуальной платформы 1С:Предприятие (обычно 8.3.14, 8.3.17 и выше). Если ваша УТ 11.1 до сих пор работает на платформе 8.3.6 или 8.3.8, то после обновления кода БСП конфигурация просто не запустится из-за использования конструкций языка, которые старая платформа не поддерживает (например, новые методы работы со строками или расширенные параметры фоновых заданий).
Подводя итог, можно сказать, что обновление БСП в УТ 11.1 — это не автоматический процесс, а кропотливая ручная работа. Мы рассмотрели основные «подводные камни»: от рефакторинга модулей до необходимости обновления XDTO-пакетов. Помните, что каждое изменение требует тщательного тестирования, особенно в части переопределяемых модулей и процедур обновления информационной базы. Если объем правок кажется чрезмерным, всегда стоит рассмотреть вариант использования внешних правил обмена (через «Универсальный обмен данными в формате XML»), которые могут работать в обход механизмов БСП.