Есть справочник Укладки.
В нем есть табличная часть, состоящая из строк:
Контейнер, ВложеннаяУкладка, КоличествоУкладок
ВложеннаяУкладка - элемент того же справочника.
Во вложенной укладке, в свою очередь, тоже могут быть вложенные укладки, и так далее.
Экземпляры одной и той же вложенной укладки могут находиться на разных ветках дерева и даже в разных строках в одном контейнере, причем в любом количестве.
О зацикливании вложенности можно не беспокоиться, она всячески предотвращается.
Так вот, очень хочется в запросе для отчета получить плоский список, содержащий все вложенные укладки, оказавшиеся в одном дереве, причем с указанием количества вхождений каждой.
То есть должны быть строки:
ВложеннаяУкладка, КоличествоУкладок
И никакой иерархии.
Как сделать иерархию через связь наборов данных, я знаю, но в ней будет бардак с количеством.
А вот как без бардака все найти и посчитать?
Процедурным языком это делается просто, но не хочется вкорячивать в отчет такое решение.
Похожее попадалось на практике, решения не нашел. В итоге вывел два способа. Первый - проверять на null долгие цепочки Родитель.Родитель.Родитель... Это плохо.
Второй способ, это делать объединение запросов к различным уровням вложенности. Тогда не придется прыгать по точкам, но реализовать сложнее, и не во всех случаях поможет
Если в запросе, то можно попробовать через условия связи. Сделать связь по какому-нибудь полю "УровеньВложенности" с условием ">".
Если смотреть в строну СКД, то использовать вложенные схемы.
Может и получится.