Требуется получение учетных цен драгоценных металлов с сайта Центрального банка РФ через web-сервис, для этого пишем свой пример
Задача
Получать учетные цены драгоценных металлов с сайта Центрального банка РФ.
Решение
Читаем хорошо составленную документацию о web-сервисе, по которой пишем код. При разработке позаботимся о типовом решении и будем создавать WSОпределение программно. без включения в конфигурацию.
&НаСервере Процедура ЗагрузитьЦенуДрагоценныхМеталловССайтаЦБРФ(НачалоПериодаЗагрузки, ОкончаниеПериодаЗагрузки) Экспорт // Создадим WSОпределение прямо с сайта, дольше чем из // конфигурации, но оставим последнюю без изменений Определения = Новый WSОпределения("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); // Создадим WSПрокси на основании WSОпределения Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); // Установим параметры ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("DragMetDynamic"); WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); WSПараметр.FromDate = НачалоПериодаЗагрузки; WSПараметр.ToDate = ОкончаниеПериодаЗагрузки; // Получим цены драг. металлов ЦеныДрагоценныхМеталов = Прокси.DragMetDynamic(WSПараметр); Попытка ХДТОДрагМет = ЦеныДрагоценныхМеталов.DragMetDynamicResult.diffgram.Получить("DragMetall") Исключение // Опытным путем выяснилось, что если курса // на дату(НачалоПериодаЗагрузки = ОкончаниеПериодаЗагрузки) // нет, то получим исключение Возврат; КонецПопытки; Для Каждого ЗаписьЦеныДрагоценногоМетала Из ХДТОДрагМет.DrgMet Цикл // Из документации: таблица DrgMet содержит поля // - DateMet - Дата котирования // - CodMet - Тип металла (1-Золото, 2-Серебро, 3-Платина, 4-Палладий) // - price - Учетная цена // Для примера будем получать курс и дату для золота Если ЗаписьЦеныДрагоценногоМетала.CodMet = "1" Тогда ДатаКурсаСтр = ЗаписьЦеныДрагоценногоМетала.DateMet; ДатаКурса = Дата(Лев(ДатаКурсаСтр,4), Сред(ДатаКурсаСтр,6,2), Сред(ДатаКурсаСтр,9,2)); Курс = ЗаписьЦеныДрагоценногоМетала.price; // Здесь необходимо описать код по работе с полученным курсом и датой КонецЕсли; КонецЦикла; КонецПроцедуры
Для уменьшения времени создания WSОпределения в современных конфигурациях на БСП есть регистр для хранения программно созданных. Можно адаптировать представленный код для этого механизма, но в рамках данной статьи разбора не будет)
Литература: Сайт Центрального банка РФ