При разработке и доработке обработок в 1С часто возникает необходимость визуально выделить определенные строки в табличной части — например, подсветить красным цветом ошибочные данные или зеленым — обработанные. Разберем по шагам, как правильно задавать цвета в зависимости от условий, проанализируем частые ошибки разработчиков и выясним причину, по которой старые методы больше не работают.
Самым правильным и надежным инструментом для раскраски строк в современных конфигурациях 1С является Условное оформление. Часто начинающие программисты путаются и пытаются искать настройки оформления в свойствах самой таблицы (динамического списка или табличной части). Как отметил автор темы, это распространенный «тупняк»: механизм УсловноеОформление располагается на уровне самой формы, а не отдельного элемента управления. Для быстрого формирования программного кода правил раскраски строк можно использовать конструктор кода условного оформления табличных частей.
Настроить условное оформление можно двумя способами:
УсловноеОформление и добавляем новое правило: указываем условие (например, Статус = "Ошибка"), выбираем цвет фона и отмечаем нужные поля оформления (колонки табличной части).Рассмотрим подробнее, как задать цвет кодом. Этот процесс всегда выполняется на сервере, как правило, в обработчике ПриСозданииНаСервере. Алгоритм состоит из трех важных шагов:
УсловноеОформление формы и устанавливаем желаемый цвет фона или текста.Проанализируем ситуацию с неработающими или некорректными советами, которые часто встречаются на форумах.
Миф 1: Использование свойства ЦветФона элемента формы. В обсуждении прозвучал совет использовать следующий код:
Элементы.ТоварыНоменклатура.ЦветФона = WebЦвета.Синий;
Для управляемых форм этот метод в корне неверен для построчной раскраски! Такое присвоение изменит цвет фона для всей колонки во всех строках табличной части одновременно. Перебирать строки в цикле и пытаться менять это свойство бесполезно — цвет применяется ко всему элементу управления на форме, а не к ячейке конкретной строки.
Миф 2: Использование событий ПриВыводеСтроки или ПриПолученииДанных. В старых обычных формах (в 1С версий 8.1, 8.2) цвет строк действительно меняли «на лету» прямо при отрисовке экрана в событиях ПриПолученииДанных. В управляемых формах (УФ) эта концепция была полностью упразднена ради оптимизации клиент-серверного взаимодействия. Если бы клиент постоянно отправлял запросы на сервер при каждой прокрутке таблицы, система бы катастрофически тормозила. Поэтому в управляемых формах этих событий просто нет.
Посмотрим на пример, когда условие для раскраски очень сложное, требует ресурсоемких математических вычислений, сложных запросов к базе данных или обращения к модулям других подсистем. Такое условие невозможно просто описать стандартным отбором в условном оформлении.
В этом случае разработчики применяют изящный паттерн с дополнительной невидимой колонкой:
Булево и именем ТребуетВнимания.Видимость устанавливается в Ложь).Истина только для тех строк, которые нужно подсветить.ТребуетВнимания = Истина, то строка раскрашивается нужным цветом.Используя механизм условного оформления формы, вы сможете легко управлять внешним видом табличных частей, обеспечивая высокую скорость работы интерфейса пользователя без лишней нагрузки на клиент-серверное взаимодействие.