Имя: Пароль:
1C
1С v8
Обход результата запроса с группировкой по иерархии.
,
0 rabbidX
 
02.10.15
14:05
Запрос с типом итогов только иерархия. В дерево выгружается красиво. Хочу обойти выборкой. Указываю обход результата запроса по группировкам с иерархией. Получаю группы верхнего уровня. Ниже добраться не получается - обращаюсь к выборке методом выбрать и при любом варианте обхода получаю пустую выборку.
Как победить?
1 France
 
02.10.15
14:30
для начала запрос запостить.
2 rabbidX
 
02.10.15
14:43
ВЫБРАТЬ
    Номенклатура.Код,
    Номенклатура.Артикул,
    Номенклатура.Ссылка,
    Номенклатура.ЭтоГруппа
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В
            (ВЫБРАТЬ
                ЗначенияДополнительныхРеквизитов.Объект
            ИЗ
                РегистрСведений.ЗначенияДополнительныхРеквизитов КАК ЗначенияДополнительныхРеквизитов
            ГДЕ
ЗначенияДополнительныхРеквизитов.ЗначениеРеквизита = &Ссылка)
ИТОГИ ПО
    Ссылка ТОЛЬКО ИЕРАРХИЯ
3 Nuobu
 
02.10.15
14:58
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|   Номенклатура.Код,
  |  Номенклатура.Артикул,
   | Номенклатура.Ссылка,
   | Номенклатура.ЭтоГруппа
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ИТОГИ ПО
|   Ссылка ТОЛЬКО ИЕРАРХИЯ";
  ВЫборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  Пока Выборка.Следующий() Цикл
      ВыборкаНиже = Выборка.Выбрать();
      Пока ВыборкаНиже.Следующий() Цикл
          Сообщить(ВЫборкаНиже.Ссылка);      
          КонецЦикла;
  КонецЦикла;


Этот код работает.
4 rabbidX
 
02.10.15
15:12
(3) че-то ни фига. ВыборкаНиже пустая
5 Trotter
 
02.10.15
15:18
|    ВЫБРАТЬ
    |Номенклатура.Ссылка,
    |Номенклатура.Наименование,
    |*
    |ИЗ
    |Справочник.Номенклатура Как Номенклатура
    |Где Ссылка.ЭтоГруппа = Истина
    |УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ
    |";
6 rabbidX
 
02.10.15
15:28
(5) мне не только группы нужны.
(3) без отбора работает, действительно.
7 rabbidX
 
02.10.15
15:32
Ссылка    ЭтоГруппа
Тест    Да
Еще тест    Да
Товар1    Нет
Ассортимент    Да
ПРОДУКЦИЯ ТМ ***    Да
Источники света TM ***    Да
Лампы светодиодные    Да
Товар 2    Нет
Товар 3    Нет

Результат запроса вот такой.
8 Naumov
 
02.10.15
15:33
(6) у группы нет доп.реквизита. Твой отбор отрезает группы из выборки.
9 Naumov
 
02.10.15
15:36
т.е. условие должно быть что-то типа:
( Номенклатура.Ссылка В
            (ВЫБРАТЬ
                ЗначенияДополнительныхРеквизитов.Объект
            ИЗ
                РегистрСведений.ЗначенияДополнительныхРеквизитов КАК ЗначенияДополнительныхРеквизитов
            ГДЕ
ЗначенияДополнительныхРеквизитов.ЗначениеРеквизита = &Ссылка))
или Номенклатура.ЭтоГруппа
10 rabbidX
 
02.10.15
15:45
(8) в результат запроса попадает все, что нужно.
Получилось сделать, как в (3), но так структуры справочника не видно. Группы друг другу не подчинены. А если группировку с иерархией указать, только верхний уровень видно.
11 rabbidX
 
02.10.15
16:20
ну, ап
12 aleks_default
 
02.10.15
16:29
Выбирай одно из двух, или вывод структуры справочника, или отбор по доп свойствам. Вывести иерархию справочника при этом отбирая толлько отдельные его элементы не получится.
13 rabbidX
 
02.10.15
16:47
Сделал через Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией) с последующим обходом дерева.
Все работает, но как-то не кайфанул, не эстетично получилось.