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