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