Отдел продаж:

“Лишняя иерархия” в СКД. Подробная инструкция решения

Из-за чего возникает “лишняя иерархия”

При разработке отчетов на Системе Компоновки Данных (далее СКД) есть определенные особенности. Одна из таких особенностей это явление, которое мы назовем “лишняя иерархия”. Происходит это, когда в настройках поля группировки отчета выбирается тип группировки “Иерархия”.

Поле группировки

При построении результата, когда пользователь разворачивает верхний уровень иерархии, он видит не только элементы нижнего уровня, но и сам элемент верхнего уровня. Например, в группу “Авто” входят элементы “БМВ”, “Опель” и “Ауди”. Когда пользователь развернет элемент “Авто”, он увидит 4 записи – три марки автомобилей и название самой группы “Авто”. Такая особенность была сделана разработчиками специально. Но иногда такая реализация не совсем подходит. Пока не предусмотрено какой-то отдельной настройки, чтобы не выводить “лишнюю иерархию”. Из-за этого приходится использовать некоторые хитрости. Одна из таких хитростей и будет рассмотрена в данной статье. Если же у вас нет времени и возможности разбираться в этом, то наша компания с радостью готова помочь Вам с доработками и внедрением 1С.

Исходный результат выполнения отчета, "Лишняя иерархия"

Один из способов решения

На вкладке настроек Схемы Компоновки Данных необходимо перейти на вкладку пользовательские поля и в контекстном меню выбрать пункт “Новое поле выражение…”. Это поле будет вычислять родителя элемента, позже вы поймете, зачем оно нужно. Можно указать любой заголовок, например, “ЛишняяИерархия”. В Выражение детальных записей и Выражение итоговых записей указываем следующий код:

Выбор
Когда Уровень() = 0
Тогда Неопределено
Иначе ВычислитьВыражение("Имущество", , "Иерархия")
Конец

Вместо слова “Имущество” необходимо указать имя вашего поля, у которого указан тип группировки Иерархия. Должно получиться следующее:

Пользовательское поле выражения

Созданное поле “ЛишняяИерархия” необходимо добавить в список выбранных полей в настройках поля группировки с иерархией. При этом, галочку с пользовательского поля можно убрать, чтобы оно не выводилось в итоговый отчет.

Выбранные поля

Теперь для поля группировки с иерархией необходимо создать отбор. Он нужен для того, чтобы сравнивать наше пользовательское поле с иерархическим полем, в нашем случае “Имущество”, оставляя только не равные записи. Напомню, что пользовательское поле вычисляет родителя поля группировки, кроме записей самого верхнего уровня. Таким образом, если родитель поля равен самому полю, то это “лишняя иерархия”.

Настройка отбора

Обратите внимание, что в применении должен быть выбран вариант “После группировки или для иерархии”. Также важно создать отбор не для всего отчета, а именно для поля с иерархией

Настройки поля группировки

В итоге получаем результат, когда выводятся только элементы группы без самой группы:

Итоговый результат, отсутствует "Лишняя иерархия"

Вот таким нестандартным способом можно обойти особенность работы иерархии в СКД. Больше узнать о работе с иерархией в СКД можно на сайте ИТС.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *