Стандартная подсистема "Обновление версии ИБ"
Вы наверняка видели подобный отчёт, который появляется в типовых конфигурациях после каждого обновления релиза.
Но вот, вы решили разработать свою собственную подсистему и хотите, чтобы она тоже сообщала пользователям о новых полезностях и вкусностях, которые вы в ней приготовили.
Что потребуется сделать, чтобы подключить свою подсистему?
Настроить общие модули
- Создать общий модуль, аналог ОбновлениеИнформационнойБазы (можно скопировать его из демо БСП как основу)
- Переписать под себя процедуру ПриДобавленииПодсистемы()
- Добавить имя модуля в массив в процедуре ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем().
После этого БСП уже будет знать о вашей подсистеме.
Некоторые нюансы
Версионирование подсистемы необходимо вести по общим стандартам 1С: четыре числа, разделенные точками.
Обработчики обновления. В процедуре ПриДобавленииОбработчиковОбновления() можно прописывать обработчики для своей подсистемы по общим правилам. Правда, для их запуска просто обновления и запуска ИБ теперь будет недостаточно, придётся запустить режим 1С: Предприятие с ключом ЗапуститьОбновлениеИнформационнойБазы. По умолчанию, при увеличении версии, обработчики обновления запускаются только для основной конфигурации.
Подключить описание изменений
В общем модуле ОбновлениеИнформационнойБазыХхх есть обработчик ПриПодготовкеМакетаОписанияОбновлений(), который предназначен для доопределения макета с описанием изменений для новых версий (да, я капитан очевидность :)). Однако, примеров его реализации вы не найдёте ни в демо БСП, ни в каком-либо типовом решении.
За примером обратимся к алгоритму формирования макета для основной конфигурации. Главная часть процедуры лежит в общей форме ОписаниеИзмененийПрограммы, в процедуре ПриСозданииНаСервере(). В качестве вспомогательных процедур и функций используются, в основном, методы общего модуля ОбновлениеИнформационнойБазыСлужебный. Если взять нужный кусок кода и немного допилить под себя, то получится примерно следующее (сопутствующие процедуры и функции см. в ОбновлениеИнформационнойБазыСлужебный, их также частично подгоняем под нашу подсистему, чтобы не трогать объекты поставщика):
Но и этого будет недостаточно. Чтобы система поняла, что отчёт выводить нужно, требуется установить в Истина флаг ПоказатьОписаниеИзмененийСистемы в структуре параметров, которая заполняется в процедуре ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(), выглядеть это будет примерно так:
Расширение "Подключаемые подсистемы"
Описание
Наименование: "Подключаемые подсистемы"
Формат поставки: файл расширения (*.cfe)
Разработано на платформе: 8.3.15.2107
Режим совместимости по умолчанию: 8.3.14
Расширение "Подключаемые подсистемы" предназначено для использования в качестве "каркаса" при разработке собственных подсистем. Поддерживается следующий функционал стандартных подсистем:
- Версионирование подсистемы
- Использование обработчиков обновления при переходе на новую версию (требуется запуск с ключом ЗапуститьОбновлениеИнформационнойБазы)
- Вывод отчёта с описанием изменений для новых версий
Порядок внедрения
- Установить расширение "Подключаемые подсистемы"
- Создать базовые объекты для новой подсистемы. Здесь возможны три варианта действий:
- Использовать готовый шаблон из комплекта поставки. Для этого достаточно установить второе расширение "Новая подсистема" и поменять на своё название "новая подсистема" в модулях;
- Создать расширение самостоятельно. В новом расширении следует предусмотреть следующие объекты:
- Общий модуль - аналог ОбновлениеИнформационнойБазы. Первично код можно скопировать из общего модуля пп_ОбновлениеИнформационнойБазы "Подключаемых подсистем";
- Заимствуем из основной конфигурации процедуры ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске() и ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсисте() и реализуем их содержание, руководствуясь примером;
- Общий макет - аналог ОписаниеИзмененийПодсистемы. Требуется, если описание будет поддерживаться в отдельном макете. Если же описания всех ваших подсистем будет содержаться в одном общем макете пп_ОписаниеИзмененийПодсистемы, тогда для каждой их них в параметре ПрефиксИменОбластейМакета (см. следующий пункт) нужно указать персональные префиксы, которыми будут отличаться имена областей "ШапкаРР_ПП_ВВ_СС" и "ВерсияРР_ПП_ВВ_СС" в макете описания.
- Реализовать всё в одном расширении. Тогда в расширении "Подключаемые подсистемы" добавляем все объекты, перечисленные в предыдущем пункте, либо путем сравнения/объединения добавляем их из шаблона "Новая подсистема".
- Заполнить описание своей подсистемы в функциях Версия() и ПараметрыПодсистемы(). Пример реализации:
Описание параметров можно посмотреть в комментарии к функции.
В ходе эксплуатации
При выпуске каждой новой версии подсистемы, которую вы поддерживается, следует внести следующие изменения в общие объекты:
- Поменять номер версии в функции Версия() общего модуля ОбновлениеИнформационнойБазыХхх;
- Добавить новые области "ШапкаРР_ПП_ВВ_СС" и "ВерсияРР_ПП_ВВ_СС" (или с префиксами "префШапкаРР_ПП_ВВ_СС" и "префВерсияРР_ПП_ВВ_СС") и заполнить их;
- При необходимости, добавить описание обработчиков обновления в процедуре ПриДобавленииОбработчиковОбновления().