1CLenta.ru  

Загрузка курсов валют из ЦБ РФ в 1С

Программирование системы     25.08.2016 12:20     21732

Одним из источников курсов валют, является сайт ЦБРФ (Центральный Банк Российской Федерации). Запросить данные с сайта можно с помощью объекта HTTPСоединение. В Интернете можно найти множество источников для загрузки курсоров валют. Широко применяется загрузка курсов валют с сайта РБК.

Строка запроса данных с сайта ЦБРФ


Коды валют ЦБРФ
Евро - R01239
Доллар США - R01235
Японская иена - R01820
Весь список валют

Запрос для получения курсов всех валют на последнюю дату
Запрос: www.cbr.ru/scripts/XML_daily.asp

Запрос для получения курсов всех валют на 24.08.2016
Шаблон: www.cbr.ru/scripts/XML_daily.asp?date_req=День/Месяц/Год
Запрос: www.cbr.ru/scripts/XML_daily.asp?date_req=24/08/2016

Запрос для получения курсов Евро за период с 20/08/2016 по 24/08/2016
Шаблон: www.cbr.ru/scripts/XML_dynamic.asp?date_req1=День/Месяц/Год&date_req2=День/Месяц/Год&VAL_NM_RQ=КодВалюты
Запрос: www.cbr.ru/scripts/XML_dynamic.asp?date_req1=20/08/2016&date_req2=24/08/2016&VAL_NM_RQ=R01239

Загрузить курсы валют


При запросе с сайта ЦБРФ возвращается xml-файл. При запросе курсов на определенную дату или за период структура xml-файла отличается.

Функция ПолучитьКурсыВалют()

//Сервер
Сервер = "www.cbr.ru";

//Курс всех валют на последнюю дату
Адрес = "scripts/XML_daily.asp";

//Курс всех валют определенную дату
Адрес = "scripts/XML_daily.asp?date_req=24/08/2016";

//Курс Евро за период
Адрес = "scripts/XML_dynamic.asp?date_req1=20/08/2016&date_req2=24/08/2016&VAL_NM_RQ=R01239";

Попытка
HTTP = Новый HTTPСоединение(Сервер);
Исключение
Сообщить("Не удалось подключиться");
Возврат Ложь;
КонецПопытки;

HTTPЗапрос = Новый HTTPЗапрос(Адрес);
HTTPОтвет = HTTP.Получить(HTTPЗапрос);
Текст = HTTPОтвет.ПолучитьТелоКакСтроку("windows-1251");

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Текст);

//В переменной Текст содержится текс в XML-формате
//Перебор узлов формируется в зависимости от структуры XML

Пока ЧтениеXML.Прочитать() Цикл

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.ЛокальноеИмя = "ИмяТэга" Тогда
Читаем = Истина;
КонецЕсли;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если Читаем Тогда
Значение = XMLЗначение(Тип("Строка"), ЧтениеXML.Значение);
Читаем = Ложь;
КонецЕсли;
КонецЕсли;

КонецЦикла;

КонецФункции

Комментарии (0)