Есть регистр оборотов куда записываются продажи и есть регистр сведений куда записываются курсы валют.

Нужно сделать отчёт где в таблицу по дням будут записаны суммы продаж и курс выбранной валюты на дату продажи
---
Запрос кросс-курсов валют на любой набор дат

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | ВсеВалюты.Валюта,
    | ВсеДатыКурсов.ДатаКурса
    |ПОМЕСТИТЬ ВалютыДатыКурсов
    |ИЗ
    | ВсеВалюты КАК ВсеВалюты
    | ПОЛНОЕ СОЕДИНЕНИЕ ВсеДатыКурсов КАК ВсеДатыКурсов
    | ПО (ИСТИНА)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | МАКСИМУМ(КурсыВалют.Период) КАК ДатаВРегистреВалют,
    | КурсыВалют.Валюта,
    | ВалютыДатыКурсов.ДатаКурса
    |ПОМЕСТИТЬ ДатыКурсовИРегистра
    |ИЗ
    | РегистрСведений.КурсыВалют КАК КурсыВалют
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВалютыДатыКурсов КАК ВалютыДатыКурсов
    | ПО КурсыВалют.Валюта = ВалютыДатыКурсов.Валюта
    | И КурсыВалют.Период <= ВалютыДатыКурсов.ДатаКурса
    |
    |СГРУППИРОВАТЬ ПО
    | ВалютыДатыКурсов.ДатаКурса,
    | КурсыВалют.Валюта
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ДатыКурсовИРегистра.Валюта,
    | ДатыКурсовИРегистра.ДатаКурса,
    | КурсыВалют.Курс / КурсыВалют.Кратность КАК КурсСКратностью
    |ПОМЕСТИТЬ КурсыВалютДвижений
    |ИЗ
    | ДатыКурсовИРегистра КАК ДатыКурсовИРегистра
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    | ПО ДатыКурсовИРегистра.ДатаВРегистреВалют = КурсыВалют.Период
    | И ДатыКурсовИРегистра.Валюта = КурсыВалют.Валюта
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | КурсыВалютДвижений.Валюта КАК ВалютаИсходная,
    | КурсыВалютДвижений1.Валюта КАК ВалютаРезультат,
    | КурсыВалютДвижений.ДатаКурса,
    | КурсыВалютДвижений.КурсСКратностью КАК КурсИсходный,
    | КурсыВалютДвижений1.КурсСКратностью КАК КурсРезультат,
    | КурсыВалютДвижений.КурсСКратностью / КурсыВалютДвижений1.КурсСКратностью КАК КроссКурс
    |ПОМЕСТИТЬ КроссКурсыВалют
    |ИЗ
    | КурсыВалютДвижений КАК КурсыВалютДвижений
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВалютДвижений КАК КурсыВалютДвижений1
    | ПО КурсыВалютДвижений.ДатаКурса = КурсыВалютДвижений1.ДатаКурса";
```
---
Вам в https://infostart.ru/freelance/
---
Вам в https://infostart.ru/freelance/
---
Мне не нужно готовое решение, мне бы понять как это сделать
---
Левыми соединениями таблиц + агрегация периода
---
гугле://1с+курс+валюты+на+каждый+день
---
Нужен тупо запрос или отчет на СКД? Если конфигурация на БСП, то в СКД можно добавить вычисляемое поле с вызовом общего модуля пересчета валюты, например РаботаСКурсамиВалют.ПересчитатьВВалюту
---
не надо тупо. Вызывать процедуру на каждую строку отчета это совсем моветон, даже если полностью наплевать на быстродействие.
---
ну такой вопрос гуглится первой ссылкой, поэтому и такой вариант для ТС может подойти ;)
---
Запрос кросс-курсов валют на любой набор дат

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