8.х Курс валют на разные даты в запросе

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

  1. TopicStarter Overlay
    AlexKZT
    Offline

    AlexKZT

    Регистрация:
    28 дек 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток!
    Подскажите как мне получить курс валют на разные даты в запросе


    Подскажите на примере запроса

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ТиповойДвиженияССубконто.Регистратор,
    | ТиповойДвиженияССубконто.СчетДт КАК СчетДт,
    | ТиповойДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
    | ТиповойДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2,
    | ТиповойДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3,
    | ТиповойДвиженияССубконто.СчетКт КАК СчетКт,
    | ВЫБОР
    | КОГДА ТиповойДвиженияССубконто.СчетДт <> &СчетБанк
    | ТОГДА 0
    | ИНАЧЕ ТиповойДвиженияССубконто.Сумма
    | КОНЕЦ КАК СуммаПриход,
    | ВЫБОР
    | КОГДА ТиповойДвиженияССубконто.СчетКт <> &СчетБанк
    | ТОГДА 0
    | ИНАЧЕ ТиповойДвиженияССубконто.Сумма
    | КОНЕЦ КАК СуммаРасход,
    | ТиповойДвиженияССубконто.СубконтоКт1,
    | ТиповойДвиженияССубконто.СубконтоКт2,
    | ТиповойДвиженияССубконто.СубконтоКт3,
    | НАЧАЛОПЕРИОДА(ТиповойДвиженияССубконто.Период, МЕСЯЦ) КАК Период,
    | ТиповойДвиженияССубконто.Регистратор.Субконто1 КАК Суб1,
    | ТиповойДвиженияССубконто.Регистратор.Субконто2 КАК Суб2,
    | ТиповойДвиженияССубконто.Период КАК ДатаПроводки
    |ИЗ
    | РегистрБухгалтерии.Типовой.ДвиженияССубконто(&НачалоПериода, &КонецПериода, Субконто1 В (&СчетОрганизации), , ) КАК ТиповойДвиженияССубконто
    |ГДЕ
    | (ТиповойДвиженияССубконто.СчетДт = &СчетБанк
    | ИЛИ ТиповойДвиженияССубконто.СчетКт = &СчетБанк)
    | И ТиповойДвиженияССубконто.Регистратор.Субконто1 В(&Суб1)";


    Допустим у меня получается результат запроса:

    Дата проводки | Сумма приход | Сумма расход |
    01.12.2016 500
    02.12.2016 1000
    03.12.2016 1000


    Вот теперь мне нужно на 1,2 и 3 декабря в эту же таблицу вытащить курс из типового регистра сведений "Курсы валют", что бы получилось:

    Дата проводки | Сумма приход | Сумма расход | Курс |
    01.12.2016 500 330
    02.12.2016 1000 329
    03.12.2016 1000 335



    делаю так:

    "ВЫБРАТЬ
    | ТиповойДвиженияССубконто.Регистратор,
    | ТиповойДвиженияССубконто.СчетДт КАК СчетДт,
    | ТиповойДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
    | ТиповойДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2,
    | ТиповойДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3,
    | ТиповойДвиженияССубконто.СчетКт КАК СчетКт,
    | ВЫБОР
    | КОГДА ТиповойДвиженияССубконто.СчетДт <> &СчетБанк
    | ТОГДА 0
    | ИНАЧЕ ТиповойДвиженияССубконто.Сумма
    | КОНЕЦ КАК СуммаПриход,
    | ВЫБОР
    | КОГДА ТиповойДвиженияССубконто.СчетКт <> &СчетБанк
    | ТОГДА 0
    | ИНАЧЕ ТиповойДвиженияССубконто.Сумма
    | КОНЕЦ КАК СуммаРасход,
    | ТиповойДвиженияССубконто.СубконтоКт1,
    | ТиповойДвиженияССубконто.СубконтоКт2,
    | ТиповойДвиженияССубконто.СубконтоКт3,
    | НАЧАЛОПЕРИОДА(ТиповойДвиженияССубконто.Период, МЕСЯЦ) КАК Период,
    | ТиповойДвиженияССубконто.Регистратор.Субконто1 КАК Суб1,
    | ТиповойДвиженияССубконто.Регистратор.Субконто2 КАК Суб2,
    | ТиповойДвиженияССубконто.Период КАК ДатаПроводки,
    | КурсыВалют.Период КАК ДатаВалюты,
    | КурсыВалют.Курс
    |ИЗ
    | РегистрСведений.КурсыВалют КАК КурсыВалют
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ДвиженияССубконто(&НачалоПериода, &КонецПериода, Субконто1 В (&СчетОрганизации), , ) КАК ТиповойДвиженияССубконто
    | ПО (КурсыВалют.Период = НАЧАЛОПЕРИОДА(ТиповойДвиженияССубконто.Регистратор.Дата, ДЕНЬ))
    |ГДЕ
    | (ТиповойДвиженияССубконто.СчетДт = &СчетБанк
    | ИЛИ ТиповойДвиженияССубконто.СчетКт = &СчетБанк)
    | И ТиповойДвиженияССубконто.Регистратор.Субконто1 В(&Суб1)
    | И КурсыВалют.Валюта = &Доллар"



    вроде бы на первый взгляд все нормально, курс на эти даты выводится правильный, но записи попадают не все, и отчет формирует не правильную итоговую сумму.

    Я думаю это за счет того что если на эту дату нету курса в рег.сведений, то запись не выводится.

    А как сделать так, что если нету курса на эту дату, чтобы брался предыдущий, по принципу "СрезПоследних"

    Заранее спасибо))
  2. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.485
    Симпатии:
    333
    Баллы:
    104
  3. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    959
    Баллы:
    204

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