Как избавиться от повторяющихся записей в отчете СКД?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются с проблемой визуального дублирования строк. Ситуация обычно выглядит так: несколько строк подряд содержат идентичные данные в первых колонках (например, «Подразделение», «Номенклатура»), и лишь в последней колонке значения различаются (например, «Наименование операции»). В результате отчет становится трудночитаемым, превращаясь в «лесенку» или таблицу с избыточной информацией. Разберем подробно, почему это происходит и какими методами можно добиться компактного и профессионального вида отчета.

Выясним причину появления дублей

Прежде чем приступать к исправлению, проанализируем ситуацию. В СКД записи не дублируются «просто так». Если вы видите две строки, которые кажутся одинаковыми, скорее всего, они различаются значениями в полях, которые выведены в детальные записи, но не включены в группировку. Рассмотрим механизм: когда мы используем «Детальные записи», система выводит каждую строку из результата запроса. Если в запросе соединяются две таблицы (например, «Заказы» и «Состав заказов»), то на один заказ будет столько строк, сколько в нем позиций. Если мы выводим только номер заказа, он будет повторяться.

В контексте обсуждаемой темы важно понимать: если в последней колонке (например, «Наименование операции») значения разные, СКД обязана вывести разные строки, чтобы показать каждое уникальное значение. Наша задача — либо «схлопнуть» эти значения, либо изменить структуру вывода.

Способ 1. Настройка иерархии группировок

Самый простой и правильный путь в СКД — отказ от плоского вывода через детальные записи в пользу структурированных группировок. Разберем этот процесс по шагам:

  1. Перейдем на вкладку «Настройки» в схеме компоновки данных.
  2. Вместо использования одного элемента «Детальные записи», создадим иерархию.
  3. Добавим группировку по тем полям, которые повторяются (например, «Пункт», «Наименование»).
  4. Внутри этой группировки добавим подчиненную группировку по полю, которое вызывает «размножение» строк (например, «Наименование операции»).

Важный нюанс: Чтобы поля группировки не выводились «лесенкой» (в разных строках), проанализируем настройки расположения. Перейдем в «Другие настройки» и установим параметр Расположение полей группировок в значение Вместе. Это позволит вывести значения родительских групп в той же строке, где начинаются детальные данные, минимизируя пустое пространство.

Способ 2. Использование агрегатной функции «СоединитьСтроки»

Если нам не принципиально иметь отдельную строку для каждой операции, и мы хотим видеть все операции через запятую в одной ячейке, воспользуемся мощным механизмом ресурсов. Рассмотрим подробнее, как это реализовать:

  1. Перейдем на закладку «Ресурсы».
  2. Выберем поле, которое вызывает дублирование (например, НаименованиеОперации).
  3. В колонке «Выражение» напишем функцию: СоединитьСтроки(НаименованиеОперации, ", ")
  4. В настройках отчета удалим это поле из детальных записей и оставим только в выбранных полях группировки.

В результате СКД автоматически сгруппирует данные по всем остальным полям, а различающиеся операции «схлопнет» в одну строку, перечислив их через запятую. Это идеальный вариант для компактных управленческих отчетов.

Способ 3. Работа с макетами компоновки данных

Иногда стандартных настроек группировок недостаточно, чтобы отчет выглядел именно так, как требует заказчик. В этом случае на помощь приходят Макеты. Рассмотрим, как применить это решение, когда нужно жестко зафиксировать порядок полей и их визуальное представление:

В схеме СКД перейдем на закладку «Макеты». Здесь мы можем создать индивидуальный макет для группировки или для «Поля». Это позволяет:

Ранее в обсуждении было отмечено, что использование макетов является наиболее гибким, хоть и трудозатратным методом. Если вы создаете макет группировки, не забудьте указать Область (диапазон ячеек в табличном документе) и связать параметры макета с полями СКД.

Способ 4. Управление ролями полей и уникальностью

Проанализируем ситуацию с точки зрения набора данных. На закладке «Наборы данных» для каждого поля есть колонка «Роль». Если СКД неправильно понимает структуру ваших данных, она может дублировать строки при расчете итогов.

Посмотрим на настройки роли поля:

Способ 5. Скрытие повторов через условное оформление

Если нам нужно сохранить структуру строк, но визуально скрыть повторяющиеся значения в колонках, можно воспользоваться Условным оформлением. Однако более профессиональным методом считается настройка Вертикальное объединение в «Других настройках» отчета.

Если установить Вертикальное объединение в значение Использовать, то СКД автоматически объединит ячейки с одинаковыми значениями в одной колонке, которые идут подряд. Это создаст чистый вид без потери данных.

Рекомендации по порядку полей

Часто при добавлении группировок нарушается привычный порядок колонок. Чтобы вернуть поля в нужное русло, выполните следующие действия:

  1. В настройках выбранных полей группировки снимите флаг Авто.
  2. Вручную добавьте нужные поля в строгом порядке сверху вниз.
  3. Если поле должно участвовать в группировке, но не должно отображаться, уберите его из «Выбранных полей», оставив только в «Группировке».

Используя предложенные методы — от грамотной настройки иерархии группировок до применения функции СоединитьСтроки и макетов — вы сможете создавать отчеты любой сложности без нежелательных повторений данных.

← На главную