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

20.11.20

Разработка - Инструментарий разработчика

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширение "Подключаемые подсистемы" для 8.3.15 и выше
.cfe 31,26Kb ver:1.0.1.3
44 1 850 руб. Купить
Расширение-шаблон для новой подсистемы
.cfe 13,56Kb ver:1.0.0.1
23 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Описание

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

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

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

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

 

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    213050    1165    413    

1049

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    40531    222    115    

211

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

16000 руб.

10.11.2023    18801    76    39    

92

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    26536    67    30    

96

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

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

9500 руб.

17.05.2024    37634    134    55    

176

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    3993    8    10    

14

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    3677    7    0    

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

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

2. Расширить типовой метод "НеобходимоОбновлениеИнформационнойБазы" общего модуля "ОбновлениеИнформационнойБазыСлужебныйПовтИсп" следующим образом:
&Вместо("НеобходимоОбновлениеИнформационнойБазы")
Функция Расш1_НеобходимоОбновлениеИнформационнойБазы() Экспорт
	
	Возврат ОбновлениеИнформационнойБазыХХХ.НеобходимоОбновлениеИнформационнойБазы()
		Или ПродолжитьВызов();
	
КонецФункции
axsebur; Evg-Lylyk; begemot; user1444415; LosevI; VKislitsin; alevnev; stas_ganiev; JohnyDeath; Cmapnep; +10 Ответить
7. axsebur 5 27.08.24 18:44 Сейчас в теме
(1) Нет ли возможности вызывать обновление только своей подсистемы без всех остальных?
8. dhurricane 28.08.24 09:44 Сейчас в теме
(7) Про такую возможность не знаю.
9. stas_ganiev 1831 29.08.24 11:58 Сейчас в теме
(7) Силами типовых возможностей нет, только дорабатывать собственные вызовы необходимых обработчиков.
2. sytkosa 119 21.11.20 18:48 Сейчас в теме
((0) Без кода из комментарии (0) картинка не полная. Автор выпустите обновление
stas_ganiev; Cmapnep; +2 Ответить
3. stas_ganiev 1831 23.11.20 01:11 Сейчас в теме
(1)
(2)
Спасибо за совет! Коррективы внесу в ближайшее время, вместе с выходом следующей версии ))
4. sergvagner2018 02.12.20 15:44 Сейчас в теме
(0) Полезно. Положил в избранное
5. vat-74 167 16.11.21 10:23 Сейчас в теме
Если подсистема установлено в единственное расширение, то отрабатывается хорошо. А если таких расширений больше, тогда возникает конфликт внутренних идентификаторов.
6. vat-74 167 16.11.21 12:48 Сейчас в теме
(5) Решил проблему копипастом.
10. user743704 9 15.01.25 17:56 Сейчас в теме
Спасибо, работает. Но не могу добиться правильной работы в случае, если это подчиненная система заимствованной подсистемы основной конфигурации. В этом случае не создается запись в справочнике "ИдентификаторыОбъектовРасширений" и конфигурация начинает работать некорректно. Не подскажите как решить эту проблему ?
Для отправки сообщения требуется регистрация/авторизация