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