При формировании манифеста конфигурации. Вызывается при формировании манифеста конфигурации.
// Вызывается при формировании манифеста конфигурации.
//
// Параметры:
// РасширенныеСведения - Массив, внутри процедуры обработчика в данный массив требуется
// добавить объекты типа ОбъектXDTO с ТипомXDTO, унаследованным от
// {http://www.1c.ru/1cFresh/Application/Manifest/a.b.c.d}ExtendedInfoItem.
//
Процедура ПриФормированииМанифестаКонфигурации(РасширенныеСведения) Экспорт
Если ТранзакцияАктивна() Тогда
ВызватьИсключение НСтр("ru = 'Операция не может быть выполнена при активной внешней транзакции!'");
КонецЕсли;
ВызовВНеразделеннойИБ = Не ОбщегоНазначения.РазделениеВключено();
НачатьТранзакцию();
Попытка
ОписаниеРазрешений = ФабрикаXDTO.Создать(
ФабрикаXDTO.Тип("http://www.1c.ru/1cFresh/Application/Permissions/Manifes/1.0.0.1", "RequiredPermissions")
);
ОписаниеВнешнихКомпонент = ФабрикаXDTO.Создать(
ФабрикаXDTO.Тип("http://www.1c.ru/1cFresh/Application/Permissions/Manifes/1.0.0.1", "Addins")
);
МакетыВнешнихКомпонент = Новый Соответствие();
ИспользоватьРазделениеПоОбластямДанных = Константы.ИспользоватьРазделениеПоОбластямДанных.Получить();
ОтключитьРазделениеПоОбластямДанных = Ложь;
Если ВызовВНеразделеннойИБ Тогда
Если НЕ ИспользоватьРазделениеПоОбластямДанных Тогда
Константы.ИспользоватьРазделениеПоОбластямДанных.Установить(Истина);
ОтключитьРазделениеПоОбластямДанных = Истина;
КонецЕсли;
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли;
Константы.ИспользуютсяПрофилиБезопасности.Установить(Истина);
Константы.АвтоматическиНастраиватьРазрешенияВПрофиляхБезопасности.Установить(Истина);
ИдентификаторыЗапросов = РаботаВБезопасномРежиме.ЗапросыОбновленияРазрешенийКонфигурации();
МенеджерПрименения = РаботаВБезопасномРежимеСлужебныйВМоделиСервиса.МенеджерПримененияРазрешений(ИдентификаторыЗапросов);
Дельта = МенеджерПрименения.ДельтаБезУчетаВладельцев();
МакетыВнешнихКомпонент = Новый Массив();
Для Каждого ЭлементДельты Из Дельта.Добавляемые Цикл
Для Каждого КлючИЗначение Из ЭлементДельты.Разрешения Цикл
Разрешение = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(КлючИЗначение.Значение);
ОписаниеРазрешений.Permission.Добавить(Разрешение);
Если Разрешение.Тип() = ФабрикаXDTO.Тип("http://www.1c.ru/1cFresh/Application/Permissions/1.0.0.1", "AttachAddin") Тогда
МакетыВнешнихКомпонент.Добавить(Разрешение.TemplateName);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для Каждого ИмяМакета Из МакетыВнешнихКомпонент Цикл
ОписаниеВнешнейКомпоненты = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.1c.ru/1cFresh/Application/Permissions/Manifes/1.0.0.1", "AddinBundle"));
ОписаниеВнешнейКомпоненты.TemplateName = ИмяМакета;
ОписанияФайлов = РаботаВБезопасномРежиме.КонтрольныеСуммыФайловКомплектаВнешнейКомпоненты(ИмяМакета);
Для Каждого КлючИЗначение Из ОписанияФайлов Цикл
ОписаниеФайла = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.1c.ru/1cFresh/Application/Permissions/Manifes/1.0.0.1", "AddinFile"));
ОписаниеФайла.FileName = КлючИЗначение.Ключ;
ОписаниеФайла.Hash = КлючИЗначение.Значение;
ОписаниеВнешнейКомпоненты.Files.Добавить(ОписаниеФайла);
КонецЦикла;
ОписаниеВнешнихКомпонент.Bundles.Добавить(ОписаниеВнешнейКомпоненты);
КонецЦикла;
РасширенныеСведения.Добавить(ОписаниеРазрешений);
РасширенныеСведения.Добавить(ОписаниеВнешнихКомпонент);
Если ОтключитьРазделениеПоОбластямДанных Тогда
Константы.ИспользоватьРазделениеПоОбластямДанных.Установить(Ложь);
КонецЕсли;
Исключение
ОтменитьТранзакцию();
Если ВызовВНеразделеннойИБ Тогда
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
ОтменитьТранзакцию();
Если ВызовВНеразделеннойИБ Тогда
ОбновитьПовторноИспользуемыеЗначения();
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
СформироватьМанифестКонфигурации (БСП)
ПоместитьМанифестКонфигурацииВоВременноеХранилище (БСП)
ПриФормированииСпискаУслуг (БСП)
ПриОпределенииКомандПодключенныхКОбъекту (БСП)
МанифестНеВерногоФормата (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)