Сортируем документы по убыванию даты и используем конструкцию «ВЫБРАТЬ ПЕРВЫЕ 1»:
Код 1C v 8.х
В результате запрос вернёт одну строку, с данными последнего документа по одному контрагенту.
А как сделать запрос, который вернёт последние документы по всем контрагентам, а не по одному конкретному?
Используем функцию МАКСИМУМ в запросе для решения данной задачи.
Код 1C v 8.х
Этот запрос выбирает последние документы по всем контрагентам.
В статьи мы попробуем затронуть тему, связанную с использованием запросов в системе 1С. Именно тогда вы сможете справится с самыми разнообразными задачи, которые чаще всего возникают у современных потребителей во время проведения практики.
Мы попытаемся как можно подробнее рассказать вам об тех запросах, которые связанны с соединением, объединением, а также с соединением запросов. Давайте с помощью примеров попытаемся ответить на вопрос: каким образом можно получить последние документы в 1С запросе. Итак, давайте все таки начнем.
Для начала следует сортировать документы по убыванию даты, для этого вам понадобится воспользоватся конструкцией «ВЫБРАТЬ ПЕРВЫЕ 1»:
Запрос = Новый Запрос;
Запрос.Текст = »
|ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Контрагент = &Контрагент
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ»;
Запрос.УстановитьПараметр(«Контрагент», Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Возврат Выборка.Ссылка;
КонецЦикла;
В результате проведенного запроса будет возвращена назад одна строка, в которой будут находится данные последнего документа по одному контрагенту.
Каким образом можно сделать запрос, таким образом, чтобы он вернул документы по всем контрагентам, а не по одному конкретному?
Для решение данной задачи нужно будет воспользоватся функцией МАКСИМУМ.
Запрос = Новый Запрос;
Запрос.Текст = »
|ВЫБРАТЬ
| ПоследниеДокументыКонтрагентов.Ссылка,
| ПоследниеДокументыКонтрагентов.Контрагент
|ИЗ Документ.РеализацияТоваровУслуг КАК ПоследниеДокументыКонтрагентов
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Доки.Контрагент КАК Контрагент,
| МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента
| ИЗ Документ.РеализацияТоваровУслуг КАК Доки
|СГРУППИРОВАТЬ ПО Доки.Контрагент)
|КАК ДатыПоследнихДокументовКонтрагентов
|ПО ПоследниеДокументыКонтрагентов.Контрагент =
|ДатыПоследнихДокументовКонтрагентов.Контрагент
|И ПоследниеДокументыКонтрагентов.Дата =
|ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента»;
РезультатЗапроса = Запрос.Выполнить();
Этот запрос способен выбрать последние документы по всем контрагентам.
Примеры по программированию в 1с 7.7, 8.1, 8.2
пятница, 21 марта 2014 г.
Запрос 1с: Получить цену последненего прихода по всем номенклатурам на дату
1)Получим список номенклатур
2)По этому списку получим максимальную дату поступления
3)По максимальной дате поступления и номенклатуре — получим из документа (дата которого равна максимальной дате) цену.
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура_.Ссылка КАК Номенклатура,
Поступления.Цена
ИЗ
Справочник.Номенклатура КАК Номенклатура_
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МАКСИМУМ(ПоступлениеТоваровТовары.Ссылка.Дата) КАК Дата,
ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
ПоступлениеТоваровТовары.Ссылка.Проведен
И ПоступлениеТоваровТовары.Ссылка.Дата