База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить по контрагентам самые первые поступления товаров в запросе 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 12 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
14 июля 2026 в 10:13 #38163
Как получить все самые первые поступления товаров у контрагента в запросе? Построить запрос с выводом результата в структуре Контрагент, документы поступлений, дата документа
-
14 июля 2026 в 10:13 #38164
Чтобы получить для каждого контрагента все самые первые поступления товаров (т.е. документы с минимальной датой поступления), нужно:
1. Найти для каждого контрагента минимальную дату документа поступления.
2. Выбрать документы поступления, у которых дата равна этой минимальной дате для данного контрагента.Пример запроса 1С (предположим, что документ поступления называется Документ.ПоступлениеТоваровУслуг, поле контрагента — Контрагент, дата документа — Дата):
|ВЫБРАТЬ
| Поступления.Контрагент КАК Контрагент,
| Поступления.Ссылка КАК ДокументПоступления,
| Поступления.Дата КАК ДатаДокумента
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Поступления
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Контрагент,
| МАКСИМУМ(Дата) КАК ПерваяДата
| ИЗ
| Документ.ПоступлениеТоваровУслуг
| СГРУППИРОВАТЬ ПО
| Контрагент) КАК МинДата
|ПО
| Поступления.Контрагент = МинДата.Контрагент
| И Поступления.Дата = МинДата.ПерваяДатаОбратите внимание, что в запросе используется МАКСИМУМ(Дата) — это ошибка, нужно МИНИМУМ(Дата).
Исправленный вариант:
|ВЫБРАТЬ
| Поступления.Контрагент КАК Контрагент,
| Поступления.Ссылка КАК ДокументПоступления,
| Поступления.Дата КАК ДатаДокумента
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Поступления
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Контрагент,
| МИНИМУМ(Дата) КАК ПерваяДата
| ИЗ
| Документ.ПоступлениеТоваровУслуг
| СГРУППИРОВАТЬ ПО
| Контрагент) КАК МинДата
|ПО
| Поступления.Контрагент = МинДата.Контрагент
| И Поступления.Дата = МинДата.ПерваяДатаЭтот запрос вернёт для каждого контрагента все документы поступления, у которых дата равна минимальной дате поступления у этого контрагента.
Если нужно вывести результат в структуре, то после выполнения запроса можно пройтись по выборке и сформировать структуру:
1С (Код)123456789101112Результат = Новый Структура;Запрос = Новый Запрос;Запрос.Текст = " ... (текст запроса выше) ... ";РезультатЗапроса = Запрос.Выполнить();Выборка = РезультатЗапроса.Выбрать();Пока Выборка.Следующий() ЦиклЕсли НЕ Результат.СодержитКлюч(Выборка.Контрагент) ТогдаРезультат.Вставить(Выборка.Контрагент, Новый Массив);КонецЕсли;Результат[Выборка.Контрагент].Добавить(Новый Структура("Документ, Дата", Выборка.ДокументПоступления, Выборка.ДатаДокумента));КонецЦикла;Так вы получите структуру, где ключ — контрагент, а значение — массив структур с документами и датами.
Если нужна помощь с конкретным кодом — могу помочь.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.