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

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

При формировании отчетов в 1С часто возникает задача визуального выделения итоговых строк или специфических данных. Окрашивание строк делает отчет более читаемым и профессиональным. В этой статье мы разберем несколько способов реализации этой задачи, начиная от простого изменения свойств области макета и заканчивая использованием системы компоновки данных (СКД).

Способ 1: Изменение цвета области макета до вывода

Проанализируем самый эффективный метод, который позволяет избежать появления лишних пустых строк и корректно работает с динамическими данными. Суть метода заключается в том, чтобы установить свойство ЦветФона непосредственно у объекта ОбластьМакета перед тем, как она будет помещена в результирующий табличный документ.

Рассмотрим пример кода, где мы получаем область из макета, меняем её цвет и выводим в документ:


// Получаем область из макета по имени
Область = Макет.ПолучитьОбласть("СтрокаИтого");

// Устанавливаем нужный цвет (например, светло-серый)
Область.ЦветФона = Новый Цвет(230, 230, 230);

// Выводим уже раскрашенную область в итоговый документ
ТабДок.Вывести(Область);

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

Способ 2: Использование возвращаемого значения метода Вывести()

Выясним еще одну интересную особенность платформы 1С. Метод Вывести() является функцией, которая возвращает объект типа ОбластьЯчеекТабличногоДокумента. Эта область указывает именно на те ячейки, которые только что были добавлены в табличный документ. Это позволяет менять оформление "на лету" сразу после вывода.

Посмотрим на пример реализации:


// Выводим область и сразу получаем ссылку на выведенный диапазон
ВыведеннаяОбласть = ТабДок.Вывести(ОбластьМакета);

// Меняем цвет только у того фрагмента, который был выведен
ВыведеннаяОбласть.ЦветФона = Новый Цвет(192, 192, 192);

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

Способ 3: Окрашивание всей строки по координатам

Если таблица имеет динамическое количество колонок, и нам нужно закрасить всю строку целиком после того, как она была сформирована, мы можем воспользоваться обращением к области по координатам. Для этого используются свойства ВысотаТаблицы и ШиринаТаблицы.

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


// Определяем номер текущей (последней) строки
НомерСтроки = ТабДок.ВысотаТаблицы;

// Получаем область от первой до последней колонки в этой строке
ОбластьСтроки = ТабДок.Область(НомерСтроки, 1, НомерСтроки, ТабДок.ШиринаТаблицы);

// Устанавливаем цвет фона
ОбластьСтроки.ЦветФона = Новый Цвет(255, 255, 0); // Желтый цвет

Этот метод незаменим, когда отчет формируется сложным образом (например, с использованием метода Присоединить()), и мы не знаем заранее, сколько колонок будет в строке "Итого".

Способ 4: Профессиональный подход через Условное оформление в СКД

Если вы разрабатываете отчет на базе Системы компоновки данных (СКД), программное раскрашивание строк через код модуля считается "плохим тоном". В СКД для этих целей существует механизм "Условного оформления".

Рассмотрим, как это настроить без программирования:

  1. Перейдите на закладку Настройки в схеме компоновки данных.
  2. Выберите вкладку Условное оформление.
  3. Добавьте новый элемент оформления.
  4. В поле Оформление выберите Цвет фона.
  5. В поле Условие укажите, для каких строк применять цвет (например, Сотрудник В иерархии ... или наличие определенного признака в группировке).
  6. В поле Оформляемые поля выберите те поля, которые должны быть покрашены (или оставьте пустым, чтобы покрасить всю строку).

Этот способ наиболее производителен и автоматически адаптируется под любые изменения структуры отчета пользователем.

Оптимизация и работа со стилями

При работе с цветами рекомендуется придерживаться следующих правил для обеспечения кроссплатформенности и удобства поддержки:

Проанализировав все способы, можно сделать вывод: для простых отчетов на макетах идеально подходит Способ 1 (изменение макета до вывода), а для сложных аналитических систем лучшим выбором будет Условное оформление СКД.

← На главную