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