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