Расширение для создания собственных подсистем БСП

Публикация № 1322665

Разработка - БСП (Библиотека стандартных подсистем)

Подключаемые подсистемы своя подсистема БСП Обновление версии ИБ Описание изменений системы описание расширение в расширении

В этой статье поделюсь некоторыми изысканиями о внутреннем устройстве стандартной подсистемы "Обновление версии ИБ" и расскажу, как разработать свою подсистему, в которой будет работать отчёт с описанием изменений.

Стандартная подсистема "Обновление версии ИБ"

Вы наверняка видели подобный отчёт, который появляется в типовых конфигурациях после каждого обновления релиза.

Но вот, вы решили разработать свою собственную подсистему и хотите, чтобы она тоже сообщала пользователям о новых полезностях и вкусностях, которые вы в ней приготовили.

Что потребуется сделать, чтобы подключить свою подсистему?

Настроить общие модули

  • Создать общий модуль, аналог ОбновлениеИнформационнойБазы (можно скопировать его из демо БСП как основу)
  • Переписать под себя процедуру ПриДобавленииПодсистемы()
  • Добавить имя модуля в массив в процедуре ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем().

После этого БСП уже будет знать о вашей подсистеме.

Некоторые нюансы

Версионирование подсистемы необходимо вести по общим стандартам 1С: четыре числа, разделенные точками.

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

Подключить описание изменений

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

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

 
 Реализация обработчика формирования макета описания изменений

Но и этого будет недостаточно. Чтобы система поняла, что отчёт выводить нужно, требуется установить в Истина флаг ПоказатьОписаниеИзмененийСистемы в структуре параметров, которая заполняется в процедуре ОбщегоНазначенияПереопределяемый.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(), выглядеть это будет примерно так:

 
 Определение необходимости выводить макет с описанием изменений

Расширение "Подключаемые подсистемы"

Описание

Наименование: "Подключаемые подсистемы"

Формат поставки: файл расширения (*.cfe)

Разработано на платформе: 8.3.15.2107

Режим совместимости по умолчанию: 8.3.14

 

Расширение "Подключаемые подсистемы" предназначено для использования в качестве "каркаса" при разработке собственных подсистем. Поддерживается следующий функционал стандартных подсистем:

  • Версионирование подсистемы
  • Использование обработчиков обновления при переходе на новую версию (требуется запуск с ключом ЗапуститьОбновлениеИнформационнойБазы)
  • Вывод отчёта с описанием изменений для новых версий

Порядок внедрения

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

Описание параметров можно посмотреть в комментарии к функции.

В ходе эксплуатации

При выпуске каждой новой версии подсистемы, которую вы поддерживается, следует внести следующие изменения в общие объекты:

  • Поменять номер версии в функции Версия() общего модуля ОбновлениеИнформационнойБазыХхх;
  • Добавить новые области "ШапкаРР_ПП_ВВ_СС" и "ВерсияРР_ПП_ВВ_СС" (или с префиксами "префШапкаРР_ПП_ВВ_СС" и "префВерсияРР_ПП_ВВ_СС") и заполнить их;
  • При необходимости, добавить описание обработчиков обновления в процедуре ПриДобавленииОбработчиковОбновления().

Скачать файлы

Наименование Файл Версия Размер
Расширение "Подключаемые подсистемы" для 8.3.15 и выше

.cfe 31,26Kb
20.11.20
1
.cfe 1.0.1.3 31,26Kb 1 Скачать
Расширение-шаблон для новой подсистемы

.cfe 13,56Kb
18.11.20
0
.cfe 1.0.0.1 13,56Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dhurricane 21.11.20 13:29 Сейчас в теме
Чтобы обновление стартовала при запуске приложения без указания ключа "ЗапуститьОбновлениеИнформационнойБазы", можно поступить так:

1. Добавить в модуль своей подсистемы (ОбновлениеИнформационнойБазыХХХ) экспортный метод:
// Проверить необходимость обновления информационной базы при смене версии подсистемы.
//
Функция НеобходимоОбновлениеИнформационнойБазы() Экспорт
	
	ОписаниеПодсистемы = Новый Структура;
	ОписаниеПодсистемы.Вставить("Имя");
	ОписаниеПодсистемы.Вставить("Версия");
	ОписаниеПодсистемы.Вставить("ИдентификаторИнтернетПоддержки");
	ОписаниеПодсистемы.Вставить("ТребуемыеПодсистемы", Новый Массив);
	ОписаниеПодсистемы.Вставить("РежимВыполненияОтложенныхОбработчиков");
	
	ПриДобавленииПодсистемы(ОписаниеПодсистемы);
	
	Если ОбновлениеИнформационнойБазыСлужебный.НеобходимоВыполнитьОбновление(
			ОписаниеПодсистемы.Версия, ОбновлениеИнформационнойБазыСлужебный.ВерсияИБ(ОписаниеПодсистемы.Имя)) Тогда
		Возврат Истина;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции
Показать

2. Расширить типовой метод "НеобходимоОбновлениеИнформационнойБазы" общего модуля "ОбновлениеИнформационнойБазыСлужебныйПовтИсп" следующим образом:
&Вместо("НеобходимоОбновлениеИнформационнойБазы")
Функция Расш1_НеобходимоОбновлениеИнформационнойБазы() Экспорт
	
	Возврат ОбновлениеИнформационнойБазыХХХ.НеобходимоОбновлениеИнформационнойБазы()
		Или ПродолжитьВызов();
	
КонецФункции
alevnev; stas_ganiev; JohnyDeath; Cmapnep; +4 Ответить
2. sytkosa 119 21.11.20 18:48 Сейчас в теме
((0) Без кода из комментарии (0) картинка не полная. Автор выпустите обновление
stas_ganiev; Cmapnep; +2 Ответить
3. stas_ganiev 1363 23.11.20 01:11 Сейчас в теме
(1)
(2)
Спасибо за совет! Коррективы внесу в ближайшее время, вместе с выходом следующей версии ))
4. sergvagner2018 02.12.20 15:44 Сейчас в теме
(0) Полезно. Положил в избранное
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    105619    99    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4507    7    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    5612    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8311    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    272232    Evil Beaver    271    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    29727    5    CheBurator    63