Получить курс валют от Банк России. Интеграция с ЦБ РФ API

Получение данных о котировках валют по API с сайта www.cbr.ru (ЦБ РФ).

Как реализовать

Вызов внешнего действия APIRequest при сохрании формы: 

CREATE PROCEDURE [dbo].[fm_watch_valuta_saveItem]
   @username nvarchar(256), 
   @itemID int, 
   @fieldvaluta nvarchar(256) = ''
AS
BEGIN
	-- 1 SELECT (Result, Msg)
	select 1 Result, ' ' Msg
    
    select 'apirequest' type, 'valuta' code, 'valuta' p1_name, @fieldvaluta p1_value
END

API вызов (тип GET, XML): 

CREATE PROCEDURE [dbo].[api_valuta_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
AS
BEGIN	
	declare @maxDate nvarchar(10) = convert(nvarchar(10), getdate(), 103)
    declare @minDate nvarchar(10) = convert(nvarchar(10), dateadd(day, -7, getdate()), 103)
    
	declare @valuta nvarchar(128) = (select top 1 Value2 from @parameters where [Key]='valuta')
	-- SELECT 1  Msg, Result, Url (адрес, куда будет идти запрос)
	select '' Msg, 1 Result, 'http://www.cbr.ru/scripts/XML_dynamic.asp?'+
    	'date_req1='+@minDate+'&date_req2='+@maxDate+'&VAL_NM_RQ=' + @valuta  Url  -- R01235   14/03/2001

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
END

Обработка в JS (обратите внимание, что здесь работаем не с JSON, а с XML через jQuery): 

<script>
  $(function(){
	as.formcallbacks["watch_valuta_saveItem"] = function(data, params){
		var ss = JSON.parse(data.additionalData)[0].items;
   	    var resp = $.grep(ss, function(v) {
    		return v.key == "response" 
		});
      	console.log(resp)
      	if(resp.length>0 && resp[0].value2) {
        	var el = resp[0].value2;          
          	console.log("valuta", el); 
          	var s = "";
          	$("record", el).each(function(){
              /*
              <Record Date="14.03.2001" Id="R01235">
<Nominal>1</Nominal>
<Value>28,6500</Value>
</Record>
*/	
            	s+='<div>' + $(this).attr("Date") + " - <span class='badge badge-light'>" + $("Value", this).html() + "</span></div>";	
            });
          	if(s){
            	as.sys.bootstrapAlert(
                  '<h3>'+$('.as-form-item[data-code=valuta] select option:selected').text() + ' к рублю</h3>' + s, 
                  {type: "info", delay: 1000000, icon: ' '});
              	return;
            }           	
        }  
        as.sys.bootstrapAlert("Что-то пошло не так", {type: "danger"});
	}
  });
</script>
Насколько полезна эта возможность?

Последние обновления

Форма генерации счета

Файлы и документы 10.01.2025

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Сайт использует Cookie. Правила конфиденциальности OK