В ходе разработки хитрого отчета потребовалось получить курсы валют на каждый день произвольного периода.
Первый совет мне дали такой - использовать цикл.
Я посчитал, что это не кошерно (как говорят еврейские программеры), и к тому же я использовал СКД для построения отчета.
В итоге удалось получить курсы валюты за период следующим запросом:
ВЫБРАТЬ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаМесяц
ПОМЕСТИТЬ ДатаМесяцВТ
ИЗ
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(КурсыВалют.Период) КАК Период,
КурсыВалют.Валюта,
ДатаМесяцВТ.ДатаМесяц
ПОМЕСТИТЬ МаксДатаКурсВТ
ИЗ
ДатаМесяцВТ КАК ДатаМесяцВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО ДатаМесяцВТ.ДатаМесяц >= КурсыВалют.Период
ГДЕ
КурсыВалют.Валюта = &Валюта
СГРУППИРОВАТЬ ПО
КурсыВалют.Валюта,
ДатаМесяцВТ.ДатаМесяц
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МаксДатаКурсВТ.Период,
МаксДатаКурсВТ.ДатаМесяц,
МаксДатаКурсВТ.Валюта,
КурсыВалют.Курс,
КурсыВалют.Кратность
ИЗ
МаксДатаКурсВТ КАК МаксДатаКурсВТ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО МаксДатаКурсВТ.Валюта = КурсыВалют.Валюта
И МаксДатаКурсВТ.Период = КурсыВалют.Период
УПОРЯДОЧИТЬ ПО
ДатаМесяц