HelpF.pro

Как получить курсы валют с сайта http://finance.ua/ за любую дату ?

Код 1C v 7.x
 

Функция ПолучитьТаблицуКурсов(ДатаКурса)
Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯчейки, Док, ТекстВЯчейке, ТабКурсов;	
	Reader = СоздатьОбъект("MSXML2.XMLHTTP");
	Url = "http://tables.finance.ua/ru/currency/official/-/1/" + ДатаГод(ДатаКурса) + "/" + ДатаМесяц(ДатаКурса) + "/" + ДатаЧисло(ДатаКурса) + "?time=" + _GetPerformanceCounter();
	Сообщить(Url);
	Reader.Open("Get", Url, 0);
	Reader.Send();
	Пока Reader.ReadyState <> 4 Цикл
		Состояние("Чтение данных за <" + ДатаКурса + "> ");
	КонецЦикла;
	Док = СоздатьОбъект("HtmlFile");
	Док.open("text/html");
	Док.write(Reader.ResponseText);
	Док.close();
	HtmlTab	= Док.getElementByID("currency-official-table");
	Строк	= HtmlTab.rows.length;
	ТабКурсов = СоздатьОбъект("ТаблицаЗначений");
	ТабКурсов.НоваяКолонка("ЦифрКод"	, "Строка", 3,  , "Цифр. код");
	ТабКурсов.НоваяКолонка("БуквКод"	, "Строка", 3,  , "Букв. код");
	ТабКурсов.НоваяКолонка("Название"	, "Строка");
	ТабКурсов.НоваяКолонка("Курс"		, "Число" ,14, 4);
	ТабКурсов.НоваяКолонка("Кратность"	, "Число" , 9, 0);
	Для НомСтроки = 1 По Строк Цикл
		Р = HtmlTab.rows(НомСтроки - 1);
		Если (НомСтроки = 1) Или (Р.cells.length <> 7) Тогда // 1 - я заголовок, остальные не с данными
			Продолжить;
		КонецЕсли;
		ТабКурсов.НоваяСтрока();
		ТабКурсов.ЦифрКод	= СокрЛП(Р.cells(0).innerText);
		ТабКурсов.БуквКод	= СокрЛП(Р.cells(1).innerText);
		ТабКурсов.Название	= СокрЛП(Р.cells(3).innerText);
		ТабКурсов.Курс		= 0 + СтрЗаменить(СокрЛП(Р.cells(4).innerText), " ", "");
		ТабКурсов.Кратность	= 0 + СтрЗаменить(СокрЛП(Р.cells(2).innerText), " ", "");
	КонецЦикла;
	Reader = 0;
	ТабКурсов.ВыбратьСтроку(, "Курсы за " + ДатаКурса);
	Возврат ТабКурсов;
КонецФункции



Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1756.html