Как задать цвет строк в табличной части обработки в 1С в зависимости от условий?

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

При разработке и доработке обработок в 1С часто возникает необходимость визуально выделить определенные строки в табличной части — например, подсветить красным цветом ошибочные данные или зеленым — обработанные. Разберем по шагам, как правильно задавать цвета в зависимости от условий, проанализируем частые ошибки разработчиков и выясним причину, по которой старые методы больше не работают.

Главное решение: Условное оформление формы

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

Настроить условное оформление можно двумя способами:

  1. Интерактивно (вручную). В конфигураторе открываем свойства формы, находим свойство УсловноеОформление и добавляем новое правило: указываем условие (например, Статус = "Ошибка"), выбираем цвет фона и отмечаем нужные поля оформления (колонки табличной части).
  2. Программно (кодом). Если условия сложнее или количество строк динамическое, оформление можно создать программно.

Программное создание условного оформления

Рассмотрим подробнее, как задать цвет кодом. Этот процесс всегда выполняется на сервере, как правило, в обработчике ПриСозданииНаСервере. Алгоритм состоит из трех важных шагов:

  1. Создание элемента оформления: мы добавляем новый элемент в коллекцию УсловноеОформление формы и устанавливаем желаемый цвет фона или текста.
  2. Установка условия: формируем отбор. Левым значением выступает поле нашей табличной части, затем задаем вид сравнения и правое значение (с чем сравниваем).
  3. Установка оформляемых полей: указываем, какие конкретно колонки нужно раскрасить. Если пропустить этот шаг и не добавить ни одного поля, 1С раскрасит всю строку табличной части целиком!

Ошибочные подходы и разница архитектур

Проанализируем ситуацию с неработающими или некорректными советами, которые часто встречаются на форумах.

Миф 1: Использование свойства ЦветФона элемента формы. В обсуждении прозвучал совет использовать следующий код:

Элементы.ТоварыНоменклатура.ЦветФона = WebЦвета.Синий;

Для управляемых форм этот метод в корне неверен для построчной раскраски! Такое присвоение изменит цвет фона для всей колонки во всех строках табличной части одновременно. Перебирать строки в цикле и пытаться менять это свойство бесполезно — цвет применяется ко всему элементу управления на форме, а не к ячейке конкретной строки.

Миф 2: Использование событий ПриВыводеСтроки или ПриПолученииДанных. В старых обычных формах (в 1С версий 8.1, 8.2) цвет строк действительно меняли «на лету» прямо при отрисовке экрана в событиях ПриПолученииДанных. В управляемых формах (УФ) эта концепция была полностью упразднена ради оптимизации клиент-серверного взаимодействия. Если бы клиент постоянно отправлял запросы на сервер при каждой прокрутке таблицы, система бы катастрофически тормозила. Поэтому в управляемых формах этих событий просто нет.

Продвинутый паттерн: Использование скрытой служебной колонки

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

В этом случае разработчики применяют изящный паттерн с дополнительной невидимой колонкой:

  1. В табличную часть обработки добавляется служебная колонка, например, с типом Булево и именем ТребуетВнимания.
  2. На форме эта колонка скрывается (свойство Видимость устанавливается в Ложь).
  3. Сложный серверный алгоритм производит все расчеты и проставляет в этой скрытой колонке значение Истина только для тех строк, которые нужно подсветить.
  4. В стандартном условном оформлении формы настраивается простейшее и быстрое условие: если ТребуетВнимания = Истина, то строка раскрашивается нужным цветом.

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

← На главную