Modber Сообщество
профессионалов по 1С

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



Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, 1С:Предприятие 8.1
Конфигурации: Все конфигурации
2014-04-30
7152 
maxdzhavala
0  

В статьи мы попробуем затронуть тему, связанную с использованием запросов в системе 1С. Именно тогда вы сможете справится с самыми разнообразными задачи, которые чаще всего возникают у современных потребителей во время проведения практики.

Мы попытаемся как можно подробнее рассказать вам об тех запросах, которые связанны с соединением, объединением, а также с соединением запросов. Давайте с помощью примеров попытаемся ответить на вопрос: каким образом можно получить последние документы в 1С запросе. Итак, давайте все таки начнем. 

Для начала следует сортировать документы по убыванию даты, для этого вам понадобится воспользоватся конструкцией «ВЫБРАТЬ ПЕРВЫЕ 1»:

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


В результате проведенного запроса будет возвращена назад одна строка, в которой будут находится данные последнего документа по одному контрагенту.

Каким образом можно сделать запрос, таким образом, чтобы он вернул документы по всем контрагентам, а не по одному конкретному?
Для решение данной задачи нужно будет воспользоватся функцией МАКСИМУМ.
 

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


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




Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (1)