Чтение XML в 1С
☑
0
asisdes
21.09.18
✎
19:44
Друзья можете подсказать, хоче спарить XML в табличную часть,
когда до хочу до поля filds там атрибуты есть, которые показывают на определенные данные. Но никак не мог до них достучатся,
пример XML
<?xml version="1.0" encoding="UTF-8"?>
-<form name="form_300_07">
<field name="form_300_07_n_j_1">9953626</field>
<field name="form_300_07_n_i_1">9953626</field>
<field name="iin">130740020273</field>
<field name="form_300_07_n_h_1">82945402</field>
<field name="page_number">201</field>
<field name="PaperFormsBarcode1"/>
<field name="period_quarter">2</field>
<field name="period_year">2017</field>
-<row>
<field name="form_300_07_n_d">130940020518</field>
<field name="form_300_07_n_j">997</field>
<field name="form_300_07_n_b"/>
<field name="form_300_07_n_c">600800547674</field>
<field name="form_300_07_n_e">00000001886</field>
<field name="form_300_07_n_g"/>
<field name="form_300_07_n_i">997</field>
<field name="form_300_07_n_h">8308</field>
<field name="form_300_07_n_a">00000002</field>
<field name="form_300_07_n_k"/>
<field name="form_300_07_n_m"/>
<field name="form_300_07_n_f">03.04.2017</field>
<field name="form_300_07_n_l"/>
</row>
-<row>
<field name="form_300_07_n_g"/>
<field name="form_300_07_n_k"/>
<field name="form_300_07_n_b"/>
<field name="form_300_07_n_a">00000003</field>
<field name="form_300_07_n_i">793</field>
<field name="form_300_07_n_h">6607</field>
<field name="form_300_07_n_j">793</field>
<field name="form_300_07_n_e">00000001887</field>
<field name="form_300_07_n_d">130940020518</field>
<field name="form_300_07_n_m"/>
<field name="form_300_07_n_l"/>
<field name="form_300_07_n_f">03.04.2017</field>
<field name="form_300_07_n_c">600800547674</field>
</row>
</form>
CODE
ПутьКФайлу = "C:\Users\admin\Desktop\Тест\test2.xml";
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяУзла = Чтение.Имя;
Если СокрЛП(ИмяУзла) = "row" Тогда
Сообщить("Товар Новый");
КонецЕсли;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Если ИмяУзла = "field" Тогда
РНН = Чтение.ЗначениеАтрибута(0);
Если СокрЛП(РНН) = "form_300_07_n_c" Тогда
Сообщить("РНН Есть" + Чтение.Значение)
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
1
asisdes
21.09.18
✎
19:46
РНН = Чтение.ЗначениеАтрибута(0);
Если СокрЛП(РНН) = "form_300_07_n_c" Тогда
Сообщить("РНН Есть" + Чтение.Значение)
КонецЕсли;
Эта часть кода не срабатывает, т.е. в зависимости от названия атрибута, я буду помещать их в определенную колонку таблицы значения
2
Cyberhawk
21.09.18
✎
19:55
Читай в ДОМ и радуйся обходу коллекции
3
Cool_Profi
21.09.18
✎
20:40
А как не срабатывает? Может, там просто такого значения нет?
Отладчиком смотрел?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший