При разработке отчетов на системе компоновки данных (СКД) одной из частых задач является визуальное акцентирование внимания на итоговых показателях. Пользователи часто просят выделить общие итоги или итоги по группировкам жирным шрифтом, цветом или фоном. Несмотря на наличие механизма Условного оформления, настройка выделения именно итоговых ячеек (особенно в таблицах) может вызвать затруднения у начинающих и даже опытных разработчиков.
В этой статье мы подробно разберем несколько методов решения этой задачи: от самых простых манипуляций в конструкторе до профессиональной работы с макетами компоновки.
Первым делом проанализируем стандартный механизм. Зачастую оформление не применяется потому, что неверно указана Область применения. В СКД по умолчанию оформление может применяться ко всей строке, что не всегда корректно для итогов.
Рассмотрим пошагово, как настроить выделение через стандартный интерфейс:
Шрифт — Жирный.В общих итогах и В итогах групп.Проанализируем нюанс: если мы настраиваем оформление на уровне всего отчета, а в структуре используется объект Таблица, то настройки «Общего отчета» могут перекрываться внутренними настройками таблицы. Поэтому попробуем применить те же настройки условного оформления непосредственно внутри элемента Таблица.
Иногда требуется выделить не все итоги, а только определенный уровень иерархии. Для этого в условии оформления можно использовать системные поля компоновки данных.
Разберем ситуацию: нам нужно выделить только самый верхний уровень итогов. В поле Условие добавим проверку системного поля СистемныеПоля.Уровень. Для общих итогов этот уровень обычно минимален (0 или 1 в зависимости от структуры). Однако стоит помнить, что доступность системных полей в условиях зависит от того, где именно (в какой группировке) выполняется расчет. Этот метод требует аккуратности при работе с иерархическими справочниками.
Если нам не принципиален конкретный оттенок или начертание, а важно само наличие акцента на итогах, воспользуемся предопределенными стилями. Выясним, как это сделать:
В настройках отчета перейдем на вкладку Другие настройки. Найдем параметр Макет оформления. Выберем один из стандартных вариантов, например, Море, Арктика или Зеленый. Большинство типовых макетов 1С уже содержат в себе правила, согласно которым Общие итоги выделяются жирным шрифтом и отделяются линиями. Это самый быстрый способ привести отчет к профессиональному виду без ручной настройки каждой ячейки.
Когда возможности условного оформления исчерпаны, а результат все еще не достигнут (например, в сложных перекрестных таблицах), мы используем механизм собственных макетов. Это гарантированный способ «заставить» ячейку выглядеть так, как нам нужно. В качестве практического руководства можно использовать рабочий пример внедрения собственных макетов в СКД.
Разберем алгоритм создания макета для общего итога:
Макет общего итога колонки.СуммаОстаток) и в свойствах ячейки свяжем этот параметр с соответствующим полем компоновки.Этот метод позволяет полностью переопределить визуализацию итогов, игнорируя любые автоматические настройки оформления. СКД при генерации отчета подставит вместо стандартной ячейки ту, которую мы нарисовали в макете.
Как было предложено в обсуждении на форуме, существует оригинальный способ через создание «дублирующего» поля. Рассмотрим его логику:
Если условное оформление на ресурс в итогах не срабатывает из-за особенностей структуры таблицы, мы создаем Пользовательское поле (выражение), которое просто равно нашему ресурсу (например, [Сумма]). Затем в настройках состава выбранных полей для итоговой колонки мы выводим именно это пользовательское поле. Поскольку для системы это новое, отдельное поле, настройки условного оформления, заданные конкретно для этого Пользовательского поля, применяются более приоритетно и стабильно. Дополнительно изучить особенности взаимодействия ресурсов и пользовательских полей при расчете итогов поможет публикация с разбором настройки вывода различных итогов для группировок.
В некоторых случаях, особенно при динамическом формировании отчета, настройки в конфигураторе могут не давать гибкости. Тогда мы прибегаем к программному коду в модуле объекта отчета. Проанализируем пример кода для установки жирного шрифта в итогах:
// В модуле объекта отчета в процедуре ПриКомпоновкеРезультата
ЭлементОформления = КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина)); // Истина - жирный
// Указываем, что оформляем поле "Сумма"
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Сумма");
ОформляемоеПоле.Использование = Истина;
// Настраиваем область применения только для итогов
ЭлементОформления.ИспользованиеОтбораПоляГруппировки = РежимИспользованияОтбораПоляГруппировки.Использовать;
ЭлементОформления.ОбластьПрименения.ВОбщихИтогах = Истина;
ЭлементОформления.ОбластьПрименения.ВИтогахГрупп = Истина;
ЭлементОформления.ОбластьПрименения.ВГруппировке = Ложь;
ЭлементОформления.ОбластьПрименения.ВДетальныхЗаписях = Ложь;
Использование программного метода гарантирует, что оформление будет добавлено в коллекцию УсловноеОформление именно с теми параметрами, которые нужны, и не будет случайно изменено пользователем в режиме 1С:Предприятие без понимания последствий.
Подведем итог нашего анализа. Если вам нужно выделить итоги жирным в СКД:
КомпоновщикНастроек.Применяя эти подходы, мы добьемся того, что отчет станет наглядным, а итоговые данные — легко читаемыми для конечного пользователя.