Имя: Пароль:
1C
 
Почему запрос в УНФ не сортирует вложенные таблицы
,
0 Гений 1С
 
гуру
07.09.21
13:36
Есть запрос под катом.
Обнаружил, что несмотря на то, что указан номер строки, не сортирует Таблицу ТаблицаЗапасы.
Как быть? Что не так?
Платформа самая прогрессивная: 8.3.18.1289

Код:


ВЫБРАТЬ
    ЗаказПокупателя.Ссылка КАК Ссылка,
    ЗаказПокупателя.ОжидаетсяВыборВариантаКП КАК ОжидаетсяВыборВариантаКП,
    ЗаказПокупателя.ОсновнойВариантКП КАК ОсновнойВариантКП,
    ЗаказПокупателя.КоличествоВариантовКП КАК КоличествоВариантовКП,
    ЗаказПокупателя.СуммаВключаетНДС КАК СуммаВключаетНДС,
    ЗаказПокупателя.ВалютаДокумента КАК ВалютаДокумента,
    ЗаказПокупателя.СпособДоставки КАК СпособДоставки,
    ЗаказПокупателя.Вес КАК Вес,
    ВЫБОР
        КОГДА ЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд)
                ИЛИ ЗаказПокупателя.СпособДоставки В (ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.ПустаяСсылка), ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз))
            ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
        ИНАЧЕ ЗаказПокупателя.НоменклатураДоставки
    КОНЕЦ КАК НоменклатураДоставки,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ЗаказПокупателя.НоменклатураДоставки.НаименованиеПолное КАК СТРОКА(1000))) = ""
            ТОГДА ЗаказПокупателя.НоменклатураДоставки.Наименование
        ИНАЧЕ ВЫРАЗИТЬ(ЗаказПокупателя.НоменклатураДоставки.НаименованиеПолное КАК СТРОКА(1000))
    КОНЕЦ КАК ПредставлениеНоменклатурыДоставки,
    ЗаказПокупателя.НоменклатураДоставки.Код КАК КодДоставки,
    ЗаказПокупателя.НоменклатураДоставки.Артикул КАК АртикулДоставки,
    ЗаказПокупателя.НоменклатураДоставки.ЕдиницаИзмерения КАК ЕдиницаИзмеренияДоставки,
    ЗаказПокупателя.СтоимостьДоставки КАК СтоимостьДоставки,
    ЗаказПокупателя.СтавкаНДСДоставки КАК СтавкаНДСДоставки,
    ЗаказПокупателя.СуммаНДСДоставки КАК СуммаНДСДоставки,
    ЗаказПокупателя.Работы.(
        НомерСтроки КАК НомерСтроки,
        Номенклатура КАК Номенклатура,
        ВЫБОР
            КОГДА (ВЫРАЗИТЬ(ЗаказПокупателя.Работы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = ""
                ТОГДА ЗаказПокупателя.Работы.Номенклатура.Наименование
            ИНАЧЕ ВЫРАЗИТЬ(ЗаказПокупателя.Работы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
        КОНЕЦ КАК ПредставлениеНоменклатуры,
        Номенклатура.Артикул КАК Артикул,
        Номенклатура.Комментарий КАК ОписаниеНоменклатуры,
        Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
        ЗаказПокупателя.Работы.Количество * ЗаказПокупателя.Работы.Коэффициент * ЗаказПокупателя.Работы.Кратность КАК Количество,
        Цена КАК Цена,
        Сумма КАК Сумма,
        СтавкаНДС КАК СтавкаНДС,
        СуммаНДС КАК СуммаНДС,
        Всего КАК Всего,
        0 КАК Вес,
        Ссылка.Старт КАК ДатаОтгрузки,
        Характеристика КАК Характеристика,
        Содержание КАК Содержание,
        ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
        СуммаСкидкиНаценки КАК СуммаСкидкиНаценки,
        ВЫБОР
            КОГДА ЗаказПокупателя.Работы.ПроцентСкидкиНаценки <> 0
                    ИЛИ ЗаказПокупателя.Работы.СуммаАвтоматическойСкидки <> 0
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ КАК ЕстьСкидка,
        ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
        СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
        0 КАК Резерв,
        "" КАК СтранаПроисхождения,
        Спецификация КАК Спецификация,
        "" КАК СерииНоменклатуры,
        "" КАК НомерГТД,
        "" КАК Партия,
        0 КАК НомерВариантаКП,
        ЛОЖЬ КАК ЭтоРазделитель,
        ЛОЖЬ КАК ЭтоНабор,
        ВЫБОР
            КОГДА ЗаказПокупателя.Работы.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
                    И ЗаказПокупателя.Работы.НоменклатураНабора.ВариантПечатиНабора = ЗНАЧЕНИЕ(Перечисление.ВариантыПечатиНаборов.НаборИКомплектующие)
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК НеобходимоВыделитьКакСоставНабора,
        НоменклатураНабора КАК НоменклатураНабора,
        ХарактеристикаНабора КАК ХарактеристикаНабора,
        Номенклатура.ФайлКартинки КАК НоменклатураФайлКартинки
    ) КАК ТаблицаРаботыУслуги,
    ЗаказПокупателя.Запасы.(
        НомерСтроки КАК НомерСтроки,
        Номенклатура КАК Номенклатура,
        ВЫБОР
            КОГДА ТИПЗНАЧЕНИЯ(ЗаказПокупателя.Запасы.Номенклатура) = ТИП(СТРОКА)
                ТОГДА ЗаказПокупателя.Запасы.Номенклатура
            КОГДА (ВЫРАЗИТЬ(ЗаказПокупателя.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = ""
                ТОГДА ЗаказПокупателя.Запасы.Номенклатура.Наименование
            ИНАЧЕ ВЫРАЗИТЬ(ЗаказПокупателя.Запасы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
        КОНЕЦ КАК ПредставлениеНоменклатуры,
        Номенклатура.Артикул КАК Артикул,
        Номенклатура.Комментарий КАК ОписаниеНоменклатуры,
        ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
        Количество КАК Количество,
        Цена КАК Цена,
        Сумма КАК Сумма,
        СтавкаНДС КАК СтавкаНДС,
        СуммаНДС КАК СуммаНДС,
        Всего КАК Всего,
        Вес КАК Вес,
        ВЫБОР
            КОГДА ЗаказПокупателя.Запасы.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд)
                ТОГДА ЗаказПокупателя.Запасы.Ссылка.Старт
            ИНАЧЕ ЗаказПокупателя.Запасы.ДатаОтгрузки
        КОНЕЦ КАК ДатаОтгрузки,
        Характеристика КАК Характеристика,
        Содержание КАК Содержание,
        ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
        СуммаСкидкиНаценки КАК СуммаСкидкиНаценки,
        ВЫБОР
            КОГДА ЗаказПокупателя.Запасы.ПроцентСкидкиНаценки <> 0
                    ИЛИ ЗаказПокупателя.Запасы.СуммаАвтоматическойСкидки <> 0
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ КАК ЕстьСкидка,
        ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
        СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
        Резерв КАК Резерв,
        СтранаПроисхождения КАК СтранаПроисхождения,
        НомерГТД КАК НомерГТД,
        Спецификация КАК Спецификация,
        СерииНоменклатуры КАК СерииНоменклатуры,
        Партия КАК Партия,
        НомерВариантаКП КАК НомерВариантаКП,
        ЭтоРазделитель КАК ЭтоРазделитель,
        ЛОЖЬ КАК ЭтоНабор,
        ВЫБОР
            КОГДА ЗаказПокупателя.Запасы.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
                    И ЗаказПокупателя.Запасы.НоменклатураНабора.ВариантПечатиНабора = ЗНАЧЕНИЕ(Перечисление.ВариантыПечатиНаборов.НаборИКомплектующие)
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК НеобходимоВыделитьКакСоставНабора,
        НоменклатураНабора КАК НоменклатураНабора,
        ХарактеристикаНабора КАК ХарактеристикаНабора,
        Номенклатура.ФайлКартинки КАК НоменклатураФайлКартинки
    ) КАК ТаблицаЗапасы,
    ЗаказПокупателя.ДобавленныеНаборы.(
        НомерВариантаКП КАК НомерВариантаКП,
        НоменклатураНабора КАК НоменклатураНабора,
        ХарактеристикаНабора КАК ХарактеристикаНабора,
        Количество КАК Количество,
        ВЫБОР
            КОГДА (ВЫРАЗИТЬ(ЗаказПокупателя.ДобавленныеНаборы.НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))) = ""
                ТОГДА ЗаказПокупателя.ДобавленныеНаборы.НоменклатураНабора.Наименование
            ИНАЧЕ ВЫРАЗИТЬ(ЗаказПокупателя.ДобавленныеНаборы.НоменклатураНабора.НаименованиеПолное КАК СТРОКА(1000))
        КОНЕЦ КАК ЗапасНабора,
        НоменклатураНабора.ВариантПечатиНабора КАК ВариантПечатиНабора,
        НоменклатураНабора.ТипНоменклатуры КАК ТипНоменклатурыНабора,
        НоменклатураНабора.Артикул КАК АртикулНабора,
        НоменклатураНабора.Код КАК КодНабора,
        НоменклатураНабора.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНабора,
        НоменклатураНабора.ЕдиницаИзмерения.Код КАК КодЕдиницыИзмеренияНабора,
        ИСТИНА КАК ВыводитьИтоги
    ) КАК ТаблицаДобавленныеНаборы
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Ссылка = &ЗаказПокупателя
    И (ЗаказПокупателя.ОсновнойВариантКП = 0
            ИЛИ ЗаказПокупателя.Запасы.НомерВариантаКП = ЗаказПокупателя.ОсновнойВариантКП)

УПОРЯДОЧИТЬ ПО
    Ссылка,
    ЗаказПокупателя.Запасы.НомерВариантаКП,
    НомерСтроки

1 Naumov
 
07.09.21
13:41
вложенные запросы никогда и не сортировались. А смысл?
2 ДенисЧ
 
07.09.21
13:45
Потому что УНФ - глючная какашка.

Хотя... 1с вложенные вообще не сортирует... Отсюда следует, что... ой....
3 DexterMorgan
 
07.09.21
15:04
Я заинтригован
4 mistеr
 
07.09.21
16:00
(0) А кто-то обещал сортировать?
5 Ненавижу 1С
 
гуру
07.09.21
17:14
Зачем ты так сделал?
6 polosov
 
07.09.21
17:28
Давненько такого не видал.
7 Гений 1С
 
гуру
07.09.21
17:45
(5) это типовой код. 1С написала сортировку по номеру строки, я и подумал, что все работает. Ан нет, не сортирует
8 Гений 1С
 
гуру
07.09.21
17:46
(1) но там же есть указание сортировать по номеру строки. Явно разработчики из 1с (это типовой код) думали, что будет сортироваться
9 TormozIT
 
гуру
07.09.21
19:37
Сортировка во вложенном запросе имеет смысл только со словом ПЕРВЫЕ.
10 Гений 1С
 
гуру
07.09.21
20:00
(9) я не про вложенные запросы, а про вложенные таблицы. Буквоедствуем?
11 Гений 1С
 
гуру
07.09.21
20:03
Специально посмотрел - я написал про вложенные таблицы, это Наумов в (1) начал уводить в сторону
12 Вафель
 
07.09.21
20:14
А разве номер строки это имя поля?
Имхо как то по другому нужно вложенные сортировать
13 Курцвейл
 
07.09.21
20:39
(0) Это специально для Вас было написано, чтобы было не скучно работать, а весело.
14 Гений 1С
 
гуру
07.09.21
21:55
(13) 1с дает нам, фрилансерам, заработать, это понятно.
но из любви к искусству...
15 brainguard
 
07.09.21
23:47
(14) Ээээ... а по какому номеру строки должно сортироваться? Их там вообще-то два. И что должно сортироваться? Записи или таблицы внутри записей?