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

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем Target25, 18 янв 2016.

  1. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Пытаясь загрузить файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой. Копая, выяснил, что "сыпется" в момент разбора узлов типа "параметр". В двух словах: при выполнении метода "Следующий()" 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</ДатаВремяСоздания>
    <Источник></Источник>
    <Приемник>БЗКР</Приемник>
    <ПередВыгрузкойДанных></ПередВыгрузкойДанных>
    <ПередЗагрузкойДанных></ПередЗагрузкойДанных>
    <ПослеЗагрузкиДанных></ПослеЗагрузкиДанных>
    <Параметры>
    <Параметр/>
    <Параметр/>
    <Параметр/>
    <Параметр/>
    <Параметр/>
    <Параметр/>
    </Параметры>
    <Обработки/>
    <ПравилаКонвертацииОбъектов/>
    <Запросы/>
    </ПравилаОбмена>


    Скриншот:
    http://i.imgur.com/eoyLbxq.png

    В общем, буду рад любым мыслям, как это проблему разрулить.
  2. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    "Пытаясь загрузить файл правил из ЗуП в ЗиК, столкнулся с этой ошибкой"


    Я вот это немного не понял. В чем смысл манипуляций?
  3. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Переход с ЗиК на ЗУП выполняетсявнешней обработкой, которая грузит правила обмена в виде .xml файла, а потом по этим правилам выгружает файл данных из ЗиК в ЗУП.

    Вот на этапе загрузки правил и случился этот затык.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Проверьте правильность пути до файла правил. Возможно такого файла не существует
    2) Какая версия v7plus.dll
    3) Стоят ли парсеры выше 3го?
  5. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    1. Тут не проблема в файле правил, я вон, как пример, сделал свой файл .xml, который вызывает ту самую ошибку, и програмку по его разбору, что эту ошибку иллюстрирует. Это или v7plus.dll фиговничает, или msxml. И что с ними делать?...
    2. Пробовал и 7.70.0.9 и 7.70.0.11
    3. Вот тут интересный вопрос. Ставил и четвертый и шестой. Четвертого в "установке и удалении" системы не было, удалить не знаю как, просто разрегистрировал. А вот шестерку как бы удалил, но ее .dll файлы остались, и, при попытке их удалить система сама их восстанавливает.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    снести 4 и 6, поставить третий
  7. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Не получается удалить 6й.
  8. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    В чем именно проблема? Догадываюсь, что Винда не позволяет..
  9. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Угу, не позволяет...

    Что интересно, пробовал на другом компьютере. Первый вызов отработало идеально. Вставляю .ВерсияАнализатора() и .ВерсияБазовогоАнализатора(), чтобы узнать версии, и... Все тут же перестало работать. Удаляю вызовы методов Версий. Не работает. Создаю новый пустой каталог под базу, пробую там. Не работает. Никак не работает.
    ps. все идет к переустановке ОС. :)
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    regsvr32 msxml4 /u
    regsvr32 msxml6 /u
    regsvr32 msxml3
  11. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Развлекался по полной. Переустанавливал систему, искал дистрибутив без sp3 (в sp3 встроен msxml6) и снова переустаналивал. В итоге кончилось тем, что у заказчиков нашел комп, на котором все работало. Все работало с учетом, что там стояли msxml3, msxml4, msxml6, v7plus.dll версии 7.70.0.11.

    Цирк продолжался. Распаковываю базу из архива, проверяю своей проверкой, работает. Открываю обработку выгрузки от 1с, начинаю в нее грузить правила... Сбой! Проверяю снова своей проверкой. Уже не работает! Повторно распаковываю в этот же каталог. Не работает! Переношу базу в другой каталог. Не работает! удаляю пользователей, .mlg файл... Не работает! Выгружаю базу, загружаю в другой каталог. Работает! Открываю обработку, гружу правила.. Работает! Делаю выгрузку.

    шиза... Шиза! ШИЗА! :)
  12. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Вообще не понял, что ты написал, так как читал по-диагонали.
    Тем-не менее, насколько понимаю, чудеса случаются? :)
  13. TopicStarter Overlay
    Target25
    Offline

    Target25

    Регистрация:
    18 янв 2016
    Сообщения:
    15
    Симпатии:
    0
    Баллы:
    1
    Вывод:
    1. Работоспособность не зависит от версии MSXML (3, 4, 6) и версии v7plus.dll (и 9я и 11я нормально работают). Или работают. Или не работают.
    2. Работоспособность зависит от каталога базы данных. Если есть глюк на каталоге, то это навсегда и больше там парсер работать никогда не будет. А в соседнем - м.б. и будет. Но базу надо не копировать, а выгружать-загружать.
    3. Установка новой ОС не гарантирует работоспособность.
    4. Как это лечить, другим методом, кроме "найди компьютер и каталог, где это работает", я, сказать честно, так и не понял.

Поделиться этой страницей