Курсы валют на разные даты в одном запросе. Делаем свой нестандартный срез последних.

28.06.12

Разработка - Запросы

Курсы валют на разные даты в одном запросе. Делаем свой нестандартный срез последних.
Часто возникает потребность в этом, например, отложенное формирование проводок (или построение отчета) в валюте регламентировано учета (обычно «руб») для документов (или других данных) введенным в у.е. (например USD или EUR).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка - КурсыВалютНаРазныеДаты.epf
.epf 8,76Kb
58
58 Скачать (1 SM) Купить за 1 850 руб.

Курсы валют на разные даты в одном запросе. Делаем свой нестандартный срез последних.

Часто возникает потребность в этом, например, отложенное формирование проводок (или построение отчета) в валюте регламентировано учета (обычно «руб») для документов (или других данных) введенным в у.е. (например USD или EUR).

Во вложении готовый пример, обработка.

Пример запроса с комментариями:

            // Исходные данные передаем в запрос

                        "ВЫБРАТЬ

                        |           ИсходныеДанные.Регистратор,

                        |           ИсходныеДанные.Дата,

                        |           ИсходныеДанные.Валюта,

                        |           ИсходныеДанные.Сумма

                        |ПОМЕСТИТЬ ИсходныеДанные

                        |ИЗ

                        |           &ИсходныеДанные КАК ИсходныеДанные

                        |;

                        |

            // Выбираем для каких валют на какие даты надо получить курсы валют

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ РАЗЛИЧНЫЕ

                        |           ИсходныеДанные.Дата,

                        |           ИсходныеДанные.Валюта

                        |ПОМЕСТИТЬ ДатаВалюта

                        |ИЗ

                        |           ИсходныеДанные КАК ИсходныеДанные

                        |;

                        |

            // Выбираем ближайшую дату для курса валют

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |           ДатаВалюта.Дата,

                        |           ДатаВалюта.Валюта,

                        |           МАКСИМУМ(КурсыВалют.Период) КАК Период

                        |ПОМЕСТИТЬ ДатаКурса

                        |ИЗ

                        |           ДатаВалюта КАК ДатаВалюта

                        |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют

                        |                       ПО ДатаВалюта.Валюта = КурсыВалют.Валюта

                        |                                  И ДатаВалюта.Дата >= КурсыВалют.Период

                        |

                        |СГРУППИРОВАТЬ ПО

                        |           ДатаВалюта.Дата,

                        |           ДатаВалюта.Валюта

                        |;

                        |

            // Получаем курсы валют на все даты, которые нужны

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |           ДатаКурса.Дата,

                        |           ДатаКурса.Валюта,

                        |           ДатаКурса.Период,

                        |           КурсыВалют.Курс,

                        |           КурсыВалют.Кратность

                        |ПОМЕСТИТЬ КурсыВалютСрез

                        |ИЗ

                        |           ДатаКурса КАК ДатаКурса

                        |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют

                        |                       ПО ДатаКурса.Валюта = КурсыВалют.Валюта

                        |                                  И ДатаКурса.Период = КурсыВалют.Период

                        |;

                        |

            // Объединяем исходные данные с курсами валют

                        |////////////////////////////////////////////////////////////////////////////////

                        |ВЫБРАТЬ

                        |           ИсходныеДанные.Регистратор,

                        |           ИсходныеДанные.Дата,

                        |           ИсходныеДанные.Валюта,

                        |           ИсходныеДанные.Сумма,

                        |           КурсыВалютСрез.Период,

                        |           КурсыВалютСрез.Курс,

                        |           КурсыВалютСрез.Кратность,

                        |           ИсходныеДанные.Сумма * КурсыВалютСрез.Курс / КурсыВалютСрез.Кратность КАК Итог

                        |ИЗ

                        |           ИсходныеДанные КАК ИсходныеДанные

                        |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВалютСрез КАК КурсыВалютСрез

                        |                       ПО ИсходныеДанные.Валюта = КурсыВалютСрез.Валюта

                        |                                  И ИсходныеДанные.Дата = КурсыВалютСрез.Дата";

 

Есть вопросы по запросам пишите, постараюсь ответить.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    182651    1013    403    

964

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

2 стартмани

06.02.2025    2101    17    XilDen    26    

36

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    5514    artemusII    11    

23

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    12930    sergey279    18    

65

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    8030    XilDen    36    

90

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3048    PROSTO-1C    0    

23

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    10624    user1840182    5    

29
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. Iaskeliainen 393 25.06.12 12:05 Сейчас в теме
Курсы валют на разные даты в одном запросе. Делаем свой нестандартный срез последних.
Часто возникает потребность в этом, например, отложенное формирование проводок (или построение отчета) в валюте регламентировано учета (обычно «руб») для документов (или других данных) введенным в у.е. (например USD или EUR).


Перейти к публикации

1. Поручик 4673 25.06.12 15:20 Сейчас в теме
Впечатление дикого дежа-вю. Где я это мог видеть? Впрочем, сейчас набежит местная илита местный бомонд грабить корованы, раскритикует или похвалит.
2. Iaskeliainen 393 25.06.12 15:38 Сейчас в теме
(1) Поручик, не исключенно, что подобное мог реализовать кто угодно.
Поиск не дал результатов, решил разместить своё.

Примерно так же я решал задачу по РЕПО при сдаче Спеца 1С по Платформе.
3. echo77 1921 27.06.12 17:30 Сейчас в теме
(0) То что вы описали - это не есть "Срез последних на каждую дату в запросе"? Если поиском посмотреть - на этом же сайте есть предложенные решения на СКД и в запросе. Вещь полезная.

Оформите публикацию(запрос) нормально
4. Iaskeliainen 393 28.06.12 10:12 Сейчас в теме
(3) echo77, запрос оформил.
Решение на СКД не нашел, интересно было посмотреть как решили эту проблему там, вдруг что-то интернесное.
6. Iaskeliainen 393 29.06.12 12:37 Сейчас в теме
(5) echo77, да там аналогичная задача.
Только там, остатки на каждый день * цены номенклатуры на дату остатка.
А у меня документы суммы в УЕ * Курс да дату документа.

Будет новичкам для примера.
7. Sergeevich 38 11.11.14 20:54 Сейчас в теме
Статья оказалась очень полезной, спасибо.
8. baluba 11 08.12.14 11:38 Сейчас в теме
10. smikirill-110686 05.02.17 16:02 Сейчас в теме
А если курса валюты нет на дату документа? тогда в колонке курс пусто?
12. alexandr_astafiev 68 02.08.17 15:50 Сейчас в теме
(10) Будет курс на какую то ближайшую предыдущую дату до даты документа, на которую есть курс.
11. user685936_Galiya_hamzina 05.02.17 16:44 Сейчас в теме
Да там получается пусто
13. alexandr_astafiev 68 02.08.17 15:59 Сейчас в теме
Хорошая статья. Достаточно просто и понятно. Конечно можно и самому сделать , но это время. А времени обычно мало, потому что работы много. Использовал идею данной статьи для расчета котировок для оценки стоимости ввода вывода ценных бумаг по документам за период (во завернул фразу!). Там и котировки нужно брать на предыдущий рабочий день нужной биржи, ну и курс валюты сами понимаете... В общем автору спасибо. Сэкономил мне время!
Оставьте свое сообщение