Курс валют в динамике: Динамика курсов доллара США и евро к рублю и показатели биржевых торгов
Содержание
Динамика курсов валют
Курс (кросс-курс):
Австралийского доллара (AUD)Австрийского шиллинга (ATS)Азербайджанского маната (AZN)Азербайджанского маната (AZM)Албанского лека (ALL)Алжирского динара (DZD)Ангольской кванзы (AOA)Аргентинского песо (ARS)Армянского драма (AMD)Афганских афгани (AFN)Афганского афгани (AFG)Багамского доллара (BSD)Бальбоа (PAB)Бангладешского така (BDT)Барбадосского доллара (BBD)Бахрейнского динара (BHD)Белoрусского рубля (BYB)Белизского доллара (BZD)Белорусского рубля (BYN)Белорусского рубля (BYR)Бельгийского франка (BEF)Болгарского лева (BGN)Боливийского боливиано (BOB)Ботсванской пулы (BWP)Бразильского реала (BRL)Брунейского доллара (BND)Бурундийского франка (BIF)Вату (VUV)Венгерского форинта (HUF)Венесуэльского боливара (VEB)Венесуэльского боливара фуэрте (VEF)Вона Республики Корея (KRW)Восточно-карибского доллара (XCD)Вьетнамского донга (VND)Гайанского доллара (GYD)Гамбийского даласи (GMD)Ганского седи (GHS)Ганского седи (GHS)Гвинейского франка (GNF)Гонконгского доллара (HKD)Греческой драхмы (GRD)Грузинского лари (GEL)Гурда (HTG)Датской кроны (DKK)Денара Республики Македония (MKD)Дирхама ОАЭ (AED)Добры (STD)Доллара Зимбабве (ZWD)Доллара Намибии (NAD)Доллара Соломоновых Островов (SBD)Доллара США (USD)Доллара Тринидада и Тобаго (TTD)Доллара Фиджи (FJD)Доминиканского песо (DOP)Евро (EUR)Египетского фунта (EGP)Замбийской квачи (ZMK)Индийской рупии (INR)Индонезийской рупии (IDR)Иорданского динара (JOD)Иракского динара (IQD)Иранского риала (IRR)Ирландского фунта (IEP)Исландской кроны (ISK)Испанской песеты (ESP)Итальянской лиры (ITL)Йеменского риала (YER)Казахстанских тенге (KZT)Камбоджийского риеля (KHR)Канадского доллара (CAD)Катарского риала (QAR)Кенийского шиллинга (KES)Кетсали (GTQ)Кины (PGK)Кипа Лаосской НДР (LAK)Кипрского фунта (CYP)Киргизского сома (KGS)Китайского юаня Жэньминьби (CNY)Колумбийского песо (COP)Конголезского франка (CDF)Костариканского колона (CRC)Кубинского песо (CUP)Кувейтского динара (KWD)Кьята (MMK)Латвийского лата (LVL)Лемпиры (HNL)Либерийского доллара (LRD)Ливанского фунта (LBP)Ливийского динара (LYD)Лилангени (SZL)Литовского лита (LTL)Лоти (LSL)Маврикийской рупии (MUR)Мавританской угии (MRO)Малавийской квачи (MWK)Малагасийского ариари (MGA)Малагасийского франка (MGF)Малайзийского ринггита (MYR)Мальтийской лиры (MTL)Марокканского дирхама (MAD)Мексиканского песо (MXN)Мозамбикского метикала (MZN)Мозамбикского метикала (MZM)Молдавского лея (MDL)Монгольского тугрика (MNT)Накфы (ERN)Немецкой марки (DEM)Непальской рупии (NPR)Нигерийской найры (NGN)Нидерландского гульдена (NLG)Никарагуанской золотой кордобы (NIO)Новой турецкой лиры (TRY)Новозеландского доллара (NZD)Нового доллара Зимбабве (ZWN)Нового израильского шекеля (ILS)Нового румынского лея (RON)Нового тайваньского доллара (TWD)Нового туркменского маната (TMT)Норвежской кроны (NOK)Оманского риала (OMR)Паанги (TOP)Пакистанской рупии (PKR)Парагвайской гуарани (PYG)Перуанского нового соля (PEN)Польского злотого (PLN)Португальского эскудо (PTE)Российского рубля (RUR)Румынского лея (ROL)Саудовского рияла (SAR)СДР (XDR)Северо-корейской воны (KPW)Сейшельских рупий (SCR)Сербского динара (RSD)Сербского динара (CSD)Сингапурского доллара (SGD)Сирийского фунта (SYP)Словацкой кроны (SKK)Словенского толара (SIT)Сомалийского шиллинга (SOS)Суданского динара (SDD)Суданского фунта (SDG)Суринамского гульдена (SRG)Суринамского доллара (SRD)Сьерра-Леонского леоне (SLL)Таджикского сомони (TJS)Таиландского бата (THB)Талы (WST)Танзанийского шиллинга (TZS)Тунисского динара (TND)Турецкой лиры (TRL)Туркменского маната (TMM)Угандийского шиллинга (UGX)Угии (MRU)Узбекского сума (UZS)Украинской гривны (UAH)Уругвайского песо (UYU)Филиппинского песо (PHP)Финляндской марки (FIM)Франка Джибути (DJF)Франка Комора (KMF)Франка КФА ВЕАС (XAF)Франка КФА ВСЕАО (XOF)Франка Руанды (RWF)Французского франка (FRF)Фунта стерлингов Соединенного Королевства (GBP)Хорватской куны (HRK)Чешской кроны (CZK)Чилийского песо (CLP)Шведской кроны (SEK)Швейцарского франка (CHF)Шри-Ланкийской рупии (LKR)ЭКЮ (XEU)Эскудо Кабо-Верде (CVE)Эстонской кроны (EEK)Эфиопского быра (ETB)Югославского нового динара (YUN)Южноафриканского рэнда (ZAR)Южносуданского фунта (SSP)Ямайского доллара (JMD)Японской йены (JPY)
К:
Австралийскому доллару (AUD)Австрийскому шиллингу (ATS)Азербайджанскому манату (AZN)Азербайджанскому манату (AZM)Албанскому леку (ALL)Алжирскому динару (DZD)Ангольской кванзе (AOA)Аргентинскому песо (ARS)Армянскому драму (AMD)Афганским афгани (AFN)Афганскому афгани (AFG)Багамскому доллару (BSD)Бальбоа (PAB)Бангладешскому таку (BDT)Барбадосскому доллару (BBD)Бахрейнскому динару (BHD)Белoрусскому рублю (BYB)Белизскому доллару (BZD)Белорусскому рублю (BYN)Белорусскому рублю (BYR)Бельгийскому франку (BEF)Болгарскому леву (BGN)Боливийскому боливиано (BOB)Ботсванской пуле (BWP)Бразильскому реалу (BRL)Брунейскому доллару (BND)Бурундийскому франку (BIF)Вату (VUV)Венгерскому форинту (HUF)Венесуэльскому боливару (VEB)Венесуэльскому боливару фуэртей (VEF)Вону Республики Корея (KRW)Восточно-карибскому доллару (XCD)Вьетнамскому донгу (VND)Гайанскому доллару (GYD)Гамбийскому даласи (GMD)Ганскому седи (GHS)Ганскому седи (GHS)Гвинейскому франку (GNF)Гонконгскому доллару (HKD)Греческой драхме (GRD)Грузинскому лари (GEL)Гурду (HTG)Датской кроне (DKK)Денару Республики Македония (MKD)Дирхаму ОАЭ (AED)Добре (STD)Доллару Зимбабве (ZWD)Доллару Намибии (NAD)Доллару Соломоновых Островов (SBD)Доллару США (USD)Доллару Тринидада и Тобаго (TTD)Доллару Фиджи (FJD)Доминиканскому песо (DOP)Евро (EUR)Египетскому фуну (EGP)Замбийской кваче (ZMK)Индийской рупии (INR)Индонезийской рупии (IDR)Иорданскому динару (JOD)Иракскому динару (IQD)Иранскому риалу (IRR)Ирландскому фунту (IEP)Исландской кроне (ISK)Испанской песете (ESP)Итальянской лире (ITL)Йеменскому риалу (YER)Казахстанскому тенге (KZT)Камбоджийскому риелю (KHR)Канадскому доллару (CAD)Катарскому риалу (QAR)Кенийскому шиллингу (KES)Кетсали (GTQ)Кине (PGK)Кипу Лаосской НДР (LAK)Кипрскому фунту (CYP)Киргизскому сому (KGS)Китайскому юаню Жэньминьби (CNY)Колумбийскому песо (COP)Конголезскому франку (CDF)Костариканскому колону (CRC)Кубинскому песо (CUP)Кувейтскому динару (KWD)Кьяту (MMK)Латвийскому лату (LVL)Лемпире (HNL)Либерийскому доллару (LRD)Ливанскому фунту (LBP)Ливийскому динару (LYD)Лилангени (SZL)Литовскому литу (LTL)Лоти (LSL)Маврикийской рупии (MUR)Мавританской угии (MRO)Малавийской кваче (MWK)Малагасийскому ариари (MGA)Малагасийскому франку (MGF)Малайзийскому ринггиту (MYR)Мальтийской лире (MTL)Марокканскому дирхаму (MAD)Мексиканскому песо (MXN)Мозамбикскому метикалу (MZN)Мозамбикскому метикалу (MZM)Молдавскому лею (MDL)Монгольскому тугрику (MNT)Накфе (ERN)Немецкой марке (DEM)Непальской рупии (NPR)Нигерийской найре (NGN)Нидерландскому гульдену (NLG)Никарагуанской золотой кордобе (NIO)Новой турецкой лире (TRY)Новозеландскому доллару (NZD)Новому доллару Зимбабве (ZWN)Новому израильскому шекелю (ILS)Новому румынскому лею (RON)Новому тайваньскому доллару (TWD)Новому туркменскому манату (TMT)Норвежской кроне (NOK)Оманскому риалу (OMR)Паанге (TOP)Пакистанской рупии (PKR)Парагвайской гуарани (PYG)Перуанским новым солем (PEN)Польскому злотому (PLN)Португальскому эскудо (PTE)Российскому рублю (RUR)Румынскому лею (ROL)Саудовскому риялу (SAR)СДР (XDR)Северо-корейской воне (KPW)Сейшельской рупии (SCR)Сербскому динару (RSD)Сербскому динару (CSD)Сингапурскому доллару (SGD)Сирийскому фунту (SYP)Словацкой кроне (SKK)Словенскому толару (SIT)Сомалийскому шиллингу (SOS)Суданскому динару (SDD)Суданскому фунту (SDG)Суринамскому гульдену (SRG)Суринамскому доллару (SRD)Сьерра-Леонскому леоне (SLL)Таджикскому сомони (TJS)Таиландскому бату (THB)Тале (WST)Танзанийскому шиллингу (TZS)Тунисскому динару (TND)Турецкой лире (TRL)Туркменским манатом (TMM)Угандийскому шиллингу (UGX)Угие (MRU)Узбекскому суму (UZS)Украинской гривне (UAH)Уругвайскому песо (UYU)Филиппинскому песо (PHP)Финляндской марке (FIM)Франку Джибути (DJF)Франку Комору (KMF)Франку КФА ВЕАС (XAF)Франку КФА ВСЕАО (XOF)Франку Руанды (RWF)Французскому франку (FRF)Фунту стерлингов Соединенного Королевства (GBP)Хорватской куне (HRK)Чешской кроне (CZK)Чилийскому песо (CLP)Шведской кроне (SEK)Швейцарскому франку (CHF)Шри-Ланкийской рупии (LKR)ЭКЮ (XEU)Эскудо Кабо-Верде (CVE)Эстонской кроне (EEK)Эфиопскому быру (ETB)Югославскому новому динару (YUN)Южноафриканскому рэнду (ZAR)Южносуданскому фунту (SSP)Ямайскому доллару (JMD)Японской йене (JPY)
График
Таблица
По курсу ЦБ РФ
По курсу ЕЦБ
Обновляемый курс валют в Excel
26782
10. 08.2021
Скачать пример
Я уже неоднократно разбирал способы импорта данных в Excel из интернета с последующим автоматическим обновлением. В частности:
- В старых версиях Excel 2007-2013 это можно было сделать с помощью прямого веб-запроса.
- Начиная с 2010 года это можно очень удобно делать с помощью надстройки Power Query.
К этим способам в последних версиях Microsoft Excel теперь можно добавить ещё один — импорт данных из интернета в формате XML с помощью встроенных функций.
XML (eXtensible Markup Language = Расширяемый Язык Разметки) – это универсальный язык, созданный для описания любых данных. По сути, он представляет собой обычный текст, но с добавленными в него специальными тегами для разметки структуры данных. Многие сайты совершенно бесплатно предоставляют всем желающим потоки своих данных в XML-формате для загрузки. На сайте Центрального Банка России (www.cbr.ru), в частности, с помощью подобной технологии отдаются данные по курсам различных валют. С сайта Московской Биржи (www.moex.com) таким же образом можно загрузить котировки акций, облигаций и множество другой полезной информации.
Начиная с версии 2013 в Excel появились две функции для прямой загрузки XML-данных из интернета в ячейки листа: ВЕБСЛУЖБА (WEBSERVICE) и ФИЛЬТР.XML (FILTERXML). Работают они в паре — сначала функция ВЕБСЛУЖБА выполняет запрос к нужному сайту и возвращает его ответ в формате XML, а затем с помощью функции ФИЛЬТР.XML мы «разбираем» этот ответ на составляющие, извлекая из него нужные нам данные.
Давайте рассмотрим работу этих функций на классическом примере – импорте курса любой нужной нам валюты на заданный интервал дат с сайта Центробанка России. В качестве заготовки будем использовать вот такую конструкцию:
Здесь:
- В жёлтых ячейках находятся даты начала и окончания интересующего нас периода.
- В синей сделан выпадающий список валют при помощи команды Данные — Проверка — Список (Data — Validation — List).
- В зеленых ячейках мы будем использовать наши функции, чтобы создать строку запроса и получить ответ сервера.
- Таблица справа — справочник по кодам валют (потребуется нам чуть позже).
Поехали!
Шаг 1. Формируем строку запроса
Чтобы получить от сайта требуемую информацию, его нужно правильно спросить. Заходим на www.cbr.ru и в подвале главной страницы открываем ссылку Технические ресурсы - Получение данных, используя XML (http://cbr.ru/development/SXML/). Проматываем чуть ниже и во втором примере (Example 2) будет то, что нам нужно — получение курсов валюты на заданный интервал дат:
Как видно из примера, строка запроса должна содержать даты начала (date_req1) и окончания (date_req2) интересующего нас периода и код валюты (VAL_NM_RQ), курс которой мы хотим получить. Коды основных валют вы можете найти в таблице ниже:
|
|
|
|
|
Австралийский доллар |
R01010 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Полный справочник по кодам валют есть там же, на сайте ЦБ – см. http://cbr.ru/scripts/XML_val.asp?d=0
Теперь сформируем строку запроса в ячейке на листе с помощью:
- оператора склейки текста (&), чтобы собрать воедино;
- функции ВПР (VLOOKUP), чтобы найти код нужной нам валюты в справочнике;
- функции ТЕКСТ (TEXT), преобразующей дату по заданному шаблону день-месяц-год через косую черту.
="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")& "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)
Шаг 2. Выполняем запрос
Теперь используем функцию ВЕБСЛУЖБА (WEBSERVICE) с созданной строкой запроса в качестве единственного аргумента. Ответом будет длинная строка XML-кода (лучше включить перенос по словам и увеличить размер ячейки, если хочется увидеть её целиком):
Шаг 3. Разбираем ответ
Чтобы легче было разобраться в структуре данных ответа, лучше воспользоваться одним из онлайн-парсеров XML (например, http://xpather. com/ или https://jsonformatter.org/xml-parser), которые умеют наглядно форматировать XML-код, добавляя к нему отступы и подсвечивая цветом синтаксис. Тогда всё станет существенно понятнее:
Теперь хорошо видно, что значения курса обрамлены у нас тегами <Value>…</Value>, а даты являются атрибутами Date в тегах <Record>.
Чтобы их извлечь курс, выделим на листе столбец из десяти (или более — если делать с запасом) пустых ячеек (т.к. был задан 10-дневный интервал дат) и введём в строку формул функцию ФИЛЬТР.XML (FILTERXML):
Здесь первый аргумент – это ссылка на ячейку с ответом сервера (B8), а второй – строка запроса на XPath – специальном языке, с помощью которого можно обращаться к нужным фрагментам XML-кода и извлекать их. Подробнее о языке XPath можно почитать, например, тут.
Важно после ввода формулы нажать не Enter, а сочетание клавиш Ctrl+Shift+Enter, т. е. ввести её как формулу массива (фигурные скобки вокруг будут добавлены автоматически). Если же у вас последняя версия Office 365 с поддержкой в Excel динамических массивов, то хватит и простого Enter, да и выделять заранее пустые ячейки не требуется — функция сама займет столько ячеек, сколько ей нужно.
Для извлечения дат поступим аналогично – выделим несколько пустых ячеек в соседнем столбце и используем ту же функцию, но с другим запросом XPath, чтобы получить все значения атрибутов Date из тегов Record:
=ФИЛЬТР.XML(B8;»//Record/@Date»)
Теперь в будущем при изменении дат в исходных ячейках В2 и В3 или выборе другой валюты в выпадающем списке ячейки B3, наш запрос будет автоматически обновляться, обращаясь к серверу ЦБ за новыми данными. Чтобы форсировать обновление вручную, можно дополнительно использовать сочетание клавиш Ctrl+Alt+F9.
Ссылки по теме
- Импорт курса биткойна в Excel через Power Query
- Импорт курса валют из интернета в старых версиях Excel
Обновление обменного курса — Dynamics 365 Business Central
Что такое обновление обменного курса в Business Central?
Существует разница между обновлением обменного курса и корректировкой обменного курса. Обновление обменных курсов — это когда вы фактически меняете курсы в системе ERP, которые вы хотите обновить позже с помощью пакетного задания.
Это то, что происходит в видео
Давайте перейдем к валюте и посмотрим, как это работает.
Итак, если я введу здесь свою валюту, я увижу свою валюту, и все они будут относиться к местной валюте, которая настроена в системе, в этом сценарии местной валютой являются датские кроны, и я могу видеть Например, мой евро как связанная валюта, и обменный курс сейчас составляет 7,4648, что определяется как валюта.
Таким образом, обновление обменного курса будет выполняться либо автоматически, либо вручную.
Если я хочу сделать это вручную, я могу перейти от процесса к обменным курсам и увидеть все обменные курсы на разные даты. В последний раз кто-то делал обменный курс, и это вообще первый раз, еще в феврале.
Итак, теперь, если я скажу, например, первое апреля здесь, я мог бы вручную определить обменный курс для евро, сказав, что сумма обменного курса должна быть 750, например, относительная сумма и курс корректировки также должны быть 750 или что-то еще, я мог бы установить его на 752, если бы захотел.
Сумма относительного обменного курса используется во всех проводках в системе ERP. Поэтому, когда я публикую в журнале строки или документы или что-то еще, это сумма, на которую рассчитаны мои суммы для поступления в GL.
Итак, это мой обменный курс, который используется для проводки для конвертации в местную валюту, в которой отражается GL. В то время как сумма обменного курса реляционной корректировки используется только при корректировке обменного курса, то есть при расчете изменений, вызванных ваши обменные курсы.
Таким образом, когда вы запускаете пакетное задание обменного курса, это сумма, соответствующая используемому курсу.
Таким образом, в то время как первый, этот слева, будет отражать все ваши доходы и все ваши отливки, второй будет отражать в плане счетов только ваш счет прибылей и убытков. Таким образом, вы можете установить разницу, но обычно вы этого не делаете.
Это был ручной способ установки обменного курса. Я также мог бы сделать это автоматически, если бы у меня были установлены мои службы обменных курсов, то есть, если бы у меня была настроена моя служба обменных курсов здесь, я мог бы щелкнуть «Обновить обменный курс» и обновить их все автоматически. Итак, прежде всего, если я зайду сюда в свои службы обмена, я увижу, что они включены.
Есть еще одно видео о том, как это включить, и это означает, что я могу войти в свои службы обменных курсов и щелкнуть «Обновить обменные курсы», и с помощью службы в Интернете она теперь будет автоматически обновлять все мои обменные курсы.
Это никак не повлияет на мой GL, пока я не выполнил задание по корректировке обменного курса. Так что это только для того, чтобы делать данные, курсы, обменный курс, подготовленный для этого.
Обновление курсов обмена валют в Dataverse (включая Dynamics 365) — ReadyXRM
Опубликовано в Common Data Service, Dataverse, Dynamics 365, Dynamics 365 Development, PowerApps на основе моделей, Power App, Power Automate, Power Platform, Power Platform Admin Center, PowerApps
Малоизвестная особенность Dataverse это возможность управлять несколькими валютами. Это одна из многих стандартных функций Microsoft Dynamics 365, которая также доступна при создании собственных приложений Power Apps на основе Dataverse.
Некоторое время назад я опубликовал блог под названием «Руководство по валютам в Common Data Service» (обратите внимание, что Common Data Service теперь известен как Dataverse).
При работе с разными валютами в Power Apps или Dynamics 365 нет готового механизма для автоматического обновления обменных курсов в Dataverse. Вам нужно сделать это вручную. В своем исходном посте я обещал написать несколько инструкций с методом автоматического обновления обменных курсов. Вот!
На самом деле это довольно простой процесс благодаря пользовательским соединителям и Power Automate.
В своем исследовании я получил много технических подробностей из этой публикации под названием «Преобразование обменного курса с помощью Power Automate», написанной коллегой MVP Райаном Маклином. Посмотрите этот и другие посты Райана, там много интересного!
Получение текущих обменных курсов через API
Первое, что нам нужно, это источник обменных курсов. Пока появились опубликованные коннекторы, я следил за блогом Райана и решил использовать бесплатный сервис Exchange Rates API, основанный на базе данных Европейского центрального банка.
API очень прост, я могу передать ему курс базовой валюты (в моем случае, CAD), и он вернет список валют вместе с текущими значениями обменного курса.
Простой способ опробовать API — использовать Postman.
- Создайте новый запрос GET, используя URL-адрес, найденный на сайте API курсов валют.
- Добавьте параметр «база» и значение кода валюты
- Нажмите «Отправить»
- Просмотрите результаты, они будут возвращены в виде строки JSON
Для API обменного курса нам не нужна аутентификация или ключ подписки (на данный момент), но хостеры сайта просят, чтобы мы кэшировали результаты, чтобы они оставались бесплатными и открытыми. ТАК ЧТО НЕ ЗЛОУПОТРЕБЛЯЙТЕ ЭТИМ! В моем примере мы будем обновлять обменные курсы один раз в день.
Следующим шагом является создание пользовательского соединителя с помощью этого API. Опять же, я следовал инструкциям в блоге Райана, чтобы создать собственный коннектор для этого API.
На портале производителя Power Apps, в идеале в решении, создайте новый настраиваемый соединитель с нуля. Дайте соединителю имя и введите URL-адрес API обменного курса (api.exchangeratesapi.io) в поле хоста.
Следующий шаг — безопасность, но поскольку API обменного курса открыт, мы можем пропустить этот шаг.
На шаге определения нам нужно добавить новое действие
На этом шаге мы вводим любую сводку или идентификатор операции, которые имеют смысл. Получив эти значения, нажмите «Импорт из образца».
В этом случае мы можем просто вырезать и вставить пример с веб-сайта API обменного курса.
Вот URL-адрес, который я использовал:
https://api.exchangeratesapi.io/latest?base=CAD
У нас будет URL-адрес запроса GET и запрос (базовая валюта), определенные в нашем пользовательском коннекторе.
Теперь мы можем создать соединение и протестировать наш пользовательский коннектор (необязательный шаг).
Валюты в Dataverse
Теперь, когда мы определили наш настраиваемый коннектор и у нас есть способ запросить последние обменные курсы, следующим шагом будет создание потока Power Automate, который будет обновлять все настройки валют в нашей среде Dataverse. Прежде чем мы углубимся, давайте кратко вспомним, как Dataverse хранит валюту.
Если вы помните, когда вы создавали свою среду Dataverse и добавляли базу данных, вам нужно было выбрать базовую валюту.
Чтобы добавить и изменить дополнительные валюты, вы можете получить доступ к валютам из раздела «Бизнес» в центре администрирования Power Platform для конкретной среды.
Здесь вы можете добавлять новые валюты и вручную обновлять обменные курсы. Обратите внимание, что вы не можете изменить базовую валюту по умолчанию.
Чтобы понять, как все эти валюты работают как в стандартных, так и в настраиваемых таблицах, и как они влияют на значения столбцов валюты, обратитесь к моему сообщению в блоге о валютах.
Создание потока Power Automate для обновления обменных курсов
Теперь, когда у нас есть базовая валюта и набор иностранных валют, настроенных в Dataverse, мы можем создать поток Power Automate, который будет запускаться один раз в день для обновления валют.
Вот общий обзор потока, и мы углубимся в каждый шаг.
Для нашего триггера мы хотим запускать этот поток один раз в день. Вы можете выбрать любое расписание, но из уважения к администраторам сайта Exchange Rate API постарайтесь свести запросы к минимуму.
Мы хотим иметь возможность определять нашу базовую валюту для отправки в API. Мы могли бы легко жестко запрограммировать это значение, но, поскольку мне может понадобиться экспортировать этот поток как часть решения и предоставить его другим клиентам, которые могут использовать разные базовые валюты, я бы предпочел запросить Dataverse, чтобы получить это значение.
Базовую валюту можно определить из таблицы «Организации». В этой таблице всегда должна быть только одна строка, и она содержит большую часть бизнес-данных организации по умолчанию. Нам нужно использовать Expand Query, чтобы получить фактический код валюты, который нам нужно будет передать в API. Расширенный запрос — это, по сути, способ извлечения столбцов из связанной таблицы из того, что вы запрашиваете.
Запрос на расширение:
basecurrencyid($select=isocurrencycode)
Несмотря на то, что таблица Organizations имеет только одну строку, и мы указали в нашем количестве строк, что нам нужна только одна строка, поток все равно создаст «Применить к каждому». действие, если мы не укажем единственное значение для нашей базовой валюты. Для этого действия мы создадим переменную и используем выражение для выбора первого значения.
Ниже приведено выражение, получите первое значение «кода валюты» из шага «Получить базовую валюту»
first(body('Get_Base_Currency')?['value'])?['basecurrencyid/isocurrencycode']
Теперь, когда у нас есть наша базовая валюта в переменной, мы можем вызвать наш пользовательский коннектор и запросить у API список обменных курсов. В этом действии мы передаем нашу базовую валюту.
Действие вернет список обменных курсов в формате JSON. В Power Automate доступны различные действия для анализа или преобразования этих значений. Однако мы можем использовать данные в том формате, в котором они нам предоставлены.
Теперь, когда у нас есть список обменных курсов, нам нужно применить их к нашим валютам в Dataverse.
Мы начинаем с получения валют, ОДНАКО, нам нужны только «не» базовые валюты, иначе мы получим ошибку, так как мы не можем обновить обменный курс нашей базовой валюты (1:1). (Я учился на собственном горьком опыте)
Для этого я создал запрос FetchXML (используя FetchXML Builder, конечно!)0069, а не имеют совпадение по значению базовой валюты.
Вот полный запрос FetchXML:
<тип фильтра="и"> <условие entityname="org" attribute="basecurrencyid" operator="null" /> фильтр> сущность>
А вот и шаг по извлечению валют из Dataverse с помощью этого FetchXML.
Наконец, получив запрос о валютах, отличных от базовой валюты, я смог обновить каждую из них (в блоке «Применить к каждому»), извлекая соответствующий обменный курс из данных JSON, которые были возвращены из команды «Получить». Запрос обменного курса.
Вот выражение для сопоставления кода валюты из валюты в Dataverse со значением в строке JSON, которое было возвращено из API обменного курса, и обновления значения обменного курса.
float(body('Get_exchange_rates')?['rates']?[items('For_Each_Requested_Rate')['isocurrencycode']])
Поток будет циклически переключаться между включенными валютами.
Вы можете протестировать поток и убедиться, что он обновляет список обменных курсов в Dataverse, а также просмотреть результаты в таблице валют.
В качестве бонуса вы можете включить аудит в таблице Валюта и увидеть изменения обменных курсов во времени;
В Dataverse есть множество «скрытых» функций, которые взяты из оригинальной Dynamics CRM или являются базовыми функциями Dynamics 365, которые вы можете использовать в своих решениях Power Apps.