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

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

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

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

mixqn

делайте так, как я написал сначала, но только там в условии под ГДЕ у меня ошибка была. там период курса должен быть меньше либо равен, а не больше или равен. вот тут:

КурсыВалют.Период В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                Курсы.Период
            ИЗ
                РегистрСведений.КурсыВалют КАК Курсы
            ГДЕ
                Курсы.Период <= ПоступлениеТоваровУслуг.Дата
....


по поводу почему не равно, а больше или равно объясню: приведенный запрос получает последний имеющийся в системе курс, в частности, решается описанная в стартпосте проблема - получение пятничного курса в субботу.

чтобы было совсем понятно, попробую объяснить на пальцах: в условиях левого соединения мы берем все курсы, которые были ДО даты документа, отсюда условие
ПоступлениеТоваровУслуг.Дата >= КурсыВалют.Период
но нам нужны не все курсы до даты документа, а только последний, самый свежий, поэтом затем под ГДЕ мы указываем как раз это условие:

вот этот запрос
ВЫБРАТЬ ПЕРВЫЕ 1
Курсы.Период
ИЗ
РегистрСведений.КурсыВалют КАК Курсы
ГДЕ
Курсы.Период <= ПоступлениеТоваровУслуг.Дата
И Курсы.Валюта = КурсыВалют.Валюта
УПОРЯДОЧИТЬ ПО Курсы.Период УБЫВ

выбирает 1 дату курса, самую близкую к дате документа (или равную), буквально так: выбираются все курсы, дата которых меньше либо равна дате документа, упорядочиваются по убыванию периода (то есть самые свежие - сверху) и из них берется первый (то есть самый свежий).

ВНИМАНИЕ!
строка УПОРЯДОЧИТЬ ПО Курсы.Период УБЫВ обязательна! сначала я ее забыл - это вторая ошибка в первом варианте запроса

AlenkaInt


Теги:

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

Рейтинг@Mail.ru

Поиск