![]() |
|
1с:предприятие 8.3 - чтение xml | ☑ | ||
---|---|---|---|---|
0
roshyroshy
08.09.17
✎
09:48
|
есть xml примерно след содержания:
<yml_catalog date="2017-09-08 00:00"> <shop> <name>magazin</name> <url>https://magazin.ru/</url> <platform>Shop-Script</platform> <currencies> <currency id="RUB" rate="1"/> <currency id="USD" rate="59.25"/> <currency id="EUR" rate="69.650000000000006"/> </currencies> </shop> </yml_catalog> в 1с создала обработку, в ней табличную часть - валюты с реквизитами id и rate. плюс - сделала форму, куда прописала кнопку на чтение xml: &НаКлиенте Процедура выборфайла(Команда) режим = режимдиалогавыборафайла.Открытие; диалоготкрытияфайла = новый диалогвыборафайла(режим); фильтр = "xml|*.xml"; диалоготкрытияфайла.фильтр = фильтр; если диалоготкрытияфайла.выбрать() тогда файлхмл = диалоготкрытияфайла.выбранныефайлы; для каждого фхмл из файлхмл цикл выборфайлаНаСервере(фхмл); конеццикла; конецесли; обновитьинтерфейс(); КонецПроцедуры далее - нужно значения из currencies перенести в созданную табличку, но там фича с уровнем вложенности, определение куда и что писать вкупе с моим тотальным непониманием как это делать. методом гугления набрала куски кода, что суммарно стало выглядеть так: &НаСервере Процедура выборфайланасервере(файлхмл) Парсер = Новый ЧтениеXML; Парсер.открытьфайл(файлхмл); Построитель = Новый ПостроительDOM; Документ = Построитель.Прочитать(Парсер); Для Каждого Элемент0 Из Документ.ЭлементДокумента.ДочерниеУзлы Цикл Если Элемент0.ИмяУзла = "shop" Тогда shop = Элемент0; Для Каждого Элемент1 Из shop.ДочерниеУзлы Цикл Если Элемент1.ИмяУзла = "currencies" Тогда currencies = Элемент1; Сообщить("currencies:"); Для Каждого Элемент2 Из currencies.ДочерниеУзлы Цикл Если Элемент2.ИмяУзла = "currency" Тогда currency = Элемент2; id = currency.Атрибуты.ПолучитьИменованныйЭлемент("id"); Если id <> Неопределено Тогда Сообщить(" " + id.Значение); rate = currency.Атрибуты.ПолучитьИменованныйЭлемент("rate"); Если rate <> Неопределено Тогда Сообщить(" " + rate.Значение); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Парсер.Закрыть(); КонецПроцедуры крч, нужна помощь (а это и так видно из кода и общей атмосферы отчаяния). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |