Имя: Пароль:
1C
1С v8
Как прочесть дочерние элементы XML
0 antihacker
 
19.10.15
11:30
Всем привет !  Вот ХМЛ

<?xml version="1.0" encoding="UTF-8"?>
-<Orders>-<REQUISITES CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220" WareHouseGuid="1712181c-90cb-11e0-9cb8-f6f50ef82aee" OrderGuid="9659bcc2-71a0-11e5-a25b-8056f29d9214" MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b"><Food FoodCount="45.00" FoodGUID="Печенье Алматинское "CACAO cookies" 0,400 гр."/><Food FoodCount="25.00" FoodGUID="Салфетка Карина 50 шт 1112222222222222222222"/></REQUISITES>-<REQUISITES CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" OrderGuid="05bcd74c-7321-11e5-a25b-8056f29d9214" MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b"><Food FoodCount="1*225.00" FoodGUID="Печенье Алматинское "CACAO cookies" 0,400 гр."/><Food FoodCount="7*825.00" FoodGUID="Салфетка Карина 50 шт 1112222222222222222222"/></REQUISITES><REQUISITES CustomerGuid="4e8273f9-e877-11e1-a6eb-f6f50ef82aee" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" OrderGuid="49258284-7322-11e5-a25b-8056f29d9214" MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b"/></Orders>

А так читаю Элементы

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(InputOrderData.Получить());

        
//создаем колонки
Пока ЧтениеXMl.Прочитать() Цикл
    
    //***********Общие реквизиты***************************    
    Если ЧтениеXMl.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXMl.Имя = "REQUISITES" Тогда
        
            Пока ЧтениеXMl.ПрочитатьАтрибут() Цикл                                                    

                //GUID заказа
                Если ЧтениеXMl.Имя="MPGuid" Тогда
                MPGUID=СокрЛП(ЧтениеXMl.Значение);
                КонецЕсли;

                //GUID заказа
                Если ЧтениеXMl.Имя="OrderGuid" Тогда
                OrderGUID=СокрЛП(ЧтениеXMl.Значение);
                КонецЕсли;
            
                //GUID склада
                Если ЧтениеXMl.Имя="WareHouseGuid" Тогда
                WareHouseGUID=СокрЛП(ЧтениеXMl.Значение);
                КонецЕсли;
        
                //GUID Контрагента
                Если ЧтениеXMl.Имя="CustomerGuid" Тогда
                CustomerGUID=СокрЛП(ЧтениеXMl.Значение);
                КонецЕсли;
        
            КонецЦикла;

А как прочитать дочерние элементы значения атрибут досерных элементв Food &
1 antihacker
 
19.10.15
11:42
<?xml version="1.0" encoding="UTF-8"?>
<Orders>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="9659bcc2-71a0-11e5-a25b-8056f29d9214" WareHouseGuid="1712181c-90cb-11e0-9cb8-f6f50ef82aee" CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220">
        <Food FoodGUID="Печенье  Алматинское &quot;CACAO cookies&quot; 0,400 гр." FoodCount="45.00"/>
        <Food FoodGUID="Салфетка Карина 50 шт 1112222222222222222222" FoodCount="25.00"/>
    </REQUISITES>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="05bcd74c-7321-11e5-a25b-8056f29d9214" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220">
        <Food FoodGUID="Печенье  Алматинское &quot;CACAO cookies&quot; 0,400 гр." FoodCount="1*225.00"/>
        <Food FoodGUID="Салфетка Карина 50 шт 1112222222222222222222" FoodCount="7*825.00"/>
    </REQUISITES>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="49258284-7322-11e5-a25b-8056f29d9214" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" CustomerGuid="4e8273f9-e877-11e1-a6eb-f6f50ef82aee"/>
</Orders>
2 Fragster
 
гуру
19.10.15
11:44
добавь в исходный XML пространство имен, сделай по получившемуся XML схему, поправь её до правильного состояние указанием примитивных типов и минимального и максимального количества повторений элементов. Для загрузки используй фабрику XDTO. Ну, и для выгрузки тоже
3 Fragster
 
гуру
19.10.15
11:45
>сделай по получившемуся XML схему
например с помощью XMLpad
4 antihacker
 
19.10.15
11:47
Я отправляю из мобильного приложения. Там нет XDTO. Да и зачем так усложнять ? Рродительский я же ведь читаю. Нельзя далее как то дочерние прочесть ?
5 antihacker
 
19.10.15
11:55
А если вот так, то есть возможность прочесть ?

<?xml version="1.0" encoding="UTF-8"?>
<Orders>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="9659bcc2-71a0-11e5-a25b-8056f29d9214" WareHouseGuid="1712181c-90cb-11e0-9cb8-f6f50ef82aee" CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220">
        <Food>
            <FoodGUID>Печенье  Алматинское "CACAO cookies" 0,400 гр.</FoodGUID>
            <FoodCount>45.00</FoodCount>
        </Food>
        <Food>
            <FoodGUID>Салфетка Карина 50 шт 1112222222222222222222</FoodGUID>
            <FoodCount>25.00</FoodCount>
        </Food>
    </REQUISITES>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="05bcd74c-7321-11e5-a25b-8056f29d9214" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" CustomerGuid="29ea747e-1096-11e4-828a-c04a00025220">
        <Food>
            <FoodGUID>Печенье  Алматинское "CACAO cookies" 0,400 гр.</FoodGUID>
            <FoodCount>1*225.00</FoodCount>
        </Food>
        <Food>
            <FoodGUID>Салфетка Карина 50 шт 1112222222222222222222</FoodGUID>
            <FoodCount>7*825.00</FoodCount>
        </Food>
    </REQUISITES>
    <REQUISITES MPGuid="7e4d78c3-8274-4776-9996-ec4088853f8b" OrderGuid="49258284-7322-11e5-a25b-8056f29d9214" WareHouseGuid="e6aa71aa-7442-11e3-b74d-d43d7e9bfcb0" CustomerGuid="4e8273f9-e877-11e1-a6eb-f6f50ef82aee"/>
</Orders>
6 Fedor-1971
 
19.10.15
12:30
(0) поищи про запросы в XML:
мЗапрос="/DailyExRates/Currency";
мКурсы=мДокументДОМ.СоздатьВыражениеXPath(мЗапрос,мРазыменовательПИ);
там есть возможность перебирать атрибуты ветки через Для каждого ...
7 antihacker
 
19.10.15
12:48
Спращиваю зачем усложнять ?  Можно же по проще

Вот так работает.

    //***********Общие реквизиты***************************    
    Если ЧтениеXMl.ТипУзла = ТипУзлаXML.НачалоЭлемента  Тогда         
         Если ЧтениеXMl.Имя="REQUISITES" Тогда

             OrderGuid =ЧтениеXMl.ПолучитьАтрибут("OrderGuid");
            
            //------------Добавляем запись в регистр----------
            НовыйЗаказ=РегистрыСведений.ЗаказыОтМП.СоздатьМенеджерЗаписи();
            
            //Дата поступление заказа
            НовыйЗаказ.OrderDate=ТекущаяДата();
            //GUID МП
            НовыйЗаказ.MPGUID=СокрЛП(ЧтениеXMl.ПолучитьАтрибут("MPGuid"));
            //GUID заказа
            НовыйЗаказ.OrderGUID=OrderGUID;
            //GUID склада
            НовыйЗаказ.WareHouseGUID=ЧтениеXMl.ПолучитьАтрибут("WareHouseGuid");
            //GUID Контрагента
            НовыйЗаказ.CustomerGUID=ЧтениеXMl.ПолучитьАтрибут("CustomerGuid");
    
            НовыйЗаказ.Записать();

         КонецЕсли;
        
         Если ЧтениеXMl.Имя="Food" Тогда
                 //------------Добавляем запись в регистр----------
                 НоваяНоменклатура=РегистрыСведений.НоменклатурыЗаказовОтМП.СоздатьМенеджерЗаписи();
            
                 //Дата поступление заказа
                 НоваяНоменклатура.OrderDate=ТекущаяДата();
                 //GUID заказа
                 НоваяНоменклатура.OrderGUID=OrderGUID;
                 //GUID склада
                 НоваяНоменклатура.FoodGUID=ЧтениеXMl.ПолучитьАтрибут("FoodGUID");
                 НоваяНоменклатура.FoodGUID=ЧтениеXMl.ПолучитьАтрибут("FoodCount");
    
                 НоваяНоменклатура.Записать();
            
         КонецЕсли;