Имя: Пароль:
1C
1С v8
Чтение ХML
0 Pasha12312
 
21.02.13
13:15
Здравствуйте!Учусь делать выгрузку-загрузку документа в файл ХML.
Сделал выгрузку.Получилось вот что:
<СчетаНаОплату>
   <Документ>
       <Дата>2011-04-14T12:00:00</Дата>
       <Организация>Пілот ТД</Организация>
       <Контрагент>НДІ Автоматики</Контрагент>
       <Склад>Головний склад</Склад>
       <СуммаВключаетНДС>false</СуммаВключаетНДС>
       <СуммаДОкумента>120000</СуммаДОкумента>
       <УчитыватьНДС>true</УчитыватьНДС>
       <Табличная_Часть_Товары>
               <Номенклатура>Кондиціонер 12М</Номенклатура>
           <Цена>1500</Цена>
           <Сумма>90000</Сумма>
           <СтавкаНДС>НДС20</СтавкаНДС>
           <СуммаНДС>18000</СуммаНДС>
           <Количество>60</Количество>
           <СуммаБезСкидки>90000</СуммаБезСкидки>
           <СуммаСкидки>0</СуммаСкидки>
       </Табличная_Часть_Товары>
Проблема возникла при чтении. Подскажите , пожалуйста , последовательность обхода файла ХML. Начал вот так:

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\Users\user\Desktop\xml\schet.xml");
Пока ЧтениеXML.Прочитать() Цикл    
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
  Если ЧтениеXML.Имя = "СчетаНаОплату" Тогда
  НовыйДокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
       Если ЧтениеXML.Имя = "Документ" Тогда    
       Если ЧтениеXML.Имя="Дата" Тогда
       НовыйДокумент.Дата = ЧтениеXML.Значение;
........ что -то я запутался с этим "Если")) может кто подскажет .
1 Maxus43
 
21.02.13
13:22
ЧтениеXML - построчное считывание, как в файе так и будет последовательность
2 alexei366
 
21.02.13
13:24
Лучше попробуй через ПостроительDOM, ДокументDOM
3 alexei366
 
21.02.13
13:25
Или вообще через ПакетXDTO
4 Trier
 
21.02.13
13:32
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Прочитать() И ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
ИмяПараметра = ЧтениеXML.Имя;
Значениепараметра = ЧтениеXML.Значение;



создаешь такую структуру например и потом из нее пишешь куда тебе надо
5 Pasha12312
 
21.02.13
13:47
(4)я не могу разобраться что к чему..
//тут я начинаю чтение
Пока ЧтениеXML.Прочитать() Цикл  
//определяю началоЕлемента (это <СчетаНаОплату> я так понимаю)
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//теперь мне надо выйти на <Документ>  так?
Если ЧтениеXML.Имя = "Документ" Тогда
//тут создать документ
НовыйДокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
//как дальше писать?
6 alexei366
 
21.02.13
13:56
Не хочешь плодить условия, делай через процедуры. К примеру:

Процедура Основная(ЧтениеXML)

Пока ЧтениеXML.Прочитать() Цикл  
//определяю началоЕлемента (это <СчетаНаОплату> я так понимаю)

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//теперь мне надо выйти на <Документ>  так?

Если ЧтениеXML.Имя = "Документ" Тогда

ОбработатьДокумент(ЧтениеXML)

...

КонецПроцедуры


Процедура ОбработатьДокумент(ЧтениеXML)

НовыйДокумент = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();

Пока ЧтениеXML.Прочитать() Цикл

//Здеся крутишься пока не достигнишь конца элемента Документ



КонецПроцедуры