Имя: Пароль:
1C
1С v8
Обращение к элементу Xml - файла
,
0 kap-v-kstu
 
12.10.12
23:16
Структура файла

<?xml version="1.0" encoding="UTF-8"?>
<Корневой Документ="РеализацияТоваровиУслуг">
   <!--Краткая информация о РеализацияТоваровиУслуг-->
   <Элемент Номер="00000000024" Дата="16.09.2012 14:00:24" Контрагент1 = "Колобок">
       <Табличнаячасть Цена="60" Сумма="60" СтавкаНДС="18%" СуммаНДС="9,15" Контрагент="Архитектор бизнеса1"/>
       <Табличнаячасть Цена="78" Сумма="78" СтавкаНДС="18%" СуммаНДС="11,9" Контрагент="Архитектор бизнеса1"/>
   </Элемент>
       <Элемент Номер="00000000024" Дата="16.09.2012 14:00:24" Контрагент1 = "Колобок">
       <Табличнаячасть Цена="60" Сумма="60" СтавкаНДС="18%" СуммаНДС="9,15" Контрагент="Архитектор бизнеса1"/>
       <Табличнаячасть Цена="78" Сумма="78" СтавкаНДС="18%" СуммаНДС="11,9" Контрагент="Архитектор бизнеса1"/>
   </Элемент>
</Корневой>
1 kap-v-kstu
 
12.10.12
23:18
Могу обратиться к
<Элемент Номер="00000000024" Дата="16.09.2012 14:00:24" Контрагент1 = "Колобок"


как обратиться к элементам табл части ??
2 kap-v-kstu
 
12.10.12
23:18
ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл("C:\RealizaciyaTovaroviUslug.xml");
   Док = "";
   Пока ЧтениеXML.Прочитать() Цикл                  
       
       //ПолучитьXMLТип(ЧтениеXML);
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                                         
        Если ЧтениеXML.Имя = "Элемент" Тогда
               Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
           
                                 
           
           Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                               
                 Если ЧтениеXML.Имя = "Контрагент" Тогда
                 Сообщить(ЧтениеXML.Значение);
                 КонецЕсли;                                        
                                       Док.Дата = ТекущаяДата();
                                       Док.Организация = Справочники.Организации.НайтиПоКоду("000000001");
                                       Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ЧтениеXML.Значение);                                                                
                                       Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной");
                                       Док.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;                                        
                               //ab tablich chast'      
                                       Док.АгентскиеУслуги.Добавить().Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента");
                           Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
           
                             
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента and    ЧтениеXML.Имя = "Табличнаячасть" Тогда          
                               ТекСтрока = Док.АгентскиеУслуги.Добавить();    
                               Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                               
                               Док.АгентскиеУслуги.Добавить().Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента");
                               
                               
                               Если ЧтениеXML.Имя = "Цена" Тогда
                               Сообщить(ЧтениеXML.Значение);
                               КонецЕсли;
                               КонецЦикла;        
                               КонецЕсли;
                               //ab tablich chast'
                               
   
                           КонецЕсли;
                               
                   
                                   

           КонецЦикла;
         КонецЕсли;
               
                                     
       ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
       Док.Дата = ТекущаяДата();    
       Док.Записать();                                                                                                                                          
       КонецЕсли;        
   КонецЦикла;
3 kap-v-kstu
 
12.10.12
23:20
Если ЧтениеXML.Имя = "Цена" Тогда
                               Сообщить(ЧтениеXML.Значение);
КонецЕсли;


Не сообщается цена...
4 AlexNew
 
12.10.12
23:26
Во, я о том же спросить хотел - цега вопроса?
5 kap-v-kstu
 
12.10.12
23:27
1500 р
6 AlexNew
 
12.10.12
23:28
(5) Где?
7 kap-v-kstu
 
12.10.12
23:30
Деньги?)
8 Рэйв
 
12.10.12
23:40
(0)xml - это не объект с полями и через точку напрямую не прочитаешь.

Так что только последовательно по веткам.
9 AlexNew
 
12.10.12
23:56
(8) xml они разные...
10 zladenuw
 
13.10.12
00:39
ну так у тебя коллекция не в Элемент. а отельное имя
           Если ЧтениеXML.Имя = "Элемент" Тогда
           иначеЕсли         ЧтениеXML.Имя = "Табличнаячасть" Тогда
11 zladenuw
 
13.10.12
00:41
если хочешь свой универсальный создай ХДТО схему. и читай ее заполняй по ней. будет тебе универсальная
12 kap-v-kstu
 
15.10.12
23:51
zladenuw, спасибо большое, получилось))))))
13 alexei366
 
16.10.12
00:33
ЧтениеXML.ИмяЭлемента = ??? И ЧтениеXML.Тип = НачалоЭлемента

то фигач цикл пока не ЧтениеXML.Тип = КонецЭлемента


И так далее

в синтаксе могу ошибаться.
А лучше наверно ДокументDOM
AdBlock убивает бесплатный контент. 1Сергей