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

разбор XML файла, ошибка "Попытка смены источника в процессе разбора документа"

Автор Target25, 18 янв 2016, 10:25

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

Target25

Пытаясь загрузить xml-файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой. Копая, выяснил, что "сыпется" в момент разбора узлов типа "параметр". В двух словах: при выполнении метода "Следующий()" AddIn.XMLParser всегда возвращает тип тега "1" (начало нового элемента), и не возвращает в нужном месте тип тега "3" (конец уровня).

Я вырезал все лишнее из файла правил и написал небольшую программу, которая моделирует ситуацию и падает с ошибкой. Текст программы:
Процедура ОбработатьПараметры(мЧтениеXML)     ТипТега = мЧтениеXML.Спуститься();     Пока ТипТега = 1 Цикл                                          имяУзла = мЧтениеXML.СвойстваТекущегоУзла.Имя;         Сообщить("Параметры:ТипТега " + ТипТега + "; имя узла " + имяУзла);         ТипТега = мЧтениеXML.Следующий();// как только кончаются параметры, он должен дать тип тега =3     КонецЦикла;     мЧтениеXML.Подняться(); КонецПроцедуры          //---- Процедура ОбработатьПравилаОбмена(мЧтениеXML)     ТипТега = мЧтениеXML.Спуститься();     Пока ТипТега = 1 Цикл                                          имяУзла = мЧтениеXML.СвойстваТекущегоУзла.Имя;         Сообщить("Правила обмена:ТипТега " + ТипТега + "; имя узла " + имяУзла);         Если имяУзла = "Параметры" тогда             ОбработатьПараметры(мЧтениеXML);         КонецЕсли;            ТипТега = мЧтениеXML.Следующий();     КонецЦикла;        мЧтениеXML.Подняться(); КонецПроцедуры //---- Процедура Сформировать()        ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll");     мXMLАнализатор = СоздатьОбъект("AddIn.XMLParser");         мЧтениеXML = мXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент();     мЧтениеXML.СвязатьСФайлом("C:\ЗИК_ЗУП30.xml");     типТега = мЧтениеXML.Спуститься();     Если мЧтениеXML.СвойстваТекущегоУзла.Имя =  "ПравилаОбмена" тогда         ОбработатьПравилаОбмена(мЧтениеXML);     КонецЕсли;    КонецПроцедуры

Файл правил обмена ЗиК_ЗУП80.xml:
<ПравилаОбмена>     <ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП21">2.01</ВерсияФормата>     <Ид>1c87001b-6b3a-4277-a36d-1e6d1a6c9793    </Ид>     <Наименование>ЗиК --&gt; ЗУП 3.0</Наименование>     <ДатаВремяСоздания>2015-12-23T17:51:28</ДатаВремяСоздания>     <Источник></Источник>     <Приемник>БЗКР</Приемник>     <ПередВыгрузкойДанных></ПередВыгрузкойДанных>     <ПередЗагрузкойДанных></ПередЗагрузкойДанных>     <ПослеЗагрузкиДанных></ПослеЗагрузкиДанных>     <Параметры>         <Параметр/>         <Параметр/>         <Параметр/>         <Параметр/>         <Параметр/>         <Параметр/>     </Параметры>     <Обработки/>     <ПравилаКонвертацииОбъектов/>     <Запросы/> </ПравилаОбмена>
Скриншот ошибки:


Буду рад, если проверите этот пример у себя, и, если все будет нормально работать, м.б. найдем как заставить работать у меня.

Теги:

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

Рейтинг@Mail.ru

Поиск