| 
    
        
     
     | 
    
  | 
К списку родителей присоединить все элементы в иерархии | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Loko    
     26.09.17 
            ✎
    05:19 
 | 
         
        Всем привет. Есть список Родителей номенклатуры (произвольным образом сформирован), как присоединить к нему все элементы в иерархии к каждому родителю?     
         | 
|||
| 
    1
    
        mehfk    
     26.09.17 
            ✎
    05:54 
 | 
         
        Запрос где?     
         | 
|||
| 
    2
    
        Loko    
     26.09.17 
            ✎
    06:03 
 | 
         
        я делаю отчет в скд. делаю через один набор данных. возможно неправильно так. 
 
        более подробно задача: есть документ "План продаж". Там табличная Часть, где реквизит Группа номенклатуры и Сумма (план). И нужно прикрутить сколько было продаж за период по каждой указанной группе (факт). запрос встал пока так( ВЫБРАТЬ РАЗЛИЧНЫЕ СТ_ПланыПродаж.План, СТ_ПланыПродаж.ГруппаНоменклатуры ИЗ Документ.СТ_ПланыПродаж.Планы КАК СТ_ПланыПродаж ГДЕ СТ_ПланыПродаж.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода а дальше как прикручивать продажи по каждой группе в сумме за период?  | 
|||
| 
    3
    
        Мимохожий Однако    
     26.09.17 
            ✎
    06:19 
 | 
         
        Добавь условие В ИЕРАРХИИ (&МассивГруппНоменклатурыИзТЧ)     
         | 
|||
| 
    4
    
        Loko    
     26.09.17 
            ✎
    06:21 
 | 
         
        (3) а в СКД как этот массив добавить?     
         | 
|||
| 
    5
    
        Мимохожий Однако    
     26.09.17 
            ✎
    06:56 
 | 
         
        (4) Запросом к табличной части документа     
         | 
|||
| 
    6
    
        Loko    
     26.09.17 
            ✎
    08:40 
 | 
         
        (5) хорошо, условие добавлю. отберу номенклатуру. но как потом соединить полученный список номенклатуры со списком родителей? номенклатура же на разных уровнях может быть, у каждой свой родитель...     
         | 
|||
| 
    7
    
        Loko    
     26.09.17 
            ✎
    09:11 
 | 
         
        вот так сделал. но очень долго работает:
 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ | ГруппыНоменклатуры.ГруппаНоменклатуры |ПОМЕСТИТЬ Родители |ИЗ | &ГруппыНоменклатуры КАК ГруппыНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Родитель, | Родители.ГруппаНоменклатуры |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Родители КАК Родители | ПО (Родители.ГруппаНоменклатуры = Номенклатура.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель.Родитель.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель) | ИЛИ (Родители.ГруппаНоменклатуры = Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель) |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппыНоменклатуры) | И Номенклатура.ЭтоГруппа = ЛОЖЬ";  | 
|||
| 
    8
    
        Loko    
     26.09.17 
            ✎
    09:12 
 | 
         
        может кто подскажет как оптимальнее сделать?     
         | 
|||
| 
    9
    
        DrShad    
     26.09.17 
            ✎
    09:44 
 | 
         
        ВЫБРАТЬ
 
        Номенклатура.Ссылка ПОМЕСТИТЬ Родители ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В(&мРодителей) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Номенклатура.Ссылка КАК Элемент ПОМЕСТИТЬ Элементы ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ Родители.Ссылка ИЗ Родители) И НЕ Номенклатура.ЭтоГруппа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Номенклатура.Ссылка КАК РодителиНижнегоУровня, ВЫБОР КОГДА Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Ссылка ИНАЧЕ Номенклатура.Родитель КОНЕЦ КАК Родитель ПОМЕСТИТЬ ТаблицаРодителей ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа И Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ Родители.Ссылка ИЗ Родители) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Элементы.Элемент, ТаблицаРодителей.Родитель ИЗ ТаблицаРодителей КАК ТаблицаРодителей ЛЕВОЕ СОЕДИНЕНИЕ Элементы КАК Элементы ПО ТаблицаРодителей.РодителиНижнегоУровня = Элементы.Элемент.Родитель  | 
|||
| 
    10
    
        DrShad    
     26.09.17 
            ✎
    09:45 
 | 
         
        как-то так     
         | 
|||
| 
    11
    
        Loko    
     26.09.17 
            ✎
    10:32 
 | 
         
        (10) спасибо!     
         | 
|||
| 
    12
    
        Loko    
     26.09.17 
            ✎
    10:37 
 | 
         
        (10) хотя не работает, если уровней больше 2-х.     
         | 
|||
| 
    13
    
        DrShad    
     26.09.17 
            ✎
    10:37 
 | 
         
        (12) да ладно     
         | 
|||
| 
    14
    
        DrShad    
     26.09.17 
            ✎
    10:40 
 | 
         
        действительно, ща поправим     
         | 
|||
| 
    15
    
        Ildarovich    
     26.09.17 
            ✎
    11:14 
 | 
         
        Еще вот этот подход http://catalog.mista.ru/public/158512/ для развития кругозора можно посмотреть, хотя при большом количестве элементов справочника тоже может быть долго.     
         | 
|||
| 
    16
    
        DrShad    
     26.09.17 
            ✎
    11:47 
 | 
         
        проще всего собрать таблицу отношений всех групп к родителям верхнего уровня и ее загнать в запрос     
         | 
|||
| 
    17
    
        Ildarovich    
     26.09.17 
            ✎
    11:54 
 | 
         
        (16) в (15) это делается запросом. Таблица называется "транзитивное замыкание"     
         | 
|||
| 
    18
    
        Radkt    
     26.09.17 
            ✎
    12:35 
 | 
         
        (0) Почему нельзя список групп загнать в массив и сделать отбор по ним и иерархические итоги по номенклатуре??     
         | 
|||
| 
    19
    
        Radkt    
     26.09.17 
            ✎
    12:36 
 | 
         
        в (3) видимо так же предложили     
         | 
|||
| 
    20
    
        DrShad    
     26.09.17 
            ✎
    12:38 
 | 
         
        (18), (19) сделай пример     
         | 
|||
| 
    21
    
        DrShad    
     26.09.17 
            ✎
    12:39 
 | 
         
        (17) это понятно, но там ограничение на уровень вложенности, а если верхнего родителя искать рекурсией, то ограничений не будет     
         | 
|||
| 
    22
    
        Radkt    
     26.09.17 
            ✎
    12:49 
 | 
         
        (21)ну да если всю иерархию выводить не нужно, то не подойдет     
         | 
|||
| 
    23
    
        Ildarovich    
     26.09.17 
            ✎
    13:19 
 | 
         
        (21) Ограничений на самом деле нет, поскольку каждый каскад там увеличивает число уровней вдвое, поэтому взяв пять каскадов, получим решение для максимум 32-х уровней. Для практических целей это более чем достаточно. Параноики могут использовать десять каскадов - 1024 уровня. Не думаю, что где-либо используется такой "глубокий" справочник.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |