Как подсветить строки и ячейки в управляемых формах 1С вместо события ПриВыводеСтроки?

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

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

Рассмотрим, чем заменяется этот функционал в управляемом интерфейсе и как правильно настроить динамическое изменение цвета ячеек и строк.

Основная альтернатива: Условное оформление

Для визуального выделения данных в управляемых формах используется механизм Условного оформления (работающий по аналогии с СКД — системой компоновки данных). Место настройки зависит от типа источника данных таблицы:

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

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

Разберем по шагам, как программно добавить правило подсвечивания строк при открытии формы. Такой подход предпочтительнее интерактивной настройки в конфигураторе, так как защищает от ошибок при переименовании реквизитов и позволяет выносить логику в общие модули.

Посмотрим на пример кода, который окрашивает ячейку колонки в красный цвет, если значение в ней отрицательное:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    // 1. Создаем новый элемент условного оформления
    ЭлементОформления = УсловноеОформление.Элементы.Добавить();

    // 2. Определяем условие (отбор)
    ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Меньше;
    ЭлементОтбора.ПравоеЗначение = 0;
    ЭлементОтбора.Использование  = Истина;

    // 3. Задаем оформление (например, цвет фона или текст)
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоРозовый);

    // 4. Указываем оформляемые поля
    ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТоварыСумма");
    ОформляемоеПоле.Использование = Истина;

КонецПроцедуры

Обратите внимание: если вам необходимо покрасить всю строку целиком, а не отдельную ячейку, в коллекцию Поля элемента условного оформления нужно явно добавить все колонки этой таблицы.

Ограничения механизма и сложные вычисления

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

Если условие подсветки зависит от сложной бизнес-логики, рекомендуем использовать следующую схему:

  1. Добавьте в таблицу вспомогательный реквизит (например, булевый флаг ТребуетВнимания).
  2. Выполните расчет и заполнение этого флага на сервере при изменении данных или при загрузке формы.
  3. В условном оформлении укажите простое условие: Объект.Товары.ТребуетВнимания Равно Истина.

Альтернативные варианты визуализации

Помимо изменения цвета фона и текста, платформа предлагает другие инструменты вывода данных:

  1. Пиктограммы и картинки строк: Для вывода статусов или состояний строк вместо раскрашивания текста часто используют колонку с вычисляемым индексом картинки.
  2. Форматированная строка: Если в рамках одной ячейки требуется оформить только часть текста разными цветами или шрифтами, используется реквизит с типом ФорматированнаяСтрока.
← На главную