Структура подчиненности запросом #759885


#0 by Мистикан
Континент страхование. Заключается полис (док1), потом по полису происходят изменения создается еще один (док2), потом может быть еще и еще. Первоначальный полис в последующих хранится в реквизите СтарыйПолис,последующие по хранятся в реквизите ПредыдущийПолис. ИмяДок   СтарыйПолис    ПредыдущийПолис Док1 Док2     Док1           Док3     Док1           Док2 Док4     Док1           Док3 Как запросом собрать эту последовательность в цепочку? Пятницо, 16.11 башка вообще не хочет ничего придумывать (((
#1 by su_mai
>потом может быть еще и еще. Кроме рекурсии ничего не подскажу
#2 by Artful Den
Да, без рекурсии никак
#3 by aleks_default
критерием отбора
#4 by mikecool
это если известен корень
#5 by aleks_default
Ну тогда произвольная иерархия в СКД(если тип документа один)
#6 by Ildarovich
Вот в этой статье есть решение: . Там приведена функция, которая строит и выполняет запрос. Если ножен только запрос, его можно получить, запустив эту функцию и вставив "Сообщить" в нужное место. В функции только "Пролог" нужно на свой случай переделать, вставив вместо
#7 by su_mai
А мне понравилось :) А решал подобную задачу получения таблицы "счет - родитель" по всей иерархии, но использовал вызов запроса в цикле, по тем счетам где родитель не Null. А если не секрет, от куда пришла идея про транзитивное соединение -непосредственно из математики или еще от куда то?
#8 by Ildarovich
Транзитивное замыкание - это не идея решения, а элемент формулировки задачи. Конечно, это математический термин. Собственно решение - это алгоритм матричного умножения. Хотя я до него вроде сам когда-то додумался (в поиске быстрого способа определить достижимые состояния системы с известными связями состояний), алгоритм известный, в википедии он есть.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С