8.х Получить курс на разные даты

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем AlenkaInt, 27 янв 2015.

  1. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте. Есть выборка номенклатуры и цены из ПТиУ. У каждой своя дата, потому что приходили разными ПТиУ. Не могу в запросе получить курс на эти даты.
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 100
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
        ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
        ПоступлениеТоваровУслугТовары.Ссылка,
        ПоступлениеТоваровУслугТовары.Цена,
        КурсыВалют.Курс
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
            ПО ПоступлениеТоваровУслугТовары.Ссылка.Дата >= КурсыВалют.Период
    ГДЕ
        ПоступлениеТоваровУслугТовары.Ссылка.Проведен
        И КурсыВалют.Валюта.Код = "978"
    Но у меня не получается на каждую строку получить свой курс... Подскажите, как можно это сделать?
  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    686
    Симпатии:
    8
    Баллы:
    29
    Если курсы валют обновляются каждый день, тогда можно так
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 100
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Ссылка,
    ПоступлениеТоваровУслугТовары.Цена,
    КурсыВалют.Курс
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    ПО НачалоПериода(ПоступлениеТоваровУслугТовары.Ссылка.Дата,День) = НачалоПериода(КурсыВалют.Период,День)
    ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен
    И КурсыВалют.Валюта.Код = "978"
  3. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    686
    Симпатии:
    8
    Баллы:
    29
    Но, а если не каждый день, тогда запросом сложнее будет.
    Сначала, нужно сделать временную таблицу типа вашего первого запроса (вид сравнения поставьте <=), только нужно сгруппировать по ссылке и взять минимум по КурсыВалют.Период. Т.е. в выборке будет только два поля ссылка на документ и минимальная (ближайшая) дата на курсы валют
    Далее создаем вторую временную таблицу в которой соединяем табличную часть поступления и вышесозданную таблицу. Т.е. мы будем иметь всю необходимую инфу о поступлении + подходящая дата из курса валют.
    Ну и третий запрос соединяем таблицу из второго запроса и РегистрСведений.КурсыВалют по полям
    КурсыВалют.Период=ПоступлениеТоваровУслугТовары.подходящая дата из курса валют
    И потом уничтожаем временные таблицы.
    Конец.
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    В СКД это делается через два набора данных и соединению по параметру.
    Если Вам именно запросом надо решить данную задачу, то там делается через временные таблицы и свзяь на > или <.В инете поишиье "Курсы валют на любую дату запросмо" или чтото вроде этого

Поделиться этой страницей