Менеджер применения разрешений. Создает и инициализирует менеджер применения запросов на использование внешних ресурсов.
// Создает и инициализирует менеджер применения запросов на использование внешних ресурсов.
//
// Параметры:
// ИдентификаторыЗапросов - Массив(УникальныйИдентификатор) - идентификаторы запросов, для
// применения которых создается менеджер.
//
// Возвращаемое значение: ОбработкаОбъект.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.
//
Функция МенеджерПримененияРазрешений(Знач ИдентификаторыЗапросов) Экспорт
Менеджер = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсовВМоделиСервиса.Создать();
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Регистр = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсовОбластейДанных;
Иначе
Регистр = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсовВМоделиСервиса;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Запросы.ТипПрограммногоМодуля,
| Запросы.ИдентификаторПрограммногоМодуля,
| Запросы.ТипВладельца,
| Запросы.ИдентификаторВладельца,
| Запросы.РежимЗамещения,
| Запросы.ДобавляемыеРазрешения,
| Запросы.УдаляемыеРазрешения,
| Запросы.ИдентификаторЗапроса
|ИЗ
| [Таблица] КАК Запросы
|ГДЕ
| Запросы.ИдентификаторЗапроса В(&ИдентификаторыЗапросов)";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[Таблица]", Регистр.СоздатьНаборЗаписей().Метаданные().ПолноеИмя());
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ИдентификаторыЗапросов", ИдентификаторыЗапросов);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
КлючЗаписи = Регистр.СоздатьКлючЗаписи(Новый Структура("ИдентификаторЗапроса", Выборка.ИдентификаторЗапроса));
ЗаблокироватьДанныеДляРедактирования(КлючЗаписи);
ДобавляемыеРазрешения = Новый Массив();
Если ЗначениеЗаполнено(Выборка.ДобавляемыеРазрешения) Тогда
Массив = ОбщегоНазначения.ЗначениеИзСтрокиXML(Выборка.ДобавляемыеРазрешения);
Для Каждого ЭлементМассива Из Массив Цикл
ДобавляемыеРазрешения.Добавить(ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(ЭлементМассива));
КонецЦикла;
КонецЕсли;
УдаляемыеРазрешения = Новый Массив();
Если ЗначениеЗаполнено(Выборка.УдаляемыеРазрешения) Тогда
Массив = ОбщегоНазначения.ЗначениеИзСтрокиXML(Выборка.УдаляемыеРазрешения);
Для Каждого ЭлементМассива Из Массив Цикл
УдаляемыеРазрешения.Добавить(ОбщегоНазначения.Объект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К участников)