HelpF.pro

Как запросом получить последний по дате документ?

Сортируем документы по убыванию даты и используем конструкцию «ВЫБРАТЬ ПЕРВЫЕ 1»:
Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент = &Контрагент
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ";
Запрос.УстановитьПараметр("Контрагент", Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Возврат Выборка.Ссылка;
КонецЦикла;

В результате запрос вернёт одну строку, с данными последнего документа по одному контрагенту.

А как сделать запрос, который вернёт последние документы по всем контрагентам, а не по одному конкретному?

Используем функцию МАКСИМУМ в запросе для решения данной задачи.
Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ПоследниеДокументыКонтрагентов.Ссылка,
| ПоследниеДокументыКонтрагентов.Контрагент
|ИЗ Документ.РеализацияТоваровУслуг КАК ПоследниеДокументыКонтрагентов
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Доки.Контрагент КАК Контрагент,
| МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента
| ИЗ Документ.РеализацияТоваровУслуг КАК Доки
|СГРУППИРОВАТЬ ПО Доки.Контрагент)
|КАК ДатыПоследнихДокументовКонтрагентов
|ПО ПоследниеДокументыКонтрагентов.Контрагент =
|ДатыПоследнихДокументовКонтрагентов.Контрагент
|И ПоследниеДокументыКонтрагентов.Дата =
|ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента";
РезультатЗапроса = Запрос.Выполнить();

Этот запрос выбирает последние документы по всем контрагентам.
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq83/view/1477.html