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