Загрузка из XML

1. Vhett 12.03.18 13:44 Сейчас в теме
Товарищи, может подскажете как оптимальнее сделать загрузку из файла. Структура большая, реквизиты накладной + список товара по накладной и нужно его загрузить в новосозданный документ.
Вдохновлялся примером отсюда: https://forum.infostart.ru/forum9/topic9000/
 ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл("C:\test\test.xml");
    Имя = ЧтениеXML.Имя;
    Массив = Новый Структура(Имя);
    Пока ЧтениеXML.Прочитать() Цикл                  
        ПолучитьXMLТип(ЧтениеXML);
		Если  ЧтениеXML.Имя = "Date" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
				Имя = ЧтениеXML.Имя;
		ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
       		Массив.Вставить(Имя,ЧтениеXML.Значение);   
		КонецЕсли;
		
		Если  ЧтениеXML.Имя = "AwbNum" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
				Имя = ЧтениеXML.Имя;
		ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
       		Массив.Вставить(Имя,ЧтениеXML.Значение); 
		КонецЕсли;

    КонецЦикла;
Показать

При записи параметра Date, всё путём.
Однако при записи значения AwbNum у меня параметр Date перезаписывается совершенно на другой параметр, который мне и не нужен. Грубо говоря, параметр 1 у меня Date, параметр 2 - City, параметр 3 - AwbNum, и вот Date принимает значение City у меня.
Не пойму почему предыдущее значение приписывает.
+
По теме из базы знаний
Найденные решения
8. FesenkoA 57 12.03.18 16:01 Сейчас в теме
(6) тогда может тут вам будет помощь :) https://infostart.ru/public/311011/
Vhett; necropunk; +2
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user633364_seleznev.ua 12.03.18 13:47 Сейчас в теме
Если ЧтениеXML.Имя = "Date" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Имя = ЧтениеXML.Имя;
ИначеЕсли ЧтениеXML.Имя = "AwbNum" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

и т.д.

не?
+
3. Vhett 12.03.18 13:55 Сейчас в теме
(2) А не получится так, что он найдёт первое значение в списке этих "ИначеЕсли" и закончит читать файл?
Или он каждую строку в файле будет проходить по всем этим "ИначеЕсли"?
+
4. user633364_seleznev.ua 12.03.18 14:16 Сейчас в теме
(3) каждую строку будет проходить по всем иначеесли

лучше отладчиком пройдитесь по циклу, будет видно
+
5. FesenkoA 57 12.03.18 14:24 Сейчас в теме
ЧтениеХМЛ=Новый ЧтениеXML;
ЧтениеХМЛ.УстановитьСтроку(ТвойФайл);
хдто = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);

так не проще?
+
6. necropunk 9 12.03.18 15:50 Сейчас в теме
(5) Вот кстати, да, через фабрику полгиговый файл стал читаться 8 минут вместо 39.
+
7. Поручик 4674 12.03.18 15:52 Сейчас в теме
(6) В этом случае XML в источнике должен формироваться по определённым правилам, имена и типы полей совпадать с приёмником.
necropunk; +1
8. FesenkoA 57 12.03.18 16:01 Сейчас в теме
(6) тогда может тут вам будет помощь :) https://infostart.ru/public/311011/
Vhett; necropunk; +2
9. necropunk 9 13.03.18 11:09 Сейчас в теме
(8) Именно по этой статье и переделывал обмен :)
Vhett; +1
10. Vhett 15.03.18 12:55 Сейчас в теме
(9) Такая загвоздка возникла. Подключил XDTO, всё читается хорошо кроме параметров CurrencyRate и Line. Они зацикливаются, и данные не читают. Я так предполагаю, схема сделана с ошибкой?

ЧтениеТекста = Новый ЧтениеТекста ("C:\test\test.xml") ; 
СтрокаXML = ЧтениеТекста.Прочитать();
СтрокаXML = СтрЗаменить (СтрокаXML, "<DATAPACKET", "<DATAPACKET xmlns=""http://www.sample-package.org"" ") ;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку (СтрокаXML) ;
РезультатРазборки = Новый Массив;
ТипXDTO = ФабрикаXDTO.Тип("http://www.sample-package.org","БП");      
ПриходыXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипXDTO) ;    
Прикрепленные файлы:
+
11. necropunk 9 15.03.18 13:04 Сейчас в теме
(10) Тут я, пожалуй, не подскажу - у меня задача была проще - все данные примитивного типа. Посмотрите тип значения параметра.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот