Здравствуйте, дорогие читатели.
В данной статье я хочу показать программную работу с условным оформлением динамического списка.
Рассмотрим конкретный пример.
Пример.
Необходимо в форме подбора сотрудников, документа «Увольнение из организаций», выделять уже выбранные элементы списка.
Т.е. необходимо реализовать как показано на картинке выше: Сотрудник1 и Сотрудник4, выбранные в табличную часть документа, в списке должны выделяться серым цветом.
Приступим к реализации.
1. В реквизиты формы подбора добавим элемент «ЕстьУслофноеОформление» (Тип — булево)
2. В процедуре формы «При открытии» добавим очистку условного оформления.
Список.УсловноеОформление.Элементы.Очистить();
3. Для динамического списка определяем событие «Выбор«.
В процедуру обработки выбора добавляем следующий код.
СписокВыбранныеСотрудники = Новый СписокЗначений;
Если Не ЕстьУслофноеОформление Тогда
ЕстьУслофноеОформление = Истина;
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Сотрудник");
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Подразделение");
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Должность");
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = истина;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сотрудник");
СписокВыбранныеСотрудники.Добавить(ТекДанные.Сотрудник);
ЭлементОтбора.ПравоеЗначение = СписокВыбранныеСотрудники;
Оформление = ЭлементОформления.Оформление;
Оформление.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветТекста"), WebЦвета.СветлоСерый);
Иначе
ЭлементыОформления = Список.УсловноеОформление.Элементы;
ЭлементОФормления = ЭлементыОформления[0];
ОтборЭлементФормления = ЭлементОФормления.Отбор;
ЭлементыОтбора = ОтборЭлементФормления.Элементы;
ЭлементОтбора = ЭлементыОтбора[0];
СписокВыбранныеСотрудники.ЗагрузитьЗначения(ЭлементОтбора.ПравоеЗначение.ВыгрузитьЗначения());
СписокВыбранныеСотрудники.Добавить(ТекДанные.Сотрудник);
ЭлементОтбора.ПравоеЗначение = СписокВыбранныеСотрудники;
КонецЕсли;
Вот вроде и все. Наслаждаемся результатом.
Популярность: 15%