Пытаясь загрузить файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой. Копая, выяснил, что "сыпется" в момент разбора узлов типа "параметр". В двух словах: при выполнении метода "Следующий()" 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);
КонецЕсли;
КонецПроцедуры