Как правильно использовать план раскраски таблиц в журнале документов 1С 7.7 с помощью FormEx

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

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

В чем разница между обычной раскраской и Планом раскраски?

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

Шаг 1. Настройка колонки в журнале или таблице

Разберем по шагам процесс подготовки метаданных. Чтобы FormEx «понял», откуда брать данные для раскраски, в таблицу (например, в журнал документов или справочник) необходимо добавить служебную колонку. Выясним основные требования к этой колонке:

  1. Идентификатор: Может быть произвольным (например, КолонкаРаскраски).
  2. Тип данных: Строка (лучше установить неограниченную длину или хотя бы 100–200 символов, так как сложные стили могут быть длинными).
  3. Заголовок (Title): Вот здесь кроется главная хитрость. Заголовок должен быть строго FormEx_ПланРаскраски. Обратите внимание на регистр букв — это критически важно. Если написать заголовок строчными буквами или допустить опечатку, раскраска просто не включится.
  4. Видимость: Эту колонку следует сделать невидимой (снять галочку «Видимый»), так как она несет только техническую информацию.

Проанализируем пример функции, которая будет заполнять эту колонку. В модуле формы должна быть определена функция, привязанная к данной колонке:


Функция гетРаскраска()
    // Формируем план раскраски для текущей строки
    // Формат: (СтильВсейСтроки)(СтильКолонки1)(СтильКолонки2)...
    Возврат "(BRUSH[0x99FFCC])()()";
КонецФункции

Шаг 2. Инициализация объекта «Сервис»

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

Важный совет: Не рекомендуется создавать объект Сервис и включать раскраску многократно. Это может привести к нестабильности системы и даже вылетам программы. Лучше всего инициализировать компоненту и объект один раз в Глобальном модуле в процедуре ПриНачалеРаботыСистемы(). Однако, если задача локальная, в модуле формы это выглядит так:


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

Рекомендуется также использовать предопределенную процедуру ПослеОткрытия(), которую предоставляет FormEx. В этот момент визуальные объекты Windows уже полностью созданы, и компонента гарантированно сможет к ним подключиться.

Шаг 3. Синтаксис строки раскраски

Разберем подробнее структуру строки, которую возвращает колонка раскраски. План раскраски позволяет задать индивидуальный стиль для каждой ячейки. Строка состоит из набора скобок:

(СтильВсейСтроки)(СтильКолонки1)(СтильКолонки2)...(СтильКолонкиN)

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

Пример сложного плана раскраски:


// Вся строка - белый фон, первая колонка - красный шрифт, вторая - зеленый фон
Стиль = "()(FONT[0x0000FF])(BRUSH[0x00FF00])";

Нюансы цветовой кодировки (BGR vs RGB)

Проанализируем формат цвета, который использует FormEx. В отличие от привычного веба, здесь используется формат 0xBBGGRR (Blue-Green-Red). Если вы хотите получить красный цвет, это будет 0x0000FF. Если синий — 0xFF0000. Чтобы не запутаться, можно написать вспомогательную функцию для конвертации цветов из стандартных RGB-значений. Для быстрого применения готовой палитры подойдёт обработка с набором Web-цветов для FormEx в 1С 7.7.

Типичные ошибки и пути их решения

Если вы внедрили код, но «ничего не красится», проверим следующее:

  1. Заголовок колонки: Еще раз убедитесь, что заголовок в конфигураторе написан именно так: FormEx_ПланРаскраски. Ошибки в регистре (например, formex_планраскраски) недопустимы.
  2. Регистрация компоненты: Убедитесь, что FormEx.dll загружена. Проверить это можно кодом:
    
    Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") <> 1 Тогда
        Предупреждение("Компонента FormEx не найдена!");
    КонецЕсли;
    
  3. Идентификатор в скобках: Помните, что параметры BRUSH и FONT пишутся заглавными буквами внутри квадратных скобок.

Оптимизация работы в Глобальном модуле

Разберем наиболее стабильный вариант реализации. Профессионалы советуют вынести загрузку ВК в Глобальный модуль. Это позволит избежать конфликтов при открытии нескольких форм с раскраской одновременно.


// В Глобальном модуле
Перем глСервис Экспорт;

Процедура ПриНачалеРаботыСистемы()
    Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 1 Тогда
        глСервис = СоздатьОбъект("Сервис");
    КонецЕсли;
КонецПроцедуры

Теперь в любой форме журнала вам достаточно лишь вызвать одну строку:


Процедура ПослеОткрытия()
    Если ПустоеЗначение(глСервис) = 0 Тогда
        глСервис.ИспользоватьПланРаскраски(1);
    КонецЕсли;
КонецПроцедуры

Заключение

Мы выяснили, что использование плана раскраски в FormEx — это мощный способ сделать интерфейс 1С 7.7 современным и быстрым. Главное — строго соблюдать синтаксис заголовков и правильно формировать строку стилей. Помните о порядке следования колонок и используйте возможности BGR-формата для точной настройки цветовой гаммы. Применяя данные рекомендации, вы сможете создавать визуально понятные и удобные инструменты для конечных пользователей, сохраняя при этом высокую производительность системы.

← На главную