Имя: Пароль:
1C
 
1С8 XML перебрать внутренный узел
0 Lesha1C
 
12.01.11
12:48
Есть структура XML
<Выгрузка>
- <Приходная Номер="АВ000000001" ">
    <Номенклатура Номер="АВ000000002" Номенклатура="Номенкл2" />
    <Номенклатура Номер="АВ000000001" Номенклатура="Номенкл1" />
 </Приходная>
- <Приходная Номер="АВ000000002">
    <Номенклатура Номер="АВ000000003" Номенклатура="Номенкл3" />
    <Номенклатура Номер="АВ000000001" Номенклатура="Номенкл1" />
 </Приходная>

С помощью DOM+XPath находим перебираем документы приходная

   ХМЛ = Новый ЧтениеXML;
   ХМЛ.ОткрытьФайл(Путь+"vPROJECT-M.xml");
   ПостроительДОМ = Новый ПостроительDOM();
   ДокументDOM = ПостроительДОМ.Прочитать(ХМЛ);              
   ВыражениеXPath = ДокументDOM.СоздатьВыражениеXPath("//Приходная", Новый РазыменовательПространствИменDOM(ДокументDOM));
   РезультатXPath = ВыражениеXPath.Вычислить(ДокументDOM);
   УзелDOM = РезультатXPath.ПолучитьСледующий();
   Пока УзелDOM <> Неопределено Цикл
       кд=УзелDOM.ПолучитьАтрибут("Номер");
           Сообщить(кд);
       УзелDOM = РезультатXPath.ПолучитьСледующий();
    КонецЦикла;
   ХМЛ.Закрыть();

ЗАДАЧА: КАК ПЕРЕБРАТЬ НОМЕНКЛАТУРУ В КАЖДОМ ДОКУМЕНТЕ?
1 BadTouch
 
12.01.11
13:12
А чем тебя обычное чтение XML не устраивает? Обязательно через DOM?
2 BadTouch
 
12.01.11
13:13
Просто по "ЧтениеXML" я могу подсказать,а вот DOM ни разу не было нужно...
3 Lesha1C
 
12.01.11
14:48
ну допустим просто "ЧтениеXML", как перебрать данную структуру?
4 Lesha1C
 
12.01.11
15:01
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(Путь+"test.xml");
Пока Чтение.Прочитать() Цикл
     Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        Если Чтение.Имя="Приходная" Тогда
      КодДокумента =СокрЛП(Чтение.ПолучитьАтрибут("Номер"));
           ДатаДокумента =Чтение.ПолучитьАтрибут("Дата");
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

как вытащить номенклатуру???
5 qeos
 
12.01.11
15:03
смею предположить Чтение.ПолучитьАтрибут("Номенклатура")
6 Lesha1C
 
12.01.11
15:14
дак ты выберешь атрибут номенклатура, а нужно узел номенклатура и к нему обратиться уже и вытащить атрибуты код номенклатуры, наименование, количество и т.д.
7 Lesha1C
 
12.01.11
18:06
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(Путь+"test.xml");
Пока Чтение.Прочитать() Цикл
     Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        Если Чтение.Имя="Приходная" Тогда
      КодДокумента =СокрЛП(Чтение.ПолучитьАтрибут("Номер"));
           ДатаДокумента =Чтение.ПолучитьАтрибут("Дата");
        КонецЕсли;
     Если Чтение.Имя="Номенклатура" Тогда
      номенкл= Чтение.ПолучитьАтрибут("Номенклатура");
     КонецЕсли;
    КонецЕсли;
КонецЦикла;
8 Lesha1C
 
12.01.11
18:07
ВОТ ТАК РАБОТАЕТ!