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