Версия для печати темы (http://pro1c.org.ua/index.php?s=4ccc1972890f2b4208d55aed6297e5f4&showtopic=49178)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Отбор минимальных значений по дате в запросе объединения

Автор: Constantus 30.11.18, 10:45

Приветствую, Форумчане!

В СКД сделал запрос на объединение нескольких документов: ПКО, БанкПоступление.

В результате получил данные типа

Закзз01 ПКО_01 01.01.2018
Закзз01 ПКО_02 01.01.2017
Закзз01 ПКО_03 01.01.2015
Закзз01 банк_01 01.01.2014
Закзз01 банк_02 01.01.2013
..............
Закзз02 ПКО_01 01.01.2018
Закзз02 ПКО_02 01.01.2017
Закзз02 ПКО_03 01.01.2015
Закзз02 банк_01 01.01.2014
Закзз02 банк_02 01.01.2013

Как видно по одному и тому же Заказу имеются различные поступления по типу и датам. Необходимо из этого запроса объединения выбрать только одно поступление с минимальной датой для каждого Заказа:

Закзз01 банк_02 01.01.2013
Закзз02 банк_02 01.01.2013

Как можно в запросе на объединение вырать минимальные значения по датам для каждого Заказа?

Автор: Bernet 30.11.18, 11:02

Constantus @ Сегодня, 10:45 * ,
Не воспринимать буквально, это лишь пример алгоритма. Смысл такой сначала получаем минимальную дату поступления на каждый заказ, а дальше по этой дате уже получаем непосредственно документ Поступления

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|      Заказы.Ссылка КАК Заказ,
|      МИНИМУМ(ЕСТЬNULL(Поступления.Дата, ДАТАВРЕМЯ(1,1,1,0,0,0))) КАК МинДатаПоступления
|ПОМЕСТИТЬ ВтМинДатаПоступлений
|ИЗ
|     Документ.Заказ КАК Заказы
|     ЛЕВОЕ СОЕДИНЕНИЕ Документ.Поступления КАК Поступления
|          ПО Заказы.Ссылка = Поступления.Заказ
|СГРУППИРОВАТЬ ПО
|      Заказы.Ссылка
|;
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|     ВтМинДатаПоступлений.Заказ,
|     ЕСТЬNULL(Поступления.Ссылка, ЗНАЧЕНИЕ(Документ.Поступления.ПустаяСсылка)) КАК Поступление
|ИЗ
|     ВтМинДатаПоступлений КАК ВтМинДатаПоступлений
|     ЛЕВОЕ СОЕДИНЕНИЕ Документ.Поступления  КАК Поступления
|      ПО ВтМинДатаПоступлений.МинДатаПоступления = Поступления.Дата
|       И ВтМинДатаПоступлений.Заказ = Поступления.Заказ
|";

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua