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