Имя: Пароль:
1C
1С v8
Упорядочивание тпалицы значений в запросе
,
0 maxipunchik
 
20.04.17
08:32
В типовой конфе есть такой вот код:
ДокументОснование = Основание.Ссылка;
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
        
        // Заполним реквизиты из стандартного набора по документу основанию.
        ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(ЭтотОбъект, Основание);
                
        ТипЦен = Основание.ТипЦен;
        
        Если НЕ ЗначениеЗаполнено(Основание.ТипЦен) Тогда
            ОбщегоНазначения.СообщитьОбОшибке("В документе "+СокрЛП(Основание)+" не установлен тип цен! Заполнение невозможно.");
            Возврат;
        КонецЕсли;
        
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ДокументОснование", Основание);
        Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                       |    Док.СуммаВключаетНДС,
                       |    Док.ВалютаДокумента,
                       |    Док.Контрагент,
                       |    Док.ТипЦен КАК ТипЦен,
                       |    Док.Товары.(
                       |        Номенклатура,
                       |        Цена КАК Цена,
                       |        СтавкаНДС,
                       |        СУММА(НомерСтроки) КАК НомерСтроки
                       |    ),
                       |    Док.Услуги.(
                       |        СУММА(НомерСтроки) КАК НомерСтроки,
                       |        Номенклатура,
                       |        Цена,
                       |        СтавкаНДС
                       |    )
                       |ИЗ
                       |    Документ.ПоступлениеТоваровУслуг КАК Док
                       |ГДЕ
                       |    Док.Ссылка = &ДокументОснование
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    Док.Товары.(Номенклатура,
                       |    Цена,
                       |    СтавкаНДС),
                       |    Док.Услуги.(Номенклатура,
                       |    Цена,
                       |    СтавкаНДС)";
        
        Шапка = Запрос.Выполнить().Выбрать();
        Шапка.Следующий();
        
        Выборка = Шапка.Товары.Выбрать();

В итоге нужно отсортировать таблицу товары по номеру строки. Если задать порядок в конструкторе, то сортируется только сам результат запроса, а тз остается такой же. Как отсортировать?
1 Cyberhawk
 
20.04.17
08:33
Не вижу никакой ТЗ в (0)
2 maxipunchik
 
20.04.17
08:36
(1) в запросе Товары - это таблица значений. А вообще - это табличная часть документа Поступления ТМЗ
3 Cyberhawk
 
20.04.17
08:36
(2) Уже лучше. А теперь внятно в трех словах задавай свой вопрос
4 1dvd
 
20.04.17
08:38
(2) может, табличная часть всё-таки?
5 maxipunchik
 
20.04.17
08:42
(4) в табло Таблица значений при отладке
6 FIXXXL
 
20.04.17
08:47
Таблица.Сортировать()?
7 maxipunchik
 
20.04.17
08:48
Вообще я решил эту задачу, но, как мне кажется, есть способ оптимальнее. Я выгрузил отдельно эту таблицу и отсортировал. Хотелось бы знать можно ли это сделать в запросе
8 maxipunchik
 
20.04.17
08:48
(6) Вот так я и сделал) Только это уже же после запроса, а можно ли в запросе такое провернуть?
9 FIXXXL
 
20.04.17
08:52
(7) (8) на закладке Порядок в конструкторе добавь свою НомерСтроки из вложенной таблицы в упорядочивание
10 maxipunchik
 
20.04.17
08:55
(9) Эх, если бы всё было так просто)

                       |УПОРЯДОЧИТЬ ПО
                       |    НомерСтроки"

Такое, к сожалению не работает. Сортировка идет по запросу, а не по вложенной таблице. На таблицу никакого эффекта не оказывает
11 Cyberhawk
 
20.04.17
08:55
(8) Ты попробуй запрос не к документы сделать, а к его двум ТЧ с соединением по ссылке
12 maxipunchik
 
20.04.17
09:11
(11) тогда запрос выбирает несколько строк без таблиц значений и всё сортируется. Но хотелось бы так сильно запрос не изменять, а именно решить задачу с сортировкой тз в запросе
13 catena
 
20.04.17
09:25
Сделай вложенный запрос с группировкой, а во внешнем упорядочивание.

ВЫБРАТЬ
    Д.Ссылка,
    Д.Товары.(
        НомерСтроки,
        Количество КАК Количество,
        Номенклатура
    )
ИЗ
    (ВЫБРАТЬ
        ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
        ПоступлениеТоваровУслуг.Товары.(
            НомерСтроки КАК НомерСтроки,
            СУММА(Количество) КАК Количество,
            Номенклатура КАК Номенклатура
        ) КАК Товары
    ИЗ
        Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    
    СГРУППИРОВАТЬ ПО
        ПоступлениеТоваровУслуг.Товары.(НомерСтроки,
        Номенклатура)) КАК Д

УПОРЯДОЧИТЬ ПО
    Количество убыв
14 maxipunchik
 
20.04.17
11:57
(13) Не знаю как, но это действительно сработало) Спасибо за совет.
Вот окончательный код запроса, может понадобится кому

        Запрос.Текст = "ВЫБРАТЬ
                       |    Д.Ссылка,
                       |    Д.Товары.(
                       |        НомерСтроки КАК НомерСтроки,
                       |        Номенклатура КАК Номенклатура,
                       |        Цена КАК Цена,
                       |        СтавкаНДС
                       |    ),
                       |    Д.Услуги.(
                       |        НомерСтроки КАК НомерСтроки,
                       |        Номенклатура КАК Номенклатура,
                       |        Цена КАК Цена,
                       |        СтавкаНДС
                       |    ),
                       |    Д.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
                       |    Д.Ссылка.ВалютаДокумента КАК ВалютаДокумента,
                       |    Д.Ссылка.Контрагент КАК Контрагент,
                       |    Д.Ссылка.ТипЦен КАК ТипЦен
                       |ИЗ
                       |    (ВЫБРАТЬ
                       |        ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
                       |        ПоступлениеТоваровУслуг.Товары.(
                       |            СУММА(НомерСтроки) КАК НомерСтроки,
                       |            Номенклатура КАК Номенклатура,
                       |            Цена КАК Цена,
                       |            СтавкаНДС КАК СтавкаНДС
                       |        ) КАК Товары,
                       |        ПоступлениеТоваровУслуг.Услуги.(
                       |            СУММА(НомерСтроки) КАК НомерСтроки,
                       |            Номенклатура КАК Номенклатура,
                       |            Цена КАК Цена,
                       |            СтавкаНДС КАК СтавкаНДС
                       |        ) КАК Услуги
                       |    ИЗ
                       |        Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                       |    
                       |    СГРУППИРОВАТЬ ПО
                       |        ПоступлениеТоваровУслуг.Товары.(Номенклатура,
                       |        Цена,
                       |        СтавкаНДС),
                       |        ПоступлениеТоваровУслуг.Услуги.(Номенклатура,
                       |        Цена,
                       |        СтавкаНДС)) КАК Д
                       |ГДЕ
                       |    Д.Ссылка = &ДокументОснование
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    НомерСтроки";
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс