Нужно узнать цену номенклатуры из последней продажи с данного склада даному контрагенту. ТиС 8.6 типовой в части регистра "ПартииТоваров".

ТекстЗапроса =
"//{{ЗАПРОС(ЦенаПоследнейРеализации)
|Период с НачалоВремён по _Дата;
|Товар = Регистр.ПартииТоваров.Товар;
|Контрагент = Регистр.ПартииТоваров.Контрагент;
|Док = Регистр.ПартииТоваров.ТекущийДокумент;
|Склад = Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Склад;
|Оборот = Регистр.ПартииТоваров.Оборот;
|Фирма = Регистр.ПартииТоваров.Фирма;
|Количество = Регистр.ПартииТоваров.ОстатокТовара;
|Функция ИтогСумм = Сумма(Оборот);
|Группировка Док упорядочить по Док.ДатаДок;
|Условие(Товар = _Товар);
|Условие(Склад = ВыбСклад);
|Условие(Фирма = ОснФирма);
|"//}}ЗАПРОС;
 Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
  Сообщить(ОписаниеОшибки());
 КонецЕсли;

Пока Запрос.Группировка(1,-1) = 1 Цикл

КонецЦикла;

Хотя выбираю группировку по убыванию - вижу по строке состояния, что перебираются с начальной даты, очень медленный получился отчёт.

Где ошибка?
---
"Пока Запрос.Группировка(1,-1) = 1 Цикл" это обход результатов запроса. А результаты еще получить надо. За офигительный период времени. Вот это получение результата в строке состояния и видно.
Лучше не запросом делать, а работой с регистром. ВыбратьДвижения и ОбратныйПорядок.
---
если тебя эта информация нужна для фронт офиса - лучше сохраняй ее в момент проведения реализации....
---
falcon, Больно сложно поддерживать корректность информации при шаловливых лапках пользователей. Провели реализацию, она запомнила где-нибудь в справочнике свою дату как дату последней продажи по фирме, контрагенту, складу, номенклатуре. Потом реализацию распровели или поменяли фирму, контрагента, склад, номенклатуру. И как и откуда брать правильную дату последней реализации по старой фирмы, контрагенту, складу, номенклатуре?
(4) Что бы выгрузить запрос в ТЗ, нужно сначала его выполнить. А так как последняя продажа интересующего товара могла быть и пять лет назад, запрос за такой период явно выполняется нецензурное время.
---
из-за п.2 и предлагаю делать по п.1...
озвученная проблема п.1 легко решается периодическим реквизитом, с флажком "Изменяется только документом" или как он там называется, либо построить конструкцию из объектов... вопрос какие должны быть измерения? номенклатура, склад, контрагент?
---
"Пока Запрос.Группировка(1,-1) = 1 Цикл" это обход результатов запроса. А результаты еще получить надо. За офигительный период времени. Вот это получение результата в строке состояния и видно.
Лучше не запросом делать, а работой с регистром. ВыбратьДвижения и ОбратныйПорядок.
---
vcv, Точно! Спасибо! Приз уходит в зрительный зал!

А что это я приз не объявил, хотел же. Исправляюсь...
---
или запрос в ТЗ и сортировка ТЗ
---
а если это с группировкой запрос и сортировка нужна во второй выборке в зависимости от значения в первой ?
---
если вторая выборка - запросом, то строить текст запроса с упорядочиванием в запросе по нужным полям. если сложнее - то второй запрос - в ТЗ и "скрещивать" с первым результатом.
---
вторая выборка - это результат выборки первого уровня того же запроса.
выборка в ТЗ не выгружается - увы.
решилось через двойной порядок с выбором и не через конструктор (только вручную такое можно написать).

```1c
    УПОРЯДОЧИТЬ ПО
    ВЫБОР
    КОГДА ПрямаяСотрировкаВторойВыборки = ИСТИНА
    ТОГДА ПорядокСортировки
    ИНАЧЕ NULL
    КОНЕЦ,
    ВЫБОР
    КОГДА ПрямаяСотрировкаВторойВыборки = ЛОЖЬ
    ТОГДА ПорядокСортировки
    ИНАЧЕ NULL
    КОНЕЦ УБЫВ
```