Приветствую коллеги,
возникла задача, построить на СКД отчет который бы из Регистра сведений выбрал данные связанные между собой через промежуточные записи.
Связка может выглядит следующим образом.
Объект1 связан с Объектом2 через неизвестное количество подобъектов, известны типы Объектов, типы подобъектов могут быть разные, но выяснить и составить список значений в принципе реально.
Так же есть и такие случаи что Объект1 связан с Обьектом2 и Обьектом3 и т.д. так же через неизвестное количество подобъектов.
Все эти цепочки нужно вывести в отчет
(6)При неизвестном количестве промежуточных звеньев в цепи между объектами, статичными настройками СКД, даже произвольными, думаю не удастся добиться приемлемого результата. Только если ограничить искусственно количество рассматриваемых связей.
(8)Например рассматривать не более 10 связей, соот-но, там где их больше для получения результата, будут некорректны, зато остальные отработают.
Но это, с точки зрения получения правильного результата, ошибочное направление.
(10)
Регистр имеет всего 2 основных реквизита по которым идут операции
ВЫБРАТЬ
РСДляОтчета.ИсточникОбъект КАК ИсточникОбъект,
РСДляОтчета.ПолучательОбъект КАК ПолучательОбъект
ИЗ
РегистрСведений.РСДляОтчета.СрезПоследних() КАК РСДляОтчета
не понял каким образом достичь нужной цели через связи наборов?
(19) Тогда очень похоже, что информация по ссылке в (6) - то, что Вам нужно. Поищите еще информацию по произвольной иерархии в СКД, т.к. примером по ссылке рассматриваются не все возможные случаи.
К сожалению, могу только советовать, где копать, т.к. описание Вашей задачи очень абстрактное. Если разберетесь с произвольной иерархией в СКД, но не сможете ее применить, то описывайте Вашу задачу полностью с конкретикой. Будем смотреть, как решать.
Каждая пара получается своим набором данных, если я правильно понял.
Для примера1 и примера 2 разное количество наборов. В СКД статичные связи наборов. Или избыточно прописывать максимально возможное количество или забить на СКД.
Я другого варианта не вижу. Предложите?
(13)Да, поэтому и говорю, что только рекурсия спасет, а она в СКД не возможна. Ну по крайней мере я о ней ничего не знаю. И буду рад и признателен тому, кто просветит на эту тему, т.к. весьма часто встречаются задачи похожей логики. Часто это связано с неправильной организацией хранения данных.
(12) Не все правильно поняли. Взгляните еще раз на пример по приведенной ссылке. Там набор данных связан сам с собой. Один раз. Потом взгляните на картинку с результатом. Там есть данные до третьего уровня вложенности.
Должно подойти решение из вот этой статьи: Транзитивное замыкание запросом. Есть еще несколько статей у меня в профиле, развивающие эту тему.
Только обратите внимание: в исходной статье предлагается не запрос, а функция, строящая текст запроса. Это, наверное, может смущать.
На деле можно сразу записать запрос под эту задачу по приведенному принципу.
В комментариях к статье это объясняется.