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