При работе с платформой 1С:Предприятие 7.7 стандартных возможностей оформления форм часто оказывается недостаточно. Для решения задач визуального выделения данных активно используется внешняя компонента FormEx. Однако многие разработчики сталкиваются с тем, что при попытке настроить выборочную раскраску отдельных ячеек табличной части, система либо красит всю строку целиком, либо не применяет оформление вовсе. Разберем по шагам, как правильно настроить этот механизм.
Прежде всего, убедитесь, что компонента FormEx успешно подключена к вашей конфигурации. Основная причина того, что раскраска не работает выборочно, заключается в том, что по умолчанию компонента может работать в режиме «облачной» заливки строки. Чтобы управлять цветом каждой ячейки индивидуально, необходимо задействовать функционал плана раскраски.
Для этого в модуле формы вашего документа, в процедуре ПослеСозданияФормы(), необходимо выполнить следующие действия:
Процедура ПослеСозданияФормы()
оСервис = СоздатьОбъект("Сервис");
// Включаем базовый механизм раскраски
оСервис.ВключитьРаскраскуТаблиц();
// Активируем план раскраски для управления конкретными ячейками
оСервис.ИспользоватьПланРаскраски(1);
КонецПроцедуры
Без вызова метода ИспользоватьПланРаскраски(1) компонента будет игнорировать сложные конструкции в формулах и применять только общие правила для всей строки.
Ключевая особенность FormEx при использовании планов раскраски заключается в синтаксисе строки-формулы. Компонента ожидает, что вы укажете позицию ячейки с помощью круглых скобок (). Каждая пара скобок соответствует одной колонке в табличной части (включая скрытые колонки).
Представим, что у вас в табличной части пять колонок. Чтобы раскрасить, например, вторую колонку, вам необходимо сформировать строку, где первые скобки остаются пустыми, а во вторые вписывается макрос цвета. Рассмотрим пример функции, которую нужно прописать в колонке с заголовком FormEx_ПланРаскраски:
Функция Раскрасить()
Если Количество > 2 Тогда
// Раскрашиваем вторую колонку (указываем пустые скобки для первой)
Возврат ("()(BRUSH[255])()()()");
Иначе
// В противном случае красим другим цветом
Возврат ("()(BRUSH[100])()()()");
КонецЕсли;
КонецФункции
Здесь важно соблюдать баланс скобок. Если количество скобок не соответствует количеству колонок, компонента может работать некорректно или выдавать ошибку интерпретации строки.
При использовании макроса BRUSH[...] обратите внимание на формат цветопередачи. В отличие от стандартных функций 1С, которые часто работают с RGB (Red-Green-Blue), компонента FormEx во многих случаях ожидает значение в формате BGR (Blue-Green-Red).
Если вы заметили, что цвета отображаются инвертированно или совсем не так, как вы ожидали, используйте шестнадцатеричную запись с префиксом 0x. Например, запись BRUSH_S[0xCCFF99] указывает компоненте конкретный цвет в нужном порядке байтов. Если вы используете обычные числовые коды цветов, убедитесь, что они корректно транслируются в требуемый формат BGR. Для работы с готовой палитрой веб-цветов в FormEx можно использовать обработку с набором Web-цветов для 1С 7.7.
FormEx она существует и занимает свое место в «плане».FormEx.dll. Если у вас старая сборка, обновите библиотеку, чтобы иметь доступ к полному набору инструментов управления стилями.ИспользоватьПланРаскраски(1) является более приоритетной и надежной для разработчика.Теперь, когда вы объединили вызов Сервис в ПослеСозданияФормы() и сформировали точную последовательность скобок в функции раскраски, ячейки будут окрашиваться строго по заданным вами правилам. Этот метод позволяет создавать информативные и удобные интерфейсы, выделяя цветом важные показатели или строки с особыми условиями.