При построении отчетов в Системе Компоновки Данных (СКД) с вложенными группировками часто возникает задача сделать вывод более читаемым. Стандартная проблема — когда значение родительской группировки дублируется в каждой строке дочерней, визуально загромождая отчет. Рассмотрим на примере отчета с группировками "Начальник" и "Сотрудник", как добиться иерархического отображения данных без лишних повторов.
Проанализируем типичную ситуацию. Изначально отчет выглядит так:
Начальник Сотрудник Показатель
НачИванов 1000
НачИванов СотрПетров 600
НачИванов СотрСидоров 400
Наша цель — привести его к следующему виду, где имя начальника выводится только один раз для всей его группы сотрудников:
Начальник Сотрудник Показатель
НачИванов 1000
СотрПетров 600
СотрСидоров 400
Разберем два основных способа решения этой задачи: стандартный механизм настроек СКД и альтернативный вариант с использованием условного оформления.
Это основной и самый правильный метод, предусмотренный разработчиками платформы именно для таких случаев. Он позволяет управлять тем, как поля родительской группировки отображаются относительно полей дочерней.
Разберем по шагам, как его применить:
У этого свойства есть несколько значений, которые кардинально меняют вид отчета. Проанализируем их:
Вместе — это значение по умолчанию. Оно указывает системе размещать поля родительской группировки ("Начальник") в тех же колонках, что и поля текущей группировки ("Сотрудник"). Именно это и приводит к визуальному повторению, которое мы хотим устранить.
Отдельно — это то, что нам нужно. При выборе этого значения СКД создает отдельные колонки для полей родительской группировки. В результате "Начальник" будет выведен слева в своей колонке, а "Сотрудник" — правее, в своей. Значение родительской группы будет выведено только один раз, в начале блока. Это и есть прямое решение нашей задачи.
Отдельно и только в итогах — вариант, похожий на предыдущий, но поля группировки выводятся только в итоговой строке по этой группировке, что для нашей задачи не подходит.
Таким образом, для достижения нужного результата достаточно установить для свойства "Расположение полей группировок" у группировки "Сотрудник" значение "Отдельно". После этого отчет примет требуемый иерархический вид.
Этот метод является скорее обходным путем, но может быть полезен в нестандартных ситуациях. Суть его в том, чтобы не менять структуру вывода колонок, а просто "спрятать" текст в тех ячейках, где он не нужен.
Посмотрим, как это настроить:
Текст и в качестве значения укажите пустую строку: "".Важный нюанс: как отмечено в обсуждении на форуме, у этого метода есть недостаток. Он просто делает текст в ячейке невидимым, но не меняет структуру колонок. Если поля "Начальник" и "Сотрудник" должны были выводиться в одной колонке, то после применения этого правила вы получите пустые ячейки, а не аккуратный иерархический отступ, как в первом способе. Поэтому этот вариант стоит использовать с осторожностью.
Иногда причина дублирования может скрываться не в настройках группировок, а в настройках детальных записей. Если в структуре отчета есть группировка "Детальные записи", и для нее в выбранных полях стоит значение "Авто", система может автоматически подтягивать поля из родительских группировок.
Чтобы это проверить:
Подводя итог, для создания классического иерархического отчета без дублирования данных в СКД наиболее правильным и простым решением является использование свойства "Расположение полей группировок" со значением "Отдельно" в настройках дочерней группировки.