Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 мая 2024, 15:01

Получить курс валюты в отчете скд на текущую дату

Автор Alter, 15 мая 2018, 00:58

0 Пользователей и 1 гость просматривают эту тему.

Alter

Добрый день! Снова нужна помощь. Делаю несложный отчет на скд, который выводит реестр реализаций с определенным набором данных. Среди прочего выводится колонка с суммой по каждой реализации. Сумма в долларах, т.к. все расчеты в программе ведутся в валюте. Мне нужно создать колонку, в которой бы выводилась сумма в рублях по данной реализации. Для этого мне нужно получить курс доллара на дату формирования отчета, т.е. на текущую дату, и умножить сумму документа на этот курс.
Понимаю, что нужно обращаться к регистру сведений таблице КурсыВалют.СрезПоследних, но не могу сообразить как обыграть в запросе так, чтобы получить текущий курс. Соединять таблицы, думаю, не нужно, т.к. привязывать даты документов к курсу не требуется. Нужен всегда только последний курс.
Подскажите, пожалуйста)

AIFrame

Ну так получи курс на текущую дату и множь на суммы документов.

oleg-x

В голову пока приходит такой способ. Добавить произвольное поле и сделать запрос в этом поле.
Единственный минус, сколько документов, столько раз и запрос будет выполнятся.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Luzer1C

Во временную таблицу помести курс и будет тебе счастье.
Халамбалам.

Norfolk

Вам нужно делать через наборы данныхи связываться по параметру Дата. Первый набор - основной ваш запрос. Второй набор - Курсы валют, где в качестве поля будет параметр &Дата.
Пример ниже на моих данных.
Первый набор:
ВЫБРАТЬ
ЗакупкиОбороты.Номенклатура,
СУММА(ЗакупкиОбороты.СтоимостьОборот) КАК СтоимостьОборотОтчетныйГод,
ЗакупкиОбороты.Регистратор.СуммаВключаетНДС КАК СуммаВключаетНДС,
ЗакупкиОбороты.Регистратор.ВалютаДокумента КАК ВалютаДокумента,
ЗакупкиОбороты.Регистратор.Дата КАК Дата
{ВЫБРАТЬ
Дата}
ИЗ
РегистрНакопления.Закупки.Обороты(&НачалоПериодаОтчетный {(&НачалоПериодаОтчетный)}, &КонецПериодаОтчетный {(&КонецПериодаОтчетный)}, Авто, ) КАК ЗакупкиОбороты
ГДЕ
ЗакупкиОбороты.Номенклатура.Импортная
И ЗакупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
И НЕ ЗакупкиОбороты.Номенклатура.Услуга
{ГДЕ
ЗакупкиОбороты.Регистратор.Дата КАК Дата}

СГРУППИРОВАТЬ ПО
ЗакупкиОбороты.Номенклатура,
ЗакупкиОбороты.Регистратор.СуммаВключаетНДС,
ЗакупкиОбороты.Регистратор.ВалютаДокумента,
ЗакупкиОбороты.Регистратор.Дата

Второй набор:
ВЫБРАТЬ
&Дата КАК Дата,
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Курс КАК Курс,
КурсыВалютСрезПоследних.Кратность КАК Кратность
{ВЫБРАТЬ
Дата,
Валюта.*,
Курс,
Кратность}
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&Дата {(&Дата)}, ) КАК КурсыВалютСрезПоследних
{ГДЕ
КурсыВалютСрезПоследних.Курс,
КурсыВалютСрезПоследних.Кратность}


В связи набора данных соединение делаете так как на скрине.
Вычисление стоимости произвожу в вычисляемых полях:
выбор когда УчитыватьНДС Тогда ЕСТЬNULL(СтоимостьОборотОтчетныйГод / 1.18 / Курс * Кратность, 0) иначе ЕСТЬNULL(СтоимостьОборотОтчетныйГод  / Курс * Кратность, 0) конец
В итоге получается курс валюты на дату документа.

oleg-x

ЦитироватьВ итоге получается курс валюты на дату документа.
ему нужна валюта на текущую дату.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

alex0402

Цитата: Alter от 15 мая 2018, 00:58Понимаю, что нужно обращаться к регистру сведений таблице КурсыВалют.СрезПоследних, но не могу сообразить как обыграть в запросе так, чтобы получить текущий курс

Цитата: Alter от 15 мая 2018, 00:58Нужен всегда только последний курс

нужен срез последних и связь с документами по валюте.
Спасибо за Сказать спасибо

Alter

Цитата: alex0402 от 15 мая 2018, 13:31
Цитата: Alter от 15 мая 2018, 00:58Понимаю, что нужно обращаться к регистру сведений таблице КурсыВалют.СрезПоследних, но не могу сообразить как обыграть в запросе так, чтобы получить текущий курс

Цитата: Alter от 15 мая 2018, 00:58Нужен всегда только последний курс

нужен срез последних и связь с документами по валюте.

Написала вот такой код в одном наборе данных:

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

При настройке в одной из колонок прописываю СуммаДокумента*Курс
При попытке вывода отчета программа пишет: не найдено поле "курс".. Вот такие дела. в чем может быть трабл?

alex0402

Цитата: Alter от 15 мая 2018, 15:04ПО РеализацияТоваровУслуг.Дата >= КурсыВалютСрезПоследних.Период

заменить на

РеализацияТоваровУслуг.Валюта = КурсыВалютСрезПоследних.Валюта
Спасибо за Сказать спасибо

Alter

Цитата: alex0402 от 15 мая 2018, 15:12
Цитата: Alter от 15 мая 2018, 15:04ПО РеализацияТоваровУслуг.Дата >= КурсыВалютСрезПоследних.Период

заменить на

РеализацияТоваровУслуг.Валюта = КурсыВалютСрезПоследних.Валюта

Заменила. Поле "Курс" по-прежнему не найдено((

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск