Регистрация Правила Главная форума Поиск |
0
- 18.01.2016 - 10:54
|
Пытаясь загрузить файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой. Копая, выяснил, что "сыпется" в момент разбора узлов типа "параметр". В двух словах: при выполнении метода "Следующий()" 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 </Ид> <Наименование>ЗиК --> ЗУП 3.0</Наименование> <ДатаВремяСоздания>2015-12-23T17:51:28</ДатаВремяСоздания> <Источник></Источник> <Приемник>БЗКР</Приемник> <ПередВыгрузкойДанных></ПередВыгрузкойДанных> <ПередЗагрузкойДанных></ПередЗагрузкойДанных> <ПослеЗагрузкиДанных></ПослеЗагрузкиДанных> <Параметры> <Параметр/> <Параметр/> <Параметр/> <Параметр/> <Параметр/> <Параметр/> </Параметры> <Обработки/> <ПравилаКонвертацииОбъектов/> <Запросы/> </ПравилаОбмена> ======== скриншот ошибки: http://i.imgur.com/eoyLbxq.png ======== Прошу проверить это у себя, потому что есть подозрения, что это будет работать на других компьютерах и проблема где-то в msxml3.dll | |
1
- 18.01.2016 - 12:09
| а попробовать читать через DOM? | |
2
- 18.01.2016 - 14:20
| ага в 7-ке было такое, мсхмл не той версии стоял | |
| Интернет-форум Краснодарского края и Краснодара |