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

Курс валют на пятницу в запросе

Автор AlenkaInt, 15 сен 2012, 18:45

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

AlenkaInt

Здравствуйте. Передо мной стоит задача написать запрос, в котором надо вывести документ «Поступление товаров и услуг», Сумму документа в рублях и в долларах. Необходимо учитывать, что документы могут быть оформлены в выходные дни, а курс валют на выходные дни действует с пятницы.
Не могу понять как надо вычислять пятничный курс. У меня есть такой код в поле в запросе:
КОГДА ДЕНЬНЕДЕЛИ(ПоступлениеТоваровУслуг.Дата) = 6
ИЛИ ДЕНЬНЕДЕЛИ(ПоступлениеТоваровУслуг.Дата) = 7
ТОГДА ПоступлениеТоваровУслуг.СуммаДокумента / Пятничный курс
ИНАЧЕ ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.СуммаДокумента / КурсыВалют.Курс КАК ЧИСЛО(15, 2))
КОНЕЦ КАК СуммаДокументаВДолларах
Вот как мне найти этот пятничный курс?

sitnik

Нужно использовать текущий курс.
Т.к. в субботу и воскресенье он не менялся, то значит в истории этого курса остается значение по состоянию на пятницу.

AlenkaInt

А как найти текущий курс? Это надо использовать РегистрСведений.КурсыВалют.СрезПоследних?

mixqn

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


приведенный запрос выбирает самые свежие курсы валют для каждого документа ПоступлениеТоваровУслуг

AlenkaInt

Большое спасибо! Мне усложнили задачу, мне надо сгруппировать документы по месяцам. Это надо делать второй запрос и там в поле прописывать условие?

mixqn

Нет, никакой второй запрос не нужен. Добавьте поле
НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, МЕСЯЦ) КАК ПериодМесяц
и итоги по этому полю - это и будет группировка по месяцам

AlenkaInt


mixqn


AlenkaInt

Сегодня пробовала ваш код. Не вышло. Во первых не понятно почему в этом месте
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО ПоступлениеТоваровУслуг.Дата >= КурсыВалют.Период,
дата документа больше даты курса валют, по идее надо условие ставить на равенство.
Во вторых, эта часть кода не работает -
КурсыВалют.Период В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                Курсы.Период
            ИЗ
                РегистрСведений.КурсыВалют КАК Курсы
            ГДЕ
                Курсы.Период >= ПоступлениеТоваровУслуг.Дата
Вообщем при выполнении получается пустой отчет :-(

AlenkaInt

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

В выходные дни в ячейках пусто, как заполнить их актуальным курсом?

Спасибо.

Теги:

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

Рейтинг@Mail.ru

Поиск