|   |   | 
| 
 | Подскажите как запросом получить требуемую иерархию элементов | ☑ | ||
|---|---|---|---|---|
| 0
    
        rikodroo 24.07.13✎ 15:33 | 
        Есть иерархический справочник (только элементы) ГруппаПрайсЛиста:
  Автозапчасти ВАЗ,ОКА Китайские подделки Официально от производителя Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ Автокрепеж ВАЗ, ГАЗ, УАЗ Болты Что попало Канадские гайки Болты из Гватемалы Кузовное железо ВАЗ, ГАЗ, УАЗ У каждого товара есть соотв.реквизит, так, что имеем вот такую таблицу: ["ГруппаПрайсЛиста" ; "Товар"] [Автозапчасти ВАЗ,ОКА ; Амортизатор задней подвески 2101 "FENOX" (газ) (A22365)] [Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ ; Бачок омывателя УАЗ 3160 "Патриот" (голый)] [Китайские подделки ; Бачок расширительный 1118] [Официально от производителя ; Балка передняя 2110 "АВТОВАЗ"] [Автозапчасти ВАЗ,ОКА ; Адсорбер 1118/2190] [Канадские гайки ; Винт двери 2108 М8*35] [Канадские гайки ; Винт зеркала 2108 М4*16] [Болты из Гватемалы ; Болт подвесного подшипника 2101 М8*18] [Болты ; Болт двери 2108 М10*42 (палец)] [Болты ; Болт двери бесшумный 2108 (4шт)] [Автокрепеж ВАЗ, ГАЗ, УАЗ ; Болт бампера 2105 М14*70] [Автокрепеж ВАЗ, ГАЗ, УАЗ ; Болт генератора 2101/08 М12*120] [Кузовное железо ВАЗ, ГАЗ, УАЗ ; Стойка УАЗ-469 (задней двери) лев. "УАЗ"] [Кузовное железо ВАЗ, ГАЗ, УАЗ ; Стойка УАЗ-469 (задней двери) прав. "УАЗ"] [Кузовное железо ВАЗ, ГАЗ, УАЗ ; Порог УАЗ "Патриот" (левый) "УАЗ"] [Кузовное железо ВАЗ, ГАЗ, УАЗ ; Порог УАЗ "Патриот" (правый) "УАЗ"] [Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ ; Амортизатор передней подвески ГАЗ Соболь 2217 "Плаза" (2180)] Запрос вида: ВЫБРАТЬ Номенклатура.ГруппаПрайсЛиста КАК ГруппаПрайсЛиста, Номенклатура.Ссылка КАК Товар ИЗ Справочник.Номенклатура КАК Номенклатура ИТОГИ ПО ГруппаПрайсЛиста ИЕРАРХИЯ выдает данные таким образом: Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ <NULL> Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ Бачок омывателя УАЗ 3160 "Патриот" (голый) Автозапчасти ГАЗ,УАЗ, ГАЗ 53, ПАЗ Амортизатор передней подвески ГАЗ Соболь 2217 "Плаза" (2180) Кузовное железо ВАЗ, ГАЗ, УАЗ <NULL> Кузовное железо ВАЗ, ГАЗ, УАЗ Стойка УАЗ-469 (задней двери) лев. "УАЗ" Кузовное железо ВАЗ, ГАЗ, УАЗ Стойка УАЗ-469 (задней двери) прав. "УАЗ" Кузовное железо ВАЗ, ГАЗ, УАЗ Порог УАЗ "Патриот" (левый) "УАЗ" Кузовное железо ВАЗ, ГАЗ, УАЗ Порог УАЗ "Патриот" (правый) "УАЗ" Автозапчасти ВАЗ,ОКА <NULL> Автозапчасти ВАЗ,ОКА <NULL> Автозапчасти ВАЗ,ОКА Амортизатор задней подвески 2101 "FENOX" (газ) (A22365) Автозапчасти ВАЗ,ОКА Адсорбер 1118/2190 Китайские подделки <NULL> Китайские подделки Бачок расширительный 1118 Официально от производителя <NULL> Официально от производителя Балка передняя 2110 "АВТОВАЗ" Автокрепеж ВАЗ, ГАЗ, УАЗ <NULL> Болты <NULL> Болты Болт двери 2108 М10*42 (палец) Болты Болт двери бесшумный 2108 (4шт) Автокрепеж ВАЗ, ГАЗ, УАЗ <NULL> Автокрепеж ВАЗ, ГАЗ, УАЗ Болт бампера 2105 М14*70 Автокрепеж ВАЗ, ГАЗ, УАЗ Болт генератора 2101/08 М12*120 Что попало <NULL> Канадские гайки <NULL> Канадские гайки Винт двери 2108 М8*35 Канадские гайки Винт зеркала 2108 М4*16 Болты из Гватемалы <NULL> Болты из Гватемалы Болт подвесного подшипника 2101 М8*18 Мне не нравится, что например в "подвыборке" Автозапчасти ВАЗ,ОКА <NULL> - имеется таже группа прайс листа (Автозапчасти ВАЗ,ОКА <NULL>), в которое представлены элементы, для которых эта группа корневая. Как сделать, что бы (на примере это группы) было вместо: Автозапчасти ВАЗ,ОКА <NULL> Автозапчасти ВАЗ,ОКА <NULL> Автозапчасти ВАЗ,ОКА Амортизатор задней подвески 2101 "FENOX" (газ) (A22365) Автозапчасти ВАЗ,ОКА Адсорбер 1118/2190 Китайские подделки <NULL> Китайские подделки Бачок расширительный 1118 Официально от производителя <NULL> Официально от производителя Балка передняя 2110 "АВТОВАЗ" вот так: Автозапчасти ВАЗ,ОКА <NULL> Китайские подделки <NULL> Китайские подделки Бачок расширительный 1118 Официально от производителя <NULL> Официально от производителя Балка передняя 2110 "АВТОВАЗ" * Автозапчасти ВАЗ,ОКА Амортизатор задней подвески 2101 "FENOX" (газ) (A22365) * Автозапчасти ВАЗ,ОКА Адсорбер 1118/2190 Я понимаю, что при обходе результата запрос, можно эту ситуацию разрулить, но может как-то и в запросе можно? | |||
| 1
    
        zhig75 24.07.13✎ 15:35 | 
        Мдя ну и каша!     | |||
| 2
    
        rikodroo 24.07.13✎ 15:36 | 
        да, чего то форматирование неочень. Если скопировать и вставить в блокнот, то нормально     | |||
| 3
    
        olegves 24.07.13✎ 15:38 | 
        (0) выгрузить в дерево значений, но откуда у тебя в справочнике значения Null?     | |||
| 4
    
        zhig75 24.07.13✎ 15:38 | 
        Ты напиши какой алгоритм хочеш получить, а то тут китайские поделки, ваз, ока, там, маз, хрен разбереш.     | |||
| 5
    
        rikodroo 24.07.13✎ 15:40 | 
        (3) в справочнике нет null. Это, когда итог делаеш появляется. Это нормально.     | |||
| 6
    
        rikodroo 24.07.13✎ 15:46 | 
        Ок, попробую.
  Есть таблица вида (Товар, ГруппаПрайсЛиста) ГруппаПрайсЛиста - это иерархические справочник, в иерархии которого я хочу получить таблицу товаров. Притом в таком виде - сначала идет группа (или подгруппа), а потом элементы, для которых эта группа корневая: ГруппаПрайсЛиста1 ПодгруппаА ТоварХ ПодгруппаБ ТоварУ ТоварZ ТоварO ГруппаПрайсЛиста2 ТоварQ ГруппаПрайсЛиста2 ПодгруппаА ПодгруппаА ТоварR ТоварU | |||
| 7
    
        rikodroo 24.07.13✎ 15:46 | 
        ЧТобы при формировании прайса не заморачиваться с обходом результата запроса в общем     | |||
| 8
    
        olegves 24.07.13✎ 15:47 | 
        (5) если итоги, то делай обход по иерархии     | |||
| 9
    
        zhig75 24.07.13✎ 15:49 | 
        ИТОГИ
  СРЕДНЕЕ(Цена), СУММА(КоличествоОборот), СУММА(КоличествоПриход), СУММА(КоличествоРасход) ПО ОБЩИЕ, Номенклатура ИЕРАРХИЯ | |||
| 10
    
        rikodroo 24.07.13✎ 15:50 | 
        (8) с иерархией получается типа:
  ГруппаПрайсЛиста1 ПодгруппаА ТоварХ ПодгруппаБ ТоварУ ГруппаПрайсЛиста1 ТоварZ ТоварO ГруппаПрайсЛиста2 ТоварQ ГруппаПрайсЛиста2 ПодгруппаВ ПодгруппаГ ТоварR ГруппаПрайсЛиста2 ТоварU | |||
| 11
    
        zhig75 24.07.13✎ 15:50 | 
        (9) это пример куска запроса который по часа назад делал. Делай итоги по элементы и иерархия.     | |||
| 12
    
        rikodroo 24.07.13✎ 15:52 | 
        (11) это не решает проблему из (6)     | |||
| 13
    
        zhig75 24.07.13✎ 15:52 | 
        Подгруппа Б у тебя родитель Подгрупп А?     | |||
| 14
    
        rikodroo 24.07.13✎ 15:53 | 
        нет     | |||
| 15
    
        zhig75 24.07.13✎ 15:53 | 
        Запрос вываливай!     | |||
| 16
    
        rikodroo 24.07.13✎ 15:54 | 
        ВЫБРАТЬ
  Номенклатура.ГруппаПрайсЛиста КАК ГруппаПрайсЛиста, Номенклатура.Ссылка КАК Товар ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ГруппаПрайсЛиста = ЗНАЧЕНИЕ(Справочник.плГруппыДляПрайсЛиста.ПустаяСсылка) ИТОГИ ПО ГруппаПрайсЛиста ИЕРАРХИЯ | |||
| 17
    
        rikodroo 24.07.13✎ 15:54 | 
        у групп иерархия такая:
  ГруппаПрайсЛиста1 ПодгруппаА ПодгруппаБ ГруппаПрайсЛиста1 ГруппаПрайсЛиста2 ГруппаПрайсЛиста2 ПодгруппаВ ПодгруппаГ ГруппаПрайсЛиста2 | |||
| 18
    
        rikodroo 24.07.13✎ 15:55 | 
        блин, опять я маленько неверно написал
  (17) - такая получается, а мне надо: ГруппаПрайсЛиста1 ПодгруппаА ПодгруппаБ ГруппаПрайсЛиста2 ПодгруппаВ ПодгруппаГ | |||
| 19
    
        rikodroo 24.07.13✎ 15:56 | 
        (15) проще тебе в общем аналогичный (16) запрос выполнить и увидиш     | |||
| 20
    
        zhig75 24.07.13✎ 16:00 | 
        Подгруппа А у тебя Родитель Подгруппы Б.
  Вот тебе простой запрос и пища для размышлений. ВЫБРАТЬ Номенклатура.Наименование, Номенклатура.Родитель КАК Родитель ИЗ Справочник.Номенклатура КАК Номенклатура ИТОГИ ПО Родитель ИЕРАРХИЯ | |||
| 21
    
        rikodroo 24.07.13✎ 16:02 | 
        (20) ты в иерархическом справочнике делаеш итоги по родителю, а теперь сделай как у меня таблицу и посмотри, что запрос выдаст     | |||
| 22
    
        rikodroo 24.07.13✎ 16:06 | 
        +(20) Подгруппа А  Родитель Подгруппы Б - да, именно так. Но вот как сделать, чтобы ГруппаПрайсЛиста1 не была подгруппой себяже?     | |||
| 23
    
        zhig75 24.07.13✎ 16:06 | 
        (21) я нихрена не понимаю.     | |||
| 24
    
        rikodroo 24.07.13✎ 16:13 | 
        (23) если так делать то будет:
  1)ПодгруппаА,ПодгруппаБ,ГруппаПрайсЛиста1 - на одном уровне в группе ГруппаПрайсЛиста1 2)ПодгруппаВ, ГруппаПрайсЛиста3 - на одном уровне в ГруппаПрайсЛиста3 ГруппаПрайсЛиста1 ПодгруппаА ТоварХ ПодгруппаБ ТоварУ ГруппаПрайсЛиста1 ТоварZ ТоварO ГруппаПрайсЛиста2 ТоварQ ГруппаПрайсЛиста3 ПодгруппаВ ПодгруппаГ ТоварR ГруппаПрайсЛиста3 ТоварU Так вот надо, чтобы было так: ГруппаПрайсЛиста1 ПодгруппаА ТоварХ ПодгруппаБ ТоварУ ТоварZ ТоварO ГруппаПрайсЛиста2 ТоварQ ГруппаПрайсЛиста3 ПодгруппаВ ПодгруппаГ ТоварR ТоварU | |||
| 25
    
        rikodroo 24.07.13✎ 16:13 | 
        Сейчас нормально, без ошибок написал и отформатировалось     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |