&Перед("ОбновитьРолиПользователейИБ")
//
https://github.com/SeiOkami/OneS/issues/223Процедура зршОбновитьРолиПользователейИБ(ОбновляемыеПользователиИБ, ПарольПользователяСервиса)
МассивПользователей = Новый Массив;
Для Каждого ОписаниеПользователя Из ОбновляемыеПользователиИБ Цикл
МассивПользователей.Добавить(ОписаниеПользователя.Ключ);
КонецЦикла;
//zti { Yasnovidyashii [16.10.2024]
//НовыеРолиПользователей = ТекущиеСвойстваПользователей(МассивПользователей).РолиПользователей;
СвойстваПользователей = ТекущиеСвойстваПользователей(МассивПользователей);
НовыеРолиПользователей = СвойстваПользователей.РолиПользователей;
Если СвойстваПользователей.Свойство("ИменаРолей") <> Неопределено Тогда
ИменаРолей = СвойстваПользователей.ИменаРолей;
Для Каждого НоваяРольПользователей Из НовыеРолиПользователей Цикл
НоваяРольПользователей.Роль = ИменаРолей[НоваяРольПользователей.РольСсылка];
КонецЦикла;
КонецЕсли;
//zti } Yasnovidyashii [16.10.2024]
УдалитьОбновлениеПользователей = Новый Массив;
Для Каждого ОписаниеПользователя Из ОбновляемыеПользователиИБ Цикл
РолиДляУдаления = ОписаниеПользователя.Значение.РолиДляУдаления;
Отбор = Новый Структура("Пользователь", ОписаниеПользователя.Значение.ПользовательСсылка);
НовыеРоли = НовыеРолиПользователей.Скопировать(НовыеРолиПользователей.НайтиСтроки(Отбор), "Роль, РольСсылка");
ОтменитьУдалениеРолей = Новый Массив;
Для Каждого КлючИЗначение Из РолиДляУдаления Цикл
Если ТипЗнч(КлючИЗначение.Значение) = Тип("ОбъектМетаданных") Тогда
Роль = КлючИЗначение.Значение;
Иначе
Роль = Метаданные.Роли[КлючИЗначение.Ключ];
КонецЕсли;
Расширение = Роль.РасширениеКонфигурации();
Если Истина
И Расширение <> Неопределено
И НовыеРоли.Найти(Роль.Имя, "Роль") <> Неопределено
Тогда
ОтменитьУдалениеРолей.Добавить(КлючИЗначение.Ключ);
КонецЕсли;
КонецЦикла;
Для Каждого Ключ Из ОтменитьУдалениеРолей Цикл
РолиДляУдаления.Удалить(Ключ);
КонецЦикла;
Если РолиДляУдаления.Количество() = 0 И ОписаниеПользователя.Значение.РолиДляДобавления.Количество() = 0 Тогда
УдалитьОбновлениеПользователей.Добавить(ОписаниеПользователя.Ключ);
КонецЕсли;
КонецЦикла;
Для Каждого Ключ Из УдалитьОбновлениеПользователей Цикл
ОбновляемыеПользователиИБ.Удалить(Ключ);
КонецЦикла;
КонецПроцедуры