понедельник, 27 марта 2017 г.

Рекурсивные запросы для справочников 1с 7

Приветсвую! Столкнулся с медленной работой встроенных функций, Уровень(), принадлежиГруппе(), есть в прямых запросах УложитьСписокОбъектов, но это тоже не спасло давало все подчиненные элементы.
Почитал про рекурсивные запросы попробовал, работает! Привожу пример может кому пригодится

           |WITH Parts(ParentID, ID, goodsLevel, СотрудникИД) as
           |(  
           |    SELECT mainGoods.ParentID, mainGoods.ID, 
           |        0 goodsLevel, спрСотрудники.ParentExt СотрудникИД  
           |    FROM SC14 mainGoods INNER JOIN SC1875 спрСотрудники ON спрСотрудники.SP1873 = mainGoods.ID
           |    WHERE mainGoods.ISFolder = 1 AND mainGoods.ParentID = $ПустойИД
           |    UNION ALL  
           |    SELECT childGoods.ParentID, childGoods.ID, goodsLevel + 1, p.СотрудникИД  
           |    FROM SC14 childGoods
           |        INNER JOIN Parts p  
           |        ON childGoods.ParentID = p.ID AND childGoods.ISFolder = 1
           | )  
           |SELECT ParentID [родитель $справочник.Товар], ID [Группа $справочник.Товар], goodsLevel,СотрудникИД [Сотрудник $справочник.Сотрудники]   
           |FROM Parts 
           |ORDER BY goodsLevel, ParentID, ID

Комментариев нет:

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