В процессе разработки отчетов в системе 1С:Предприятие 7.7 часто возникает необходимость визуально выделить определенные данные. Это может быть подсветка задолженности, выделение отрицательных остатков или акцентирование внимания на итоговых строках. В отличие от более современных версий платформы, работа с оформлением в 7.7 имеет свои специфические особенности, связанные с управлением объектами Таблица и Область.
В этой статье мы подробно разберем, как управлять цветом фона, текста и другими параметрами ячеек, проанализируем различные подходы к реализации этой задачи и изучим конкретные примеры кода.
Этот метод считается наиболее гибким и правильным с точки зрения архитектуры формирования отчета. Мы сначала получаем шаблон строки (секцию) из макета, модифицируем её свойства (в данном случае — цвет ячейки) и только после этого выводим в итоговый документ. Это позволяет динамически менять оформление для каждой выводимой строки.
Рассмотрим пример кода, в котором мы проверяем условие и раскрашиваем конкретную ячейку в секции:
// Создаем объект Таблица
Таб = СоздатьОбъект("Таблица");
// Получаем секцию "Строка" из макета
Секция = Таб.ПолучитьСекцию("Строка");
// Проверяем условие (например, если сумма меньше нуля)
Если СуммаДолга > 0 Тогда
// Обращаемся к области внутри полученной секции
// Область(R1, C1, R2, C2) - координаты внутри секции
Секция.Область(1, 3, 1, 3).ЦветФона(255, 0, 0); // Красный цвет
Иначе
// Возвращаем цвет по умолчанию (параметр -1)
Секция.Область(1, 3, 1, 3).ЦветФона(-1);
КонецЕсли;
// Выводим модифицированную секцию в итоговый документ
Таб.ВывестиСекцию(Секция);
Важный нюанс: при использовании метода Область() внутри секции координаты отсчитываются от верхнего левого угла самой секции. Если ваша секция состоит из одной строки, то индекс строки всегда будет 1.
Иногда требуется изменить цвет ячеек после того, как секция уже была выведена в таблицу. В этом случае нам необходимо знать координаты выведенной области. Для этого удобно использовать метод ВысотаТаблицы(), который возвращает номер последней выведенной строки.
Разберем, как это работает на практике:
// Выводим секцию обычным способом
Таб.ВывестиСекцию("Строка|Данные");
// Получаем номер строки, которая только что была добавлена
НомСтр = Таб.ВысотаТаблицы();
// Если условие выполняется, красим ячейку в колонке №5
Если ТекОстаток < 0 Тогда
// Используем метод Область напрямую у объекта Таблица
Таб.Область(НомСтр, 5, НомСтр, 5).ЦветФона(0, 255, 0); // Зеленый
КонецЕсли;
Этот подход удобен, когда структура отчета сложная, и вы предпочитаете манипулировать уже готовым полотном документа.
Методы ЦветФона(), ЦветТекста() и ЦветРамки() в 1С 7.7 принимают либо три параметра (Красный, Зеленый, Синий), либо одно совокупное числовое значение. Если вы хотите использовать произвольный цвет, его можно вычислить по следующей формуле:
Цвет = Red + (Green * 256) + (Blue * 65536)
Рассмотрим несколько популярных сочетаний:
Покраска фона — это лишь часть возможностей. Чтобы сделать отчет по-настоящему профессиональным, проанализируем методы управления шрифтами и рамками.
1. Управление шрифтом:
Для выделения итогов часто используются следующие методы объекта Область:
Полужирный(1) — делает текст жирным.Наклонный(1) — устанавливает курсивное начертание.Подчеркнутый(1) — добавляет нижнее подчеркивание.РазмерШрифта(12) — устанавливает кегль шрифта.2. Управление рамками:
Если нужно программно обвести ячейку или группу ячеек, используйте метод Рамка(). Значения параметра определяют тип линии (например, 1 — тонкая, 2 — жирная, 4 — пунктирная). Метод ЦветРамки() позволяет задать цвет этих линий.
// Пример создания выделенной области с рамкой и жирным шрифтом
Обл = Таб.Область(НомСтр, 1, НомСтр, 10);
Обл.Рамка(2); // Жирная рамка вокруг всей области
Обл.Полужирный(1);
Обл.ЦветТекста(0, 0, 255); // Синий текст
Выясним причину, по которой отчеты могут формироваться медленно. Если в цикле по тысячам строк обращаться к каждой ячейке через Таб.Область(...).ЦветФона(...), это создает значительную нагрузку на процессор. Для оптимизации рекомендуется использовать следующие приемы:
КопироватьПараметры(ОбластьИсточник).В 1С 7.7 существует интересная возможность использовать цвета, заданные в настройках операционной системы пользователя. Для этого в методах установки цвета используются отрицательные числа от -2 до -25. Например:
-2 — Цвет текста окна.-3 — Цвет фона выделения.-15 — Цвет фона морды (face) кнопок и панелей.Это позволяет вашему отчету гармонично вписываться в цветовую схему, выбранную пользователем в Windows. Для интерактивного подбора оттенков и их числовых кодов можно использовать обработку для выбора цвета в 1С 7.7.
Резюме: Мы рассмотрели основные способы программного управления оформлением табличного документа. Наиболее эффективным является комбинированный подход: использование заранее подготовленных секций макета для стандартных ситуаций и точечное применение метода Область().ЦветФона() для реализации сложной логики раскраски. При необходимости автоматизировать оформление данных подойдёт подсистема универсальной раскраски таблиц.