новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

БСП – «Валюты»

  • Добавить свою публикацию
  • для этого требуется регистрация

 

Подсистема «Валюты» также как и подсистема «Банки» (смотри мою статью http://1clancer.ru/article/bsp_banki_1147) без доработок может использоваться только при разработке для российских заказчиков, поскольку ориентирована на российские реалии. Состоит система из нескольких общих модулей, справочника «Валюты», регистра «КурсыВалют» и обработки «ЗагрузкаКурсовВалют». Если не вдаваться в детали, то очень похоже на подсистему «Банки»  которую я выше вспоминал. Работа с данной подсистемой сводиться к тому, что в справочник  валют добавляются те валюты, с которыми мы работаем, здесь реализован подход, про который я уже писал,  в справочнике находятся не все валюты, а только те с которыми мы работаем, но в случае необходимости мы можем подобрать нужную нам валюту из классификатора валют. После этого можно загрузить курсы валют в соответствующий реквизит с сайта cbrates.rbc.ru.

 Изображение

Классификаторы России и Украины совпадают, по крайней мере, в нескольких позициях, поэтому, наверное, можно  данную подсистему использовать и в  конфигурациях для Украины. А вот загрузку курсов валют использовать, к сожалению  не удастся.  Можно конечно использовать  загрузку курсов валют из  «Бухгалтерии для Украины» но  там пройдется переписывать всю обработку практически с нуля, да и загружать данные  вы сможете только за текущий день  все остальные данные платные  практически 25 долларов в месяц.

Ну что попробуем написать свое решение, поскольку  не у всех есть лишних 25 долларов. Брать валюту мы будем с сайта НБУ (Национального Банка Украины)  апи не предусмотрено, поэтому будем парсить хтмл документ,  обратившись по адресу

http://www.bank.gov.ua/control/ru/curmetal/currency/search?formType=searchFormDate&time_step=daily&date=21.08.2013&execute=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C и вместо 21.08.2013 подставив нужную мне дату мы получим  приблизительно такую страницу :

 Изображение

Создадим внешнюю обработку для загрузки курсов. Внешний вид скопируем со стандартной обработки.

 Изображение

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

 

&НаСервере
Процедура ЗагрузитиНаСервере()
// Вставити вміст обробника.
КопироватьФайл("http://www.bank.gov.ua/control/ru/curmetal/currency/search?formType=searchFormDate&time_step=daily&date="+Формат(объект.НачалоПериодаЗагрузки, "ДФ=""дд.ММ.гггг""")+"&execute=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C", "C:\0001.htm");
ТекстДок=новый ТекстовыйДокумент ;
ТекстДок.Прочитать("C:\0001.htm");
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.ОткрытьФайл("C:\0001.htm","UTF-8");	
ПостроительDOM = новый ПостроительDOM ;
дом =ПостроительDOM.Прочитать(ЧтениеHTML);
х=0;
для каждого елемент из дом.ПолучитьЭлементыПоИмени("table").Элемент(5).ДочерниеУзлы цикл
	 если х=0 тогда
	 иначе
	
			 для каждого валюта из объект.СписокВалют цикл
				 если валюта.КодВалюты= елемент.ПолучитьЭлементыПоИмени("td").Элемент(0).ТекстовоеСодержимое тогда
			
			 РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
	 РегистрКурсыВалют.Период = объект.НачалоПериодаЗагрузки;
			 РегистрКурсыВалют.Валюта = валюта.Валюта;
			 РегистрКурсыВалют.Курс	 = елемент.ПолучитьЭлементыПоИмени("td").Элемент(4).ТекстовоеСодержимое;
			 РегистрКурсыВалют.Кратность = елемент.ПолучитьЭлементыПоИмени("td").Элемент(2).ТекстовоеСодержимое;
			    РегистрКурсыВалют.Записать();
 
	   
				   конецесли;
			    конеццикла;
конецесли;
	    х=1;
конеццикла;
 
 
КонецПроцедуры

 

 

Ознакомившись с кодом страницы валют НБУ я увидел, что в 6 table находится нужная мне информация. Проведя сравнение с кодом валюты вытаскиваю кратность, и курс, после чего записываю в  регистр. Обратите внимание, что для получения файла с интернета не использую никаких подсистем БСП, а просто процедуру КопироватьФайл, в большинстве случаев этого должно хватить. Это конечно не универсальная обработка, но я за нее и денег не требую (хотя мысль написать платную обработку с  поэтессами и преферансом появилась). 

 
0
Еще от автора
≡ к списку статей