При помощи данной обработки мы будем решать такую задачу - необходимо получить курсы валют из списка выбранных валют, отобразить полученный результат в табличной части обработки и результат выгрузить в регистр сведений "Курсы валют".
1. Получаем массив значений выбранных курсов валют
//добавляем валюты из списка значений в массив
МассивВалют = Новый Массив;
МассивВалют = Валюта.ВыгрузитьЗначения();
2. Указываем сервер получения данных и адрес
// Сервер
Сервер = "www.cbr.ru";
// Курсы всех валют на дату
Адрес = "/scripts/XML_daily.asp?date_req=" + Формат(Дата, "ДФ=dd/MM/yyyy");
3. Создаем ПостроительDom
// Построение объектной модели XML-документа
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
4. При помощи построителя читаем данные из XML (перебираем узлы). Полученные данные записываем в регистр сведений "Курсы валют".
Для Каждого УказаннаяВалюта из МассивВалют Цикл
Если УказаннаяВалюта.Наименование = Наименование Тогда
ТЗСтрока = Таблица.Добавить();
ТЗСтрока.Наименование = Наименование;
ТЗСтрока.НаименованиеВалюты = НаименованиеВалюты;
ТЗСтрока.Курс = Курс;
ТЗСтрока.Код = Код;
ТЗСтрока.Кратность = Кратность;
//Запись полученных данных в справочник "Валюты" (если нет такой валюты)
НоваяВалюта = Справочники.Валюты.НайтиПоНаименованию(Наименование);
Если НоваяВалюта.Пустая() Тогда
НоваяВалюта = Справочники.Валюты.СоздатьЭлемент();
НоваяВалюта.Наименование = Наименование;
НоваяВалюта.Код = Код;
НоваяВалюта.НаименованиеПолное = НаименованиеВалюты;
НоваяВалюта.Записать();
Сообщения.ДобавитьСтроку("В справочник ""Валюты"" добавлен новый элемент - " + НаименованиеВалюты);
КонецЕсли;
//Запись полученных данных в регистр Сведений "КурсыВалют"
НоваяЗаписьРегистра = НаборЗаписей.Добавить();
НоваяЗаписьРегистра.Период = НужнаяДата;
НоваяЗаписьРегистра.Валюта = УказаннаяВалюта.Ссылка;
НоваяЗаписьРегистра.Курс = Курс;
НоваяЗаписьРегистра.Кратность = Кратность;
КонецЕсли;
КонецЦикла;
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.18.37