Источник https://infostart.ru/public/181336/
В конфигураторе условное оформление существует на уровне самой формы (как в формах объекта, так и списка):
В формах списка условное оформление существует и на уровне самого динамического списка, если источником данных для списка является основная таблица:
Интересный глюк: условное оформление для списка можно настроить только если задана основная таблица (например Документ.Счет). Если потом, в силу каких-то причин, источником данных для списка сделать запрос, то условное оформление для списка станет недоступным для изменения, но будет продолжать действовать. Вернуться к нему можно только если источником сделать снова основную таблицу.
Программная работа с условным оформлением (УО).
Начнем с того, что работа с УО доступна только:
&НаСервере
Для Добавления элемента УО в списке нужно обратится к списку и добавить элемент УО:
ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
Для УО формы добавление происходит через прикладной объект УсловноеОформление:
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
Далее алгоритмы будут похожими. Для УО нам нужно задать условие отбора, задать значение свойства УО и добавить оформляемые поля.
// Создаем условие отбора
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); // имя поля
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; // либо задаем свой
//**** Значение для отбора
ЭлементОтбора.ПравоеЗначение = ЗначениеДляОтбора;
// следует заметить что правым значением может выступать ПолеКомпоновкиДанных формы или списка
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
//****
ЭлементОтбора.Использование = Истина;
Значение свойства УО:
// Установка значения элемента УО
// Возможно обращение как по индексу так и установка через метод
//1.
Элемент = ЭлементОформления.Оформление.Элементы[0];
Элемент.Значение = Цвет;
//2.
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
Элемент.Использование = Истина;
Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:
// Создаем поля оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ПолеДляОформления);
ПолеОформления.Использование = Истина;
В качестве ИменПолей нужно передавать строковое представление ИМЕНИ реквизита.
Пример процедуры выделения жирным цветом значения в ячейке таблицы.
"Отчет" - название элемента таблицы на форме.
"Роль" - имя колонки по которому производим сравнение.
"ОтчетРоль" - имя колонки
Процедура УсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
// Зададим отбор (условия при которых будет выполнено оформление)
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отчет.Роль");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ТекущаяРоль;
ЭлементОтбора.Использование = Истина;
ЖирныйШрифт = Новый Шрифт(,,Истина);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", ЖирныйШрифт);
// Укажем какие поля (колонки) оформлять
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ОтчетРоль");
ПолеОформления.Использование = Истина;
ЭлементОформления.Использование = Истина;
КонецПроцедуры
Отображение столбцов в динамическом списке.
Если надо чтобы в динамическом списке не отображались столбцы, но их можно было добавить через изменение формы, то в свойствах элементов этих столбцов надо убрать галку в свойстве "Пользовательская видимость" - Видимость.
Чтобы к столбцу можно было обращаться, даже если он не включен в список отображаемых элементов, у соответствующего реквизита динамического списка надо поставить свойство "Использовать всегда".
При этом добавить столбец в отображение (через изменение формы) не получиться, но использовать в отборах, условном оформлении и группировке можно.
По умолчанию, если колонка динамического списка не отображается, то данные по ней не запрашиваются с сервера, чтобы ускорить процесс получений данных.
|