При разработке отчетов и печатных форм в среде 1С часто возникает задача визуального выделения данных. Например, необходимо подсветить цветом ячейки, в которых значения из двух разных источников не совпадают. Давайте разберем, как реализовать такую логику наиболее эффективно.
Наиболее правильным и интуитивно понятным подходом является изменение оформления ячеек непосредственно в момент формирования табличного документа. В этот момент мы имеем доступ к объекту ОбластьЯчеекТабличногоДокумента, который позволяет динамически настраивать стилевые параметры.
Для реализации логики сравнения значений используем следующий алгоритм. Допустим, у нас есть область ОбластьДетальныхЗаписей, в которую выводятся данные из Выборка. Мы проверяем условие и применяем свойства ЦветФона и ЦветТекста:
Если Выборка.ЗначениеБазы1 <> Выборка.ЗначениеБазы2 Тогда
ОбластьДетльныхЗаписей.Область(имяОбласти).ЦветФона = WebЦвета.Красный;
ОбластьДетльныхЗаписей.Область(имяОбласти).ЦветТекста = WebЦвета.Белый;
Иначе
ОбластьДетльныхЗаписей.Область(имяОбласти).ЦветФона = WebЦвета.Белый;
ОбластьДетльныхЗаписей.Область(имяОбласти).ЦветТекста = WebЦвета.Черный;
КонецЕсли;
Обратите внимание на параметр имяОбласти. Если вы предварительно задали имена ячеек в макете через свойства (вкладка «Имя» в свойствах ячейки), вы можете обращаться к ним напрямую. Если же имена не заданы, можно воспользоваться адресацией по координатам: "R1C5:R2C5", где R — строка (row), а C — колонка (column).
Если логика сравнения становится сложной (например, требует глубокого анализа данных из разных источников), лучше вынести эту логику из цикла вывода. Это сделает код чище и упростит отладку. Рассмотрим шаги подготовки данных:
ТаблицаЗначений.НужноПодсветить типа Булево.ТаблицаЗначений, проверяя все необходимые условия.ТаблицаЗначений просто считывайте флаг из этой колонки и применяйте цвет.Если вы разрабатываете отчет на базе КомпоновкаДанных, не стоит забывать про встроенную функциональность Условного оформления. Это более архитектурно верный путь. В настройках отчета (на вкладке «Условное оформление») можно задать правило: если значение ячейки А не равно значению ячейки Б, то применить оформление (фон, шрифт). Это позволяет избежать написания сложного программного кода в модуле объекта и делает логику настройки доступной для изменения в режиме «Предприятие».
Работая с табличными документами, помните о следующих нюансах:
Стили. Вместо жесткого указания цветов используйте ЦветаСтиля. Это позволит централизованно менять дизайн всего отчета, не переписывая программный код.ОбластьЯчеекТабличногоДокумента и ОбластьТабличногоДокумента. Для изменения оформления уже выведенной в документ ячейки используйте метод НайтиОбласть или конструктор по координатам.Следуя этим простым правилам, вы сможете реализовать красивое и функциональное оформление печатных форм и отчетов, сохраняя при этом чистоту и читаемость вашего программного кода.