Как настроить выборочную раскраску ячеек в 1С 7.7 с помощью FormEx?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Подготовка окружения и включение плана раскраски

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

Для этого в модуле формы вашего документа, в процедуре ПослеСозданияФормы(), необходимо выполнить следующие действия:


Процедура ПослеСозданияФормы()
    оСервис = СоздатьОбъект("Сервис");
    // Включаем базовый механизм раскраски
    оСервис.ВключитьРаскраскуТаблиц();
    // Активируем план раскраски для управления конкретными ячейками
    оСервис.ИспользоватьПланРаскраски(1);
КонецПроцедуры

Без вызова метода ИспользоватьПланРаскраски(1) компонента будет игнорировать сложные конструкции в формулах и применять только общие правила для всей строки.

Настройка формулы для управления цветом

Ключевая особенность FormEx при использовании планов раскраски заключается в синтаксисе строки-формулы. Компонента ожидает, что вы укажете позицию ячейки с помощью круглых скобок (). Каждая пара скобок соответствует одной колонке в табличной части (включая скрытые колонки).

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


Функция Раскрасить()
    Если Количество > 2 Тогда
        // Раскрашиваем вторую колонку (указываем пустые скобки для первой)
        Возврат ("()(BRUSH[255])()()()");
    Иначе 
        // В противном случае красим другим цветом
        Возврат ("()(BRUSH[100])()()()");
    КонецЕсли;
КонецФункции

Здесь важно соблюдать баланс скобок. Если количество скобок не соответствует количеству колонок, компонента может работать некорректно или выдавать ошибку интерпретации строки.

Работа с цветами и форматом BGR

При использовании макроса BRUSH[...] обратите внимание на формат цветопередачи. В отличие от стандартных функций 1С, которые часто работают с RGB (Red-Green-Blue), компонента FormEx во многих случаях ожидает значение в формате BGR (Blue-Green-Red).

Если вы заметили, что цвета отображаются инвертированно или совсем не так, как вы ожидали, используйте шестнадцатеричную запись с префиксом 0x. Например, запись BRUSH_S[0xCCFF99] указывает компоненте конкретный цвет в нужном порядке байтов. Если вы используете обычные числовые коды цветов, убедитесь, что они корректно транслируются в требуемый формат BGR. Для работы с готовой палитрой веб-цветов в FormEx можно использовать обработку с набором Web-цветов для 1С 7.7.

Советы по отладке

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

Теперь, когда вы объединили вызов Сервис в ПослеСозданияФормы() и сформировали точную последовательность скобок в функции раскраски, ячейки будут окрашиваться строго по заданным вами правилам. Этот метод позволяет создавать информативные и удобные интерфейсы, выделяя цветом важные показатели или строки с особыми условиями.

← На главную