Доработка типовой конфигурации для подсветки недействительных пользователей.
Самый простой и менее критичный способ для дополнения функционала - это доработка через расширение. Что необходимо сделать.
1. Добавить реквизит формы. Лучше программным кодом.
//Добавляем реквизит в ДеревоЗначений для использования в форматировании
ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("Недействителен",Новый ОписаниеТипов("Булево"),"ПользователиГруппы");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
2. Добавить условное форматирование. И тут лучше кодом.
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиГруппы.Недействителен");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста",WebЦвета.СеребристоСерый);
ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Пользователь");
ПолеОформления.Использование = Истина;
ЭлементУсловногоОформления.Использование = Истина;
Остается только заполнить добавленный реквизит. Для этого необходимо скорректировать процедуру "ЗаполнитьНомераКартинокПользователей" общего модуля "Пользователи" (там заполняются реквизиты дерева значений и можно заполнить реквизит "недействителен"), но лучше создать ее копию (эта процедура используется в других модулях). В процедуре необходимо внести изменения в запросе добавив код получения значения "Недействителен"
| ВЫБОР
| КОГДА Пользователи.Пользователь = НЕОПРЕДЕЛЕНО
| ТОГДА ЛОЖЬ
| КОГДА ТИПЗНАЧЕНИЯ(Пользователи.Пользователь) = ТИП(Справочник.Пользователи)
| ТОГДА ВЫБОР
| КОГДА ВЫРАЗИТЬ(Пользователи.Пользователь КАК Справочник.Пользователи).Недействителен
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОГДА ТИПЗНАЧЕНИЯ(Пользователи.Пользователь) = ТИП(Справочник.ВнешниеПользователи)
| ТОГДА ВЫБОР
| КОГДА ВЫРАЗИТЬ(Пользователи.Пользователь КАК Справочник.ВнешниеПользователи).Недействителен
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ КАК Недействителен
И в цикле ниже необходимо добавить строки заполнения реквизита
Строка.Недействителен = ?(НайденнаяСтрока = Неопределено, Ложь, НайденнаяСтрока.Недействителен);
для каждого из уровней.
Если принято решение в создании копии процедуры и ее "кастомизации" необходимо вызвать ее из процедуры "ОбновитьПользователейГрупп" формы элемента ГруппыДоступа вместо стоковой.
Тестировалось на ERP 2.5.12.111, но учитывая, что дополняется механизм БСП, доработку можно использовать на всех актуальных конфигурациях.