Имя: Пароль:
1C
1С v8
Вывести иерархический справочник в ТЗ
, ,
0 r1000
 
25.05.17
10:24
Как вывести справочник в ТЗ сохраняя иерархию ? Нужно именно ТЗ, а дерево.
Пишу так:
    Запрос.Текст =
    "ВЫБРАТЬ
    |   СпрНоменклатура.Ссылка КАК Номенклатура
    |ИЗ
    |СГРУППИРОВАТЬ ПО
    |   СпрНоменклатура.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    |   СпрНоменклатура.ЭтоГруппа,
    |   СпрНоменклатура.Наименование
    |ИТОГИ ПО
    |   Номенклатура ИЕРАРХИЯ";

потом делаю выборку и заполняю строки ТЗ.
Но в выборке иерархия не такая как в справочнике. Добавляются итоги, а они не нужны.
Что поправить в запросе, чтобы порядок выборки был как в справочнике ?
1 Ёпрст
 
25.05.17
10:26
Выгрузи в ДеревоЗначения
2 Ёпрст
 
25.05.17
10:27
ну и , упорядочивание выкини
3 Ёпрст
 
25.05.17
10:27
и группировку
4 r1000
 
25.05.17
10:33
упорядочивание мне нужно, т.к. пользователи справочник просматривают с определенными настройками сортировки.
5 Ёпрст
 
25.05.17
10:38
(4)
Ну так тогда, что ле


ВЫБРАТЬ
    Ссылка КАК Номенклатура
ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО
    ЭтоГруппа ИЕРАРХИЯ,
    Наименование
6 Antony8x
 
25.05.17
10:39
(0) Так уберите "ИТОГИ" из запроса
7 r1000
 
25.05.17
11:50
Получается очень похоже, но все равно не удается построить порядок такой же как в справочнике списке.
В выборке сначала идут самые вложенные папки. Т.е. сортировка справочника списка отличается от получаемой программно выборки, даже с такой же настройкой упорядочивания. Почему ?
8 r1000
 
25.05.17
11:55
Вот запрос целиком. Мне нужно вывести внутренние цены для групп и элементов. но в такой же иерархии как в справочнике списка номенклатуры, но выводить нужно только те элементы, на которые установлены внутренние цены, а не все подряд. поэтому соединение.
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    ВложенныйЗапрос.Цена
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            ЦеныВнутренние.Номенклатура КАК Номенклатура,
            ЦеныВнутренние.Цена КАК Цена
        ИЗ
            РегистрСведений.ЦеныВнутренние.СрезПоследних(
                    ,
                    ) КАК ЦеныВнутренние) КАК ВложенныйЗапрос
        ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура

УПОРЯДОЧИТЬ ПО
    СпрНоменклатура.ЭтоГруппа ИЕРАРХИЯ,
    СпрНоменклатура.Наименование
9 r1000
 
25.05.17
11:57
далее следует
    Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

и потом обход дерева с заполнением строк ТЗ.
10 r1000
 
25.05.17
12:00
Все получается с ЛЕВЫМ соединением и отсеканием элементов без внутренних цен на стадии заполнения, но справочник номенклатуры огромный и тупой перебор занимает нереальное время.
Основная теорема систематики: Новые системы плодят новые проблемы.