ДобавитьНаборыЗначенийДоступа (БСП)

Автор: 1С
ОбщийМодуль.УправлениеДоступом
БСП

Добавить наборы значений доступа. Позволяет добавить к одной таблице наборов значений доступа другую таблицу

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

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

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

ЗаполнитьНаборыЗначенийДоступа (БСП)

ОбновитьНаборыЗначенийДоступа (БСП)

ВозможноЗаполнитьНаборыЗначенийДоступа (БСП)

ПриИзмененииНаборовЗначенийДоступа (БСП)

ПриЗаполненииНаборовЗначенийДоступа (БСП)

ПолучитьНаборыЗначенийДоступаТабличнойЧасти (БСП)

TurboConf ИР адаптер 2.63