Как настроить условное оформление табличной части в управляемой форме 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на управляемые формы многие разработчики сталкиваются с неожиданной трудностью: требуется раскрасить определенные ячейки или строки табличной части документа, однако в палитре свойств самого элемента «Таблица» или соответствующего реквизита пункт «Условное оформление» отсутствует. Выясним причину такого поведения платформы и разберем по шагам, как задать оформление интерактивно и программно.

Почему условного оформления нет в свойствах таблицы

Проанализируем архитектуру управляемой формы платформы 1С:Предприятие 8.3. В отличие от динамического списка, у которого условное оформление настраивается индивидуально в свойствах реквизита через схему компоновки данных, для коллекций типа ДанныеФормыКоллекция (к которым относятся табличные части объектов) отдельного свойства у таблицы нет.

В управляемой форме условное оформление табличных частей реализовано централизованно на уровне самого верхнего элемента дерева — корневого элемента Форма. Именно через свойства всей формы задаются правила подсветки, смены шрифта и доступности для всех подчиненных таблиц объекта.

Интерактивная настройка в конфигураторе

Рассмотрим пошаговый порядок действий для настройки оформления ячеек табличной части в окне редактора формы:

  1. Откроем нужную управляемую форму в конфигураторе.
  2. В левом верхнем окне элементов формы выделим самый верхний корневой элемент — Форма (не путать с таблицей или ее колонками).
  3. Перейдем в окно палитры свойств корневого элемента (по клавише F4 или через контекстное меню).
  4. Найдем группу свойств Оформление и откроем свойство Условное оформление, нажав кнопку с многоточием «Открыть».
  5. В открывшемся окне добавим новый элемент оформления и настроим три обязательных блока:
    1. Оформление — укажем параметры, которые должны измениться при выполнении условия (например, установим ЦветФона, ЦветТекста, Шрифт или ТолькоПросмотр).
    2. Условие — зададим логическое выражение отбора (например, поле Объект.Товары.Сумма больше 1000).
    3. Оформляемые поля — укажем конкретные колонки таблицы, к которым должно применяться правило. Если этот список оставить пустым, оформление применится ко всей строке целиком.

Программная настройка условного оформления

Нередко условия подсветки зависят от функциональных опций, прав текущего пользователя или других параметров, вычисляемых в момент открытия объекта. В таких случаях настроим условное оформление кодом 1С.

Проанализируем пример кода в модуле формы. Программная работа с коллекцией формы УсловноеОформление выполняется исключительно на стороне сервера (как правило, в обработчике ПриСозданииНаСервере):


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// 1. Создаем новый элемент условного оформления
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	// 2. Настраиваем визуальные параметры
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЗеленый);
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	
	// 3. Формируем условие применения оформления
	Отбор = Элемент.Условие.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
	Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
	Отбор.ПравоеЗначение = 10000;
	Отбор.Использование = Истина;
	
	// 4. Указываем оформляемые поля формы
	Поле = Элемент.Поля.Элементы.Добавить();
	Поле.Поле = Новый ПолеКомпоновкиДанных("ТоварыСумма");
	
КонецПроцедуры

Посмотрим на важную деталь: в блоке условия (Отбор.ЛевоеЗначение) мы обращаемся к пути к данным через реквизит (Объект.Товары.Сумма), а в оформляемых полях (Поле.Поле) передаем имя элемента формы — соответствующей колонки таблицы.

Ограничения платформы и особенности работы

Разберем специфические моменты, которые необходимо учитывать при работе с данным механизмом:

  1. Видимость ячеек: С помощью условного оформления невозможно скрыть отдельную ячейку конкретной строки таблицы. Параметр Видимость скрывает всю колонку целиком. Если требуется запретить изменение или убрать фокус с ячейки, используем параметры ТолькоПросмотр или Доступность.
  2. Контекст исполнения: Модифицировать коллекцию УсловноеОформление на клиенте напрямую нельзя. Изменение оформления во время работы пользователя требует серверного вызова либо изначальной настройки условий, опирающихся на скрытые флаги в строках данных.
  3. Производительность: Большое количество сложных условий и правил условного оформления может вызывать заметное замедление отрисовки строк при быстрой прокрутке объемных табличных частей на стороне клиента. Рекомендуется объединять схожие правила оформления.

Пользовательская настройка без конфигуратора

Если требуется раскрасить таблицу без внесения изменений в конфигурацию, конечный пользователь может сделать это самостоятельно в режиме «1С:Предприятие» при наличии прав:

  1. В командной панели формы нажмем кнопку Еще и выберем пункт Изменить форму.
  2. В открывшемся окне настроек выделим самый верхний пункт дерева — Форма.
  3. В правой части окна в блоке настроек найдем строку Условное оформление и нажмем гиперссылку «Установить».
  4. Настроим оформление, условия и поля так же, как в конфигураторе, и сохраним пользовательские настройки.
← На главную