ОбновитьСоставыГруппВнешнихПользователей (БСП)

Автор: 1С
ОбщийМодуль.ПользователиСлужебный
БСП

Обновить составы групп внешних пользователей. Обновляет составы внешних пользователей у групп внешних пользователей

// Обновляет составы внешних пользователей у групп внешних пользователей
// с учетом иерархии в регистре сведений "Составы групп пользователей".
//  Данные используются в форме списка и форме выбора внешних пользователей.
//  Данные могут быть использованы в целях для повышения производительности,
// так как не требуется работать с иерархией на языке запросов.
//
// Параметры:
//  ГруппаВнешнихПользователей - СправочникСсылка.ГруппыВнешнихПользователей
//                        Когда указана группа ВсеВнешниеПользователи обновляются также все
//                        автоматические группы внешних пользователей по типам объектов авторизации.
//
//  ВнешнийПользователь - Неопределено - для всех внешних пользователей.
//                      - Массив значений СправочникСсылка.ВнешниеПользователи - для указанных
//                          внешних пользователей.
//                      - СправочникСсылка.ВнешниеПользователи - для указанного внешнего пользователя.
//
//  УчастникиИзменений  - Неопределено - никаких действий.
//                      - Массив (возвращаемое значение) - заполняет массив внешними
//                        пользователями для которых есть изменения.
//
//  ИзмененныеГруппы   - Неопределено - никаких действий.
//                     - Массив (возвращаемое значение) - заполняет массив группами внешних
//                       пользователей для которых есть изменения.
//
Процедура ОбновитьСоставыГруппВнешнихПользователей(Знач ГруппаВнешнихПользователей,
                                                   Знач ВнешнийПользователь = Неопределено,
                                                   Знач УчастникиИзменений  = Неопределено,
                                                   Знач ИзмененныеГруппы    = Неопределено) Экспорт
	
	Если НЕ ЗначениеЗаполнено(ГруппаВнешнихПользователей) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(ВнешнийПользователь) = Тип("Массив") И ВнешнийПользователь.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если УчастникиИзменений = Неопределено Тогда
		ТекущиеУчастникиИзменений = Новый Соответствие;
	Иначе
		ТекущиеУчастникиИзменений = УчастникиИзменений;
	КонецЕсли;
	
	Если ИзмененныеГруппы = Неопределено Тогда
		ТекущиеИзмененныеГруппы = Новый Соответствие;
	Иначе
		ТекущиеИзмененныеГруппы = ИзмененныеГруппы;
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Истина);
	
	НачатьТранзакцию();
	Попытка
		Если ГруппаВнешнихПользователей = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда
			
			ОбновитьСоставГруппыВсеПользователи(
				ВнешнийПользователь, Истина, ТекущиеУчастникиИзменений, ТекущиеИзмененныеГруппы);
			
			ОбновитьСоставыГруппПоТипамОбъектовАвторизации(
				Неопределено, ВнешнийПользователь, ТекущиеУчастникиИзменений, ТекущиеИзмененныеГруппы);
			
		Иначе
			ВсеОбъектыАвторизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаВнешнихПользователей,
				"ВсеОбъектыАвторизации");
			ВсеОбъектыАвторизации = ?(ВсеОбъектыАвторизации = Неопределено, Ложь, ВсеОбъектыАвторизации);
			
			Если ВсеОбъектыАвторизации Тогда
				ОбновитьСоставыГруппПоТипамОбъектовАвторизации(
					ГруппаВнешнихПользователей,
					ВнешнийПользователь,
					ТекущиеУчастникиИзменений,
					ТекущиеИзмененныеГруппы);
			Иначе
				ОбновитьСоставыИерархическихГруппПользователей(
					ГруппаВнешнихПользователей,
					ВнешнийПользователь,
					ТекущиеУчастникиИзменений,
					ТекущиеИзмененныеГруппы);
			КонецЕсли;
		КонецЕсли;
		
		Если УчастникиИзменений = Неопределено
		   И ИзмененныеГруппы   = Неопределено Тогда
			
			ПослеОбновленияСоставовГруппВнешнихПользователей(
				ТекущиеУчастникиИзменений, ТекущиеИзмененныеГруппы);
		КонецЕсли;
		
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

ОбновитьСоставыГруппПользователей (БСП)

ПослеОбновленияСоставовГруппВнешнихПользователей (БСП)

ОбновитьИспользуемостьСоставовГруппПользователей (БСП)

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

ПослеОбновленияСоставовГруппПользователей (БСП)

ОбновитьПользователейГруппИсполнителей (БСП)

ЗаполнитьНомераКартинокПользователей (БСП)

1С Менеджер конфигураций