Не пойму, как выбрать продажи, с колонкой стоимости в дополнительно указываемой валюте. Вы не могли бы простой пример привести, как связать регистр ПродажиОбороты с регистром КурсыВалют, чтобы получить стоимость продажи в нужной валюте по курсу именно когда была продажа, а не по сегодняшнему.
---
Верно. Первая временная таблица ни к чему совершенно. А вот левое соединение неявно намекает, что где-то нужен ЕСТЬNULL )

К примеру, если регистр курсов пуст, запрос вернет пустую таблицу. Так что правильнее так:

```1c
    ВЫБРАТЬ
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта,
    МАКСИМУМ(ЕСТЬNULL(КурсыВалют.Период, ДАТАВРЕМЯ(1, 1, 1))) КАК Период
    ПОМЕСТИТЬ ВТДатыКурсов
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ЗаказКлиента.Дата >= КурсыВалют.Период
    И ЗаказКлиента.Валюта = КурсыВалют.Валюта
    ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &Дата И &Дата2

    СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТДатыКурсов.Ссылка,
    ВТДатыКурсов.Валюта,
    ВТДатыКурсов.Период,
    ЕСТЬNULL(КурсыВалют.Курс, 1) КАК Курс,
    ЕСТЬNULL(КурсыВалют.Кратность, 1) КАК Кратность
    ИЗ
    ВТДатыКурсов КАК ВТДатыКурсов
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ВТДатыКурсов.Период = КурсыВалют.Период
    И ВТДатыКурсов.Валюта = КурсыВалют.Валюта
```
---
ищите классический запрос РС "срез на каждую дату"
---
https://infostart.ru/public/306536/
Пункт 4
---
Вот пример запроса, собирающего счета за указанный период и подхватывающий для каждого курс и кратность
Писал на скорую руку, с индексированием и видами соединения не заморачивался, извиняйте..

```1c
    ВЫБРАТЬ
    КурсыВалют.Период,
    КурсыВалют.Валюта,
    КурсыВалют.Курс,
    КурсыВалют.Кратность
    ПОМЕСТИТЬ ВТКурсыВалют
    ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта,
    МАКСИМУМ(ВТКурсыВалют.Период) КАК Период
    ПОМЕСТИТЬ ВТДатыКурсов
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ ВТКурсыВалют КАК ВТКурсыВалют
    ПО ЗаказКлиента.Дата >= ВТКурсыВалют.Период
    И ЗаказКлиента.Валюта = ВТКурсыВалют.Валюта
    ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &Дата И &Дата2

    СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТДатыКурсов.Ссылка,
    ВТДатыКурсов.Валюта,
    КурсыВалют.Курс,
    КурсыВалют.Кратность,
    КурсыВалют.Период
    ИЗ
    ВТДатыКурсов КАК ВТДатыКурсов
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ВТДатыКурсов.Период = КурсыВалют.Период
    И ВТДатыКурсов.Валюта = КурсыВалют.Валюта
```
---
В данном примере временная таблица ВТКурсыВалют - лишняя. Это полная копия регистра сведений.
Если документы будут, например, только по рублям, в РС курсы и по евро и доллару и по тенге, то будет много лишней информации.

Делайте соединение сразу на сам регистр сведений.

Остальное верно.
---
Верно. Первая временная таблица ни к чему совершенно. А вот левое соединение неявно намекает, что где-то нужен ЕСТЬNULL )

К примеру, если регистр курсов пуст, запрос вернет пустую таблицу. Так что правильнее так:

```1c
    ВЫБРАТЬ
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта,
    МАКСИМУМ(ЕСТЬNULL(КурсыВалют.Период, ДАТАВРЕМЯ(1, 1, 1))) КАК Период
    ПОМЕСТИТЬ ВТДатыКурсов
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ЗаказКлиента.Дата >= КурсыВалют.Период
    И ЗаказКлиента.Валюта = КурсыВалют.Валюта
    ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &Дата И &Дата2

    СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Ссылка,
    ЗаказКлиента.Дата,
    ЗаказКлиента.Валюта
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТДатыКурсов.Ссылка,
    ВТДатыКурсов.Валюта,
    ВТДатыКурсов.Период,
    ЕСТЬNULL(КурсыВалют.Курс, 1) КАК Курс,
    ЕСТЬNULL(КурсыВалют.Кратность, 1) КАК Кратность
    ИЗ
    ВТДатыКурсов КАК ВТДатыКурсов
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО ВТДатыКурсов.Период = КурсыВалют.Период
    И ВТДатыКурсов.Валюта = КурсыВалют.Валюта
```