Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Упорядочить результат запроса по ТЗ?

Упорядочить результат запроса по ТЗ?
Я
   user1114234
 
22.04.19 - 11:12
Добрый день. Имею запрос номенклатуры и параметр в виде таблицы значений с кодами номенклатуры.
Нужно чтобы номенклатуры выдавались в том же порядке, что и соответствующие им коды в ТЗ, но запрос выполняется в разнобой. Куда копать?
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Код В(&ТЗКодов)"
    ;
    Запрос.УстановитьПараметр("ТЗКодов", ТЗ);
    Выгрузка = Запрос.Выполнить().Выгрузить();
 
 
   VladZ
 
1 - 22.04.19 - 11:14
(0) Копать в сторону УПОРЯДОЧИТЬ ПО
   ДенисЧ
 
2 - 22.04.19 - 11:22
Поместить тз в вт, потом соединить и сортровать по полю тз, а не спроавнчика
   user1114234
 
3 - 22.04.19 - 11:23
(1) Не понимаю. Нельзя же упорядочить по параметру. И мне не нужны возрастание/убывание/иерархия.
   user1114234
 
4 - 22.04.19 - 11:23
(2) Спасибо, попробую
   Chameleon1980
 
5 - 22.04.19 - 11:39
возможно придется тебе в тз завести доп. колонку
которую пронумеровать по текущему положению кодов (если при их сортировке образуется другой порядок)
потом тз (именно таблицу) в запрос во ВТ.
и так далее
   user1114234
 
6 - 23.04.19 - 12:59
Оставлю для потомков. Пришлось немного помучиться с тем, что тз должна быть типизирована, а потом в запросе также выражать поле как строку с 11 символами (как у кода). Ну и кто ж знал, что выгрузить колонку нельзя без добавления строк...
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Массив = ТЗИзЕксель.ВыгрузитьКолонку("Код");
    Счётчик = 0;
    Пока Счётчик <= Массив.Количество() Цикл
         ТЗ.Добавить();
         Счётчик = Счётчик + 1;
         КонецЦикла;
    ТЗ.ЗагрузитьКолонку(Массив, "Код");
    Запрос = Новый Запрос;
    Запрос.Текст =     
    "ВЫБРАТЬ
    |    ТЗКодов.Код
    |ПОМЕСТИТЬ ТЗ
    |ИЗ
    |    &ТЗКодов КАК ТЗКодов
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Номенклатура,
    |    ВЫРАЗИТЬ(ТЗ.Код КАК СТРОКА(11)) КАК Код
    |ИЗ
    |    ТЗ КАК ТЗ
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    |        ПО ((ВЫРАЗИТЬ(ТЗ.Код КАК СТРОКА(11))) = Номенклатура.Код)"
    ;

    Запрос.УстановитьПараметр("ТЗКодов", ТЗ);
    Выгрузка = Запрос.Выполнить().Выгрузить();
   VladZ
 
7 - 23.04.19 - 13:04
(6) А где УПОРЯДОЧИТЬ ПО?
   user1114234
 
8 - 23.04.19 - 13:07
(7) И так прокатило, слава Ситису.
   Йохохо
 
9 - 23.04.19 - 13:10
(8) оно однажды вроде сломается, как Счётчик подрастет
   user1114234
 
10 - 23.04.19 - 14:38
(9) Хорошее замечание. Выгрузка всего один раз производится, но учту.
   user1114234
 
11 - 23.04.19 - 14:40
(10) А нет, всё в порядке. Счётчик на ноль сбрасывается каждый раз при входе в функцию.
   Йохохо
 
12 - 23.04.19 - 14:46
(11) ты не понял, что что у тебя порядок после соединения такой, какой тебе нужен - это не гарантировано с таким кодом. Сейчас прокатило, потом само сломается.
   Йохохо
 
13 - 23.04.19 - 14:47
без упорядочить выборка не гарантирует тебе порядок
   НЕА123
 
14 - 23.04.19 - 15:07
а я не понимаю, почему (1) недостаточно.
   Вафель
 
15 - 23.04.19 - 15:10
сейчас можно номер строки получить при загрузке тз во временную автоматом
   Йохохо
 
16 - 23.04.19 - 15:19
(14) порядок у него номер строки из экселя, нуятакпонял

Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.