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