ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
HTTP = Новый HTTPСоединение("www.cbr.ru",,,,,,ЗащищенноеСоединение);
ХТТПЗапрос = Новый HTTPЗапрос;
ХТТПЗапрос.АдресРесурса = "/s/newbik";
HTTP.Получить(ХТТПЗапрос);
ОтветСервера = HTTP.ВызватьHTTPМетод("GET", ХТТПЗапрос);
Если ОтветСервера.КодСостояния = 301 Тогда
АдресРесурса = ОтветСервера.Заголовки.Получить("Location");
ХТТПЗапрос = Новый HTTPЗапрос;
ХТТПЗапрос.АдресРесурса = АдресРесурса;
HTTP.Получить(ХТТПЗапрос);
ОтветСервера = HTTP.ВызватьHTTPМетод("GET", ХТТПЗапрос);
Если ОтветСервера.КодСостояния = 200 Тогда
Ответ = ОтветСервера.ПолучитьТелоКакДвоичныеДанные();
ФайлДД = ПолучитьИмяВременногоФайла(".zip");
Ответ.Записать(ФайлДД);
Архив = Новый ЧтениеZipФайла(ФайлДД);
Архив.ИзвлечьВсе(КаталогВременныхФайлов(), РежимВосстановленияПутейФайловZIP.Восстанавливать);
Для Каждого Файл ИЗ Архив.Элементы Цикл
ПутьКФайлу = КаталогВременныхФайлов() + Файл.Имя;
Парсер = Новый ЧтениеXML;
Парсер.ОткрытьФайл(ПутьКФайлу);
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Парсер);
Для Каждого Элемент0 Из Документ.ЭлементДокумента.ДочерниеУзлы Цикл
Если Элемент0.ИмяУзла = "BICDirectoryEntry" Тогда
БИК = Элемент0.Атрибуты.ПолучитьИменованныйЭлемент("BIC").Значение;
Для Каждого Элемент1 ИЗ Элемент0.ДочерниеУзлы Цикл
Если Элемент1.ИмяУзла = "ParticipantInfo" Тогда
НазваниеБанка = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("NameP").Значение;
PtType = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("PtType").Значение;
Закрыт = ?(PtType = "90", Истина, Ложь);
ИначеЕсли Элемент1.ИмяУзла = "Accounts" Тогда
КоррСчет = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("Account").Значение;
КонецЕсли;
КонецЦикла;
ДанныеБанка = Новый Структура("БИК, НазваниеБанка, КоррСчет, Закрыт", БИК, НазваниеБанка, КоррСчет, Закрыт);
ОбработатьДанные(ДанныеБанка); //Здесь процедура для обработки полученных данных
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
1. Из-за того, что основная ссылка ведёт на страницу с редиректом - получаем два HTTP запроса.
2. Разархивируем полученный файл.
3. Разбираем XML через ПостроительDOM.
Данных в полученном XML файле гораздо больше, чем я получил, но для просто справочника - достаточно.
Соответственно, вот в этой части кода по образу и подобию:
Если Элемент1.ИмяУзла = "ParticipantInfo" Тогда
НазваниеБанка = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("NameP").Значение;
PtType = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("PtType").Значение;
Закрыт = ?(PtType = "90", Истина, Ложь);
ИначеЕсли Элемент1.ИмяУзла = "Accounts" Тогда
КоррСчет = Элемент1.Атрибуты.ПолучитьИменованныйЭлемент("Account").Значение;
КонецЕсли;
добавляем нужные нам атрибуты.
На уникальность и "супер-крутость" кода не претендую:)
Просто решил поделиться, кому-нибудь будет полезно, уверен.