ДобавитьРазрешение (БСП)

Автор: 1С
ОбщийМодуль.РаботаВБезопасномРежимеСлужебныйВМоделиСервиса
БСП

Добавить разрешение. Записывает в регистр разрешение.

// Записывает в регистр разрешение.
//
// Параметры:
//  ТипПрограммногоМодуля - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
//  ИдентификаторПрограммногоМодуля - УникальныйИдентификатор,
//  ТипВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
//  ИдентификаторВладельца - УникальныйИдентификатор,
//  КлючРазрешения - Строка - ключ разрешения,
//  Разрешение - Объект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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ДобавитьОбъектВФильтрРазрешенныхОбъектов (БСП)

Добавить (БСП)

УдалитьРазрешение (БСП)

Разрешения (БСП)

TurboConf 6 - расширение Конфигуратора 1С