Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 16:48

Получение среза последних в запросе на каждую дату.

Автор mixqn, 07 окт 2013, 10:57

0 Пользователей и 1 гость просматривают эту тему.

mixqn



Как известно, для получения среза последних средствами платформы в запрос необходимо передать дату. А что, если нужно получить срез последних на список дат? Неужели придется делать запрос в цикле – последовательно перебирать даты и срезом последних получать данные? НЕТ! Ни в коем случае не следует делать запросы в цикле.
[cutoff]
Вариант выхода из ситуации: получаем курсы валют, актуальные на каждую дату:
ТекстЗапроса =
"ВЫБРАТЬ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
|ПОМЕСТИТЬ ВрТабДаты
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КурсыВалют.Валюта КАК Валюта,
| КурсыВалют.Курс,
| КурсыВалют.Период КАК Период,
| ВрТабДаты.ДатаКалендаря КАК ДатаКалендаря
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВрТабДаты КАК ВрТабДаты
| ПО КурсыВалют.Период <= ВрТабДаты.ДатаКалендаря
|ГДЕ
| КурсыВалют.Период В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| КВ.Период
| ИЗ
| РегистрСведений.КурсыВалют КАК КВ
| ГДЕ
| КВ.Период <= ВрТабДаты.ДатаКалендаря
| И КВ.Валюта = КурсыВалют.Валюта
| УПОРЯДОЧИТЬ ПО
| КВ.Период УБЫВ)";

Запрос = Новый Запрос(ТекстЗапроса);

Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);


Теги:
Рейтинг@Mail.ru

Поиск