Как организовать версионирование собственных доработок в конфигурациях на базе БСП?

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

При активной доработке типовых конфигураций, таких как Управление торговлей 11, ERP или Комплексная автоматизация, программисты часто сталкиваются с необходимостью управления жизненным циклом своих изменений. Просто внести код недостаточно — нужно информировать пользователей о новых функциях, корректно изменять структуру данных при обновлении и отслеживать текущую версию внедренных доработок. Библиотека стандартных подсистем (БСП) предоставляет для этого мощный механизм, который часто недооценивают.

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

Основа механизма: Свойство Версия и регистрация подсистемы

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

Чтобы БСП начала учитывать ваши изменения, мы должны зарегистрировать свою «виртуальную» или реальную подсистему. Рассмотрим шаги по регистрации:

  1. Находим в дереве метаданных общий модуль ПодсистемыКонфигурацииПереопределяемый.
  2. В процедуре ПриДобавленииПодсистем необходимо добавить описание вашей новой подсистемы.

Проанализируем пример кода для регистрации:


Процедура ПриДобавленииПодсистем(СписокПодсистем)
    
    Описание = СписокПодсистем.Добавить();
    Описание.Имя = "МоиДоработки";
    Описание.Версия = "1.0.2.15"; // Текущая версия ваших изменений
    Описание.Основная = Ложь;
    
КонецПроцедуры

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

Создание обработчиков обновления

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

Нам потребуется создать собственный общий модуль, например, _ОбновлениеИнформационнойБазы (префикс подчеркивания помогает отделить свои объекты). В этом модуле должна быть процедура, которая передает сведения об обработчиках в БСП.

Пример регистрации обработчика для конкретной версии:


Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
    
    Обработчик = Обработчики.Добавить();
    Обработчик.Версия = "1.0.2.15";
    Обработчик.Процедура = "_ОбновлениеИнформационнойБазы.ЗаполнитьНовыеРеквизиты";
    Обработчик.ВыполнятьВСеансеАдминистрирования = Истина;
    
КонецПроцедуры

Теперь рассмотрим саму процедуру обновления. Она должна находиться в вашем модуле и иметь соответствующую структуру:


Процедура ЗаполнитьНовыеРеквизиты() Экспорт
    // Здесь пишем логику обработки данных
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        // Обработка данных
    КонецЦикла;
КонецПроцедуры

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

Вывод информации «Что нового» для пользователей

Чтобы пользователи понимали, что именно изменилось в ваших доработках, проанализируем механизм Release Notes. БСП умеет собирать данные из макетов ОписаниеИзмененийСистемы.

Для реализации этого функционала:

  1. Создайте в своей подсистеме макет с типом HTML-документ.
  2. Назовите его О_ОписаниеИзмененийСистемы.
  3. Внутри макета опишите изменения, используя стандартные HTML-теги.

При запуске после обновления версии, система сравнит номер версии и покажет пользователю окно с текстом из этого макета. Это позволяет профессионально презентовать результаты работы программиста заказчику или конечным пользователям.

Особенности работы с расширениями

Если ваши доработки вынесены в расширение (что является стандартом для современных версий УТ 11), процесс выглядит еще изящнее. В последних версиях БСП расширения могут иметь собственный жизненный цикл.

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

Принудительный запуск и отладка

Иногда при разработке нам нужно «прогнать» обновление несколько раз. Рассмотрим, как это сделать:

Использование штатных механизмов БСП для версионирования своих доработок — это признак высокого качества разработки. Это гарантирует, что ваши данные всегда будут в актуальном состоянии, а пользователи будут вовремя узнавать о новых возможностях системы.

← На главную