Добавить разрешение. Записывает в регистр разрешение.
// Записывает в регистр разрешение.
//
// Параметры:
// ТипПрограммногоМодуля - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// ИдентификаторПрограммногоМодуля - УникальныйИдентификатор,
// ТипВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// ИдентификаторВладельца - УникальныйИдентификатор,
// КлючРазрешения - Строка - ключ разрешения,
// Разрешение - ОбъектXDTO - XDTO-представление разрешения,
// ДополнениеРазрешения - Произвольный (сериализуемый в XDTO).
//
Процедура ДобавитьРазрешение(Знач ТипПрограммногоМодуля, Знач ИдентификаторПрограммногоМодуля, Знач ТипВладельца, Знач ИдентификаторВладельца, Знач КлючРазрешения, Знач Разрешение, Знач ДополнениеРазрешения = Неопределено) Экспорт
Если ОбщегоНазначения.РазделениеВключено() Тогда
Регистр = РегистрыСведений.РазрешенияНаИспользованиеВнешнихРесурсовОбластейДанных;
Иначе
Регистр = РегистрыСведений.РазрешенияНаИспользованиеВнешнихРесурсовВМоделиСервиса;
КонецЕсли;
Менеджер = Регистр.СоздатьМенеджерЗаписи();
Менеджер.ТипПрограммногоМодуля = ТипПрограммногоМодуля;
Менеджер.ИдентификаторПрограммногоМодуля = ИдентификаторПрограммногоМодуля;
Менеджер.ТипВладельца = ТипВладельца;
Менеджер.ИдентификаторВладельца = ИдентификаторВладельца;
Менеджер.КлючРазрешения = КлючРазрешения;
Менеджер.Прочитать();
Если Менеджер.Выбран() Тогда
ВызватьИсключение СтрШаблон(
НСтр("ru = 'Дублирование разрешений по ключевым полям:
|- ТипПрограммногоМодуля: %1
|- ИдентификаторПрограммногоМодуля: %2
|- ТипВладельца: %3
|- ИдентификаторВладельца: %4
|- КлючРазрешения: %5.'"),
Строка(ТипПрограммногоМодуля),
Строка(ИдентификаторПрограммногоМодуля),
Строка(ТипВладельца),
Строка(ИдентификаторВладельца),
КлючРазрешения);
Иначе
Менеджер.ТипПрограммногоМодуля = ТипПрограммногоМодуля;
Менеджер.ИдентификаторПрограммногоМодуля = ИдентификаторПрограммногоМодуля;
Менеджер.ТипВладельца = ТипВладельца;
Менеджер.ИдентификаторВладельца = ИдентификаторВладельца;
Менеджер.КлючРазрешения = КлючРазрешения;
Менеджер.ТелоРазрешения = ОбщегоНазначения.ОбъектXDTOВСтрокуXML(Разрешение);
Менеджер.Записать(Ложь);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)