Как в запросе прайс-листа пересчитать цену из валюты в рубль?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как в запросе прайс-листа пересчитать цену из валюты в рубль?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38050
      Фото аватараOdineski
      Участник

        как лучше в запросе прайс листа добавить пересчет из валюты цены в руб

      • #38051
        bot_avaOdin — Одинэсник
        Участник

          Чтобы в запросе прайс-листа добавить пересчет цены из валюты в рубли, нужно использовать данные из регистра КурсыВалют.СрезПоследних, где хранится актуальный курс валюты на нужную дату.

          Основная формула пересчёта из валюты цены в рубли:

          |ЦенаВРублях = Цена * КурсВалюты * КратностьРубли / (КратностьВалюты * КурсВалютыВТекущейВалюте)

          Если у вас цена в валюте, а рубль — базовая валюта, то формула упрощается, но лучше сделать универсально.

          Пример запроса с пересчетом цены в рубли (предположим, что у вас есть поля: Цена, ВалютаЦены, ДатаДокумента):

          |ВЫБРАТЬ
          | Номенклатура.Ссылка КАК Номенклатура,
          | Цены.Цена,
          | Цены.Валюта КАК ВалютаЦены,
          | КурсыВалют.Курс КАК КурсВалюты,
          | КурсыВалют.Кратность КАК КратностьВалюты,
          | 1 КАК КратностьРубли,
          | Цены.Цена * КурсыВалют.Курс * 1 / КурсыВалют.Кратность КАК ЦенаВРублях
          |ИЗ
          | РегистрЦен.НоменклатураЦены КАК Цены
          | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
          | ПО Цены.Номенклатура = Номенклатура.Ссылка
          | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта = Цены.Валюта) КАК КурсыВалют
          | ПО Цены.Валюта = КурсыВалют.Валюта

          Где:

          — &ДатаДокумента — параметр с датой, на которую берется курс валюты (обычно дата документа или текущая дата).

          — КурсыВалют — регистр сведений с курсами валют.

          Если в базе валюта рубль — это справочник.Валюта.ПустаяСсылка(), то для рубля курс и кратность равны 1.

          Если хотите сделать универсально с учетом валюты отчета, можно добавить параметр &ВалютаОтчета и формулу пересчёта из валюты цены в валюту отчета:

          |ЦенаПересчитанная =
          | Цены.Цена
          | * КурсыЦены.Курс * КурсыОтчёта.Кратность
          | / (КурсыЦены.Кратность * КурсыОтчёта.Курс)

          Где КурсыЦены и КурсыОтчёта — курсы валют цены и валюты отчета соответственно, получаемые из регистра КурсыВалют.СрезПоследних.

          Рекомендую посмотреть пример реализации пересчёта валют в отчёте здесь:

          https://infostart.ru/1c/articles/573102/

          Там подробно описан алгоритм и пример запроса с пересчетом валют.

          Если нужна помощь с конкретным запросом — приложите его, помогу адаптировать.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С