Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 22:42

Чтение Xml....

Автор Вася Новенький, 16 мар 2012, 10:48

0 Пользователей и 1 гость просматривают эту тему.

Вася Новенький

Добрый день...
вот такой файл xml мне дают...
<?xml version="1.0" encoding="UTF-8" ?>
- <Order>
  <NUM>88</NUM>
  <FIO>Иванов Иван</FIO>
  <Phone>+7 111 222 33-44</Phone>
  <Adress>Ленина 174 12-56</Adress>
  <ID>2e76e0fb-a604-11db-839f-000423be301c</ID>
  <Amount>5</Amount>
  <ID>5b59cd3f-b5d5-11db-839f-000423be301c</ID>
  <Amount>20</Amount>
  <ID>b0a06120-e620-11de-8013-000423be301c</ID>
  <Amount>6</Amount>
  </Order>

делаю:

ЧтениеXML = Новый ЧтениеXML();
             ЧтениеXML.ОткрытьФайл(ФайлЗагрузки);
            Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
               Данные = ПрочитатьДанные(ЧтениеXML);
            КонецЦикла;   

Функция ПрочитатьДанные(ЧтениеXML)

ТипXML = ПолучитьXMLТип(ЧтениеXML);
   
   Если ТипXML.ИмяТипа = "Order"  Тогда
      Возврат СоздатьЗаказы(ЧтениеXML);
   КонецЕсли;
КонецФункции

Функция СоздатьЗаказы(ЧтениеXML)
Документ= Документы.ЗаказыПокупателей.СоздатьДокумент();
Пока ЧтениеXML.Прочитать() Цикл
      Если ЧтениеXML.Имя = "NUM" Тогда
         ЧтениеXML.Прочитать();
         НомерЗаказаИМ = ЧтениеXML.Значение;
Документ.НомерЗаказа = НомерЗаказаИМ;

ИначеЕсли ЧтениеXML.Имя = "FIO" Тогда
         ЧтениеXML.Прочитать();
         Документ.ФИОЗаказчика = ЧтениеXML.Значение;
      ИначеЕсли ЧтениеXML.Имя = "Phone" Тогда
         ЧтениеXML.Прочитать();
         Документ.ТелефонЗаказчика = ЧтениеXML.Значение;
      ИначеЕсли ЧтениеXML.Имя = "Adress" Тогда
         ЧтениеXML.Прочитать();
         Документ.АдресДоставки = ЧтениеXML.Значение;
      ИначеЕсли ЧтениеXML.Имя = "ID" Тогда
         НоваяСтрока = Документ.Товары.Добавить();
         ПолученнаяСсылка = ЧтениеXML.Значение;
         НоваяСтрока.Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ПолученнаяСсылка));
         ЧтениеXML.Прочитать();
         НоваяСтрока.Количество = ЧтениеXML.Значение;
            ЧтениеXML.Прочитать();
      КонецЕсли;
ЧтениеXML.Прочитать();
ЧтениеXML.Прочитать();
ЧтениеXML.Прочитать();    

этот код работает и все подставляет в документ...Если ID только 1...
а если их много, тогда на 2 и последующем последнее ЧтениеXML.Прочитать();    проскакивает...и когда идет проверка
если имя = ID. Дальше прочитать
и в значение попадает уже пусто..так как Имя становится Amount....
подскажите пожалуйста...
обязательно ли тут проходить каждое значение через ЧтениеXML.Прочитать();
или можно как то по другому это сделать...??
в синтаксисе примеров особо не нашел....в инете примеры все с многими атрибутами...а у меня их нет....



Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск