Код 1C v 7.x
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе
Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯчейки, Док, ТекстВЯчейке, ТабКурсов;
Url = "http://www.bank.gov.ua/control/uk/curmetal/currency/search?formType=searchFormDate&time_step=" + ? ( Ежедневно = 1 , "daily" , "monthly" ) +
"&date=" + Формат( ДатаКурса, "ДДДММГГГГ" ) + "&outer=table&execute=run&time=" + _GetPerformanceCounter( ) ;
Сообщить( Url) ;
Reader = СоздатьОбъект( "MSXML2.XMLHTTP" ) ;
Reader. Open( "Get" , Url, 0 ) ;
Reader. Send( ) ;
Пока Reader. ReadyState < > 4 Цикл
Состояние( "Чтение данных за <" + ДатаКурса + "> " ) ;
КонецЦикла ;
Док = СоздатьОбъект( "HtmlFile" ) ;
Док. open( "text/html" ) ;
Док. write( Reader. ResponseText) ;
Док. close( ) ;
HtmlTab = Док. getElementsByTagName( "table" ) . item( 5 ) ;
ТабКурсов = СоздатьОбъект( "ТаблицаЗначений" ) ;
ТабКурсов. НоваяКолонка( "ЦифрКод" , "Строка" , 3 , , "Цифр. код" ) ;
ТабКурсов. НоваяКолонка( "БуквКод" , "Строка" , 3 , , "Букв. код" ) ;
ТабКурсов. НоваяКолонка( "Название" , "Строка" ) ;
ТабКурсов. НоваяКолонка( "Курс" , "Число" , 14 , 4 ) ;
ТабКурсов. НоваяКолонка( "Кратность" , "Число" , 9 , 0 ) ;
Строк = HtmlTab. rows. length;
Для НомСтроки = 1 По Строк Цикл
Р = HtmlTab. rows( НомСтроки - 1 ) ;
Если ( НомСтроки = 1 ) Или ( Р. cells. length < > 5 ) Тогда
Продолжить;
КонецЕсли ;
ТабКурсов. НоваяСтрока( ) ;
ТабКурсов. ЦифрКод = СокрЛП( Р. cells( 0 ) . innerText) ;
ТабКурсов. БуквКод = СокрЛП( Р. cells( 1 ) . innerText) ;
ТабКурсов. Название = СокрЛП( Р. cells( 3 ) . innerText) ;
ТабКурсов. Курс = 0 + СтрЗаменить( СокрЛП( Р. cells( 4 ) . innerText) , " " , "" ) ;
ТабКурсов. Кратность = 0 + СтрЗаменить( СокрЛП( Р. cells( 2 ) . innerText) , " " , "" ) ;
КонецЦикла ;
Reader = 0 ;
ТабКурсов. ВыбратьСтроку( , "Курсы за " + ДатаКурса) ;
Возврат ТабКурсов;
КонецФункции