Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   AddIn.XMLParser "ошибка исполнения метода" (http://forums.kuban.ru/f1040/addin_xmlparser_oshibka_ispolneniya_metoda-7274123.html)

volk13 23.10.2015 16:16

AddIn.XMLParser "ошибка исполнения метода"
 
Всем физкульт привет!
Что-то уже голову сломал...
Ситуация:
WinXPSP3, 1С7.7, пытаюсь прочитать хмл-файл, при выборе узла выдаёт ошибку:
Если ЗагрузитьВнешнююКомпоненту(гПутьОбъекта_КомпонентаV7plus) <> 1 Тогда
Предупреждение("Компонента v7plus.dll не найдена!");
Возврат;
КонецЕсли;

Анализатор = СоздатьОбъект("AddIn.XMLParser");
ФайлХМЛ = Анализатор.СоздатьДокумент();
ФайлХМЛ.Загрузить(парФайл);
хмлDocuments = ФайлХМЛ.ВыбратьУзел("ns:Documents");

Ошибка: ФайлХМЛ.ВыбратьУзел("ns:Documents") - ошибка исполнения метода.

На другой машине с WinХР этот код работает, на Win7 - работает, а вот на WinServer2008 - тоже такая-же ошибка.

Чего не хватает-то? Пробовал установить msxml4, не помогло... Куда ещё копнуть?

user1C 23.10.2015 16:45

regsvr32 /u msxml.dll
regsvr32 /u msxml2.dll
regsvr32 /u msxml3.dll
regsvr32 /u msxml4.dll
regsvr32 /u msxml6.dll
regsvr32 msxml3.dll

VZ 23.10.2015 16:50

0-volk13 > V7plus - в директорию /BIN/. И зарегистрировать от лица главнокомандующего (не директора, а админа).

P.S. Win7 ведет себя точно так же, если работать там по нормальному, а не по уродски ("из под админа").

VZ 23.10.2015 16:53

1-user1C > Лишнее это... Без бубна танцует на 2008-м. Проверено.

volk13 23.10.2015 16:59

спасибо, сейчас попробую зарегить сначала от админа на сервере (по рдп прорвусь), сообщу результат

smaharbA 23.10.2015 17:09

\windows\syswow64\regedit.exe \windows\syswow64\msxml4.dll

volk13 23.10.2015 17:19

[em]0-volk13 > V7plus - в директорию /BIN/. И зарегистрировать от лица главнокомандующего (не директора, а админа).[/em]
НЕ помогло на вин2008, делал от имени самого главного Администратора, запускал тоже из его сессии. Версия v7plus.dll 7.70.0.11 (я так понимаю самамя последняя)

Сейчас попробую (5)

volk13 23.10.2015 17:30

[em]\windows\syswow64\regedit.exe \windows\syswow64\msxml4.dll [/em]

ошибка - не удалось импортировать файл, импорт возможен только файлов реестра
(кстати, оба эти файла присутствуют по указанным путям)

Сейчас попробую (1), но уже на winXP, на которой не работает (боюсь на сервере удалять что-то)...

volk13 23.10.2015 17:35

[em]regsvr32 /u msxml.dll
regsvr32 /u msxml2.dll
regsvr32 /u msxml3.dll
regsvr32 /u msxml4.dll
regsvr32 /u msxml6.dll
regsvr32 msxml3.dll [/em]

тоже не помогло!
чего ещё может быть?..

smaharbA 23.10.2015 17:57

7-volk13 >
Ну ошибся я

\windows\syswow64\regsvr32.exe \windows\syswow64\msxml4.dll

Как ты делаешь это над 64-и разрядными версиями, а нужно над 32-х разрядными, они лежат в syswow64

smaharbA 23.10.2015 17:58

+ это как говорит Вольфофич "однозначно"

VZ 23.10.2015 18:10

Хм...
Я ориентировался на:
[em] Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "v7plus.dll") <> 1 Тогда

Предупреждение("Компонента v7plus.dll не найдена!", 60);

Возврат;

КонецЕсли;

КонецЕсли;

КонецЕсли;
[/em]

В этом фрагменте видно, что предупреждение "Не найдена комронента..." вылазит, когда тогда, кодда компонента не обнаружена (в порядке поиска) в BIN, Каталогп ИБ, в ExtForms.

Это в ЗиК. Но в [b]Бух77 [u]порядок иной[/u][/b]:
[em]СписокВозможныхМест = СоздатьОбъект("СписокЗначений");
СписокВозможныхМест.ДобавитьЗначение( КаталогИБ() + "v7plus.dll" );
СписокВозможныхМест.ДобавитьЗначение( КаталогПрограммы() + "v7plus.dll" );
СписокВозможныхМест.ДобавитьЗначение( КаталогИБ() + "ExtForms\" + "v7plus.dll" );
СписокВозможныхМест.ДобавитьЗначение( гСтрПуть + "v7plus.dll" );
[/em]

т.е., вначале ищет в каталоге ИБ.
Поэтому: надо либо изменить порядок поиска, либо выкинуть нафиг v7plus.dll из каталого ИБ.

volk13 23.10.2015 18:10

[em]\windows\syswow64\regsvr32.exe \windows\syswow64\msxml4.dll[/em]

сделал, зарегилась успешно, но НЕ помогло, та-же самая ошибка.. запускал от Администратора...

(блин.. столько лет создавал файлы на этой Вин2008 с помощью v7plus.dll , но не разу не парсил.. тут понадобилось - и такая засада... ничего не понимаю - ведь на других компах работает... а на этом и на ещё одном с ВинХР - нет)

что ещё попробовать?

volk13 23.10.2015 18:11

в каталоге ИБ у меня нет библиотеки этой, только в BIN

volk13 23.10.2015 18:14

и у меня же находится dll, а парсер не пашет почему-то

roma n 23.10.2015 18:18

14-volk13 > по реестру всё же посмотри какой версии msxml зарегистрирован? Точно третий?

volk13 23.10.2015 18:20

а где посмотреть, в какой ветке?

roma n 23.10.2015 18:21

+(15) ну и по стародревнему обряду после изменений реестра ребутнись для чистоты

roma n 23.10.2015 18:22

HKLM (на память)

VZ 23.10.2015 18:25

14-volk13 > Предупреждение "Компонента v7plus.dll не найдена!" по прежнему вылазит? Тогда не дергайся с парсерами, выясни путь, откуда конфа v7plus.dll пытается загрузить.

Вот когда эту длл-ку загрузит, вот тогда и с парсером будешь разбираться.

Вначале исправляют первую ошибку.

P.S. И не трогай UAC. Не надо.

roma n 23.10.2015 18:28

19-VZ > откуда Предупреждение "Компонента v7plus.dll не найдена!" по прежнему вылазит?
В (0) Ошибка: ФайлХМЛ.ВыбратьУзел("ns:Documents") - ошибка исполнения метода

volk13 23.10.2015 18:30

задал в реестре поиск по msxml - так их там полно, этих записей... нужен конкретный путь....
есть и 3 (их больше), есть и 4
где конкретно-то проверить?

volk13 23.10.2015 18:31

у меня не вылазит "компонента не найдена", у меня вылазит "ошибка исполнения метода"

VZ 23.10.2015 18:38

20-roma n > Тады не знаю. От v77 почти отошел...

volk13 23.10.2015 18:38

ребутнулся, не помогло :(

сейчас готов проводить эксперименты только на винХР, её и убить не жалко (на сервере не буду ничего делать, пока на ХР не заработает)

volk13 23.10.2015 18:41

только мыслей больше нет... :(
явно не работает парсер, так как v7plus использует именно его. А вот почему он не работает - не ясно

roma n 23.10.2015 18:45

(24) - ну раз пошла такая пьянка...
Состояние реестра в файл (не гарантирую, но по-моему в хрюне можно для этого воспользоваться созданием точки восстановления), regsvr32 /u для всех версий.
Потом можно какой-нить чистилкой реестра пройтись или руками все ветки погрохать.
Ребут
regsvr32 msxml3.dll
Ребут

если что-то пошло не так - восстановление реестра

volk13 23.10.2015 18:47

так, уже клёво - запустил на 2008-м!!!
как Смахарба написал - только сначала удалил 4-й, затем зарегил 3-й.. И заработало!!!
На ХР пока нет... :)
т.е. дело в версии парсера, должна быть 3-я! Только вот в какой ветке на ХР она должна быть 3-я - непонятно, так как там куча этих парсеров

roma n 23.10.2015 18:48

25-volk13 > Гранаты у тебя не той системы © скорее всего винда-таки поднимает msxml4, а v7plus писался под msxml3

volk13 23.10.2015 18:50

на ХР я уже делал
regsvr32 /u msxml.dll
regsvr32 /u msxml2.dll
regsvr32 /u msxml3.dll
regsvr32 /u msxml4.dll
regsvr32 /u msxml6.dll
regsvr32 msxml3.dll
щас ещё попробую тогда
но причина главное понятна
ПАРСЕР MSXML[b]3[/b] должен быть зареген

volk13 23.10.2015 18:53

вобщем всем спасибо! как добью ХР - сообщу (хотя и ежу уже ясно, что дело в парсере) :)

(а то уже дурные мысли посетили - переписывать обработку под DOM или какую-нибудь ВК типа OpenXML ... )
:)

volk13 23.10.2015 19:23

ну вот, собственно, и всё:
на ХР - через установку и удаление программ удалил msxml4 и msxml4 SP2 (оказывается они там были раньше зачем-то установлены и видимо поэтому их и подхватывало)
далее сделал
c:\windows\system32\regsvr32.exe c:\windows\system32\msxml3.dll
и всё ОК! :)

Итак, ПАМЯТКА:

[b]1С - при парсинге файла - ошибка исполнения метода.
Нужен msxml3 (именно третьей версии!)
И указывать надо ПОЛНЫЕ пути!!! при регистрации
c:\windows\system32\regsvr32.exe c:\windows\system32\msxml3.dll
(Предварительно можно удалить другие версии, используя ключ /u
т.е. например:
c:\windows\system32\regsvr32.exe /u c:\windows\system32\msxml4.dll)

Для ВИН2008х64 (64-разрядная) пути ОСОБЫЕ!!!
c:\windows\syswow64\regsvr32.exe c:\windows\syswow64\msxml3.dll
Предварительно можно удалить другие версии, используя ключ /u
т.е. например:
c:\windows\system32\regsvr32.exe /u c:\windows\system32\msxml4.dll[/b]

Всем спасибо, приятных выходных! :)

volk13 23.10.2015 19:25

в самом низу памятки лишнее скопировалось:
[em]Предварительно можно удалить другие версии, используя ключ /u
т.е. например:
c:\windows\system32\regsvr32.exe /u c:\windows\system32\msxml4.dll[/em]
убрать!
:)

smaharbA 23.10.2015 22:48

Только одно решение, что выше написал, интерпретируй правильно, остальное куета полная.
Давай доступ.

smaharbA 23.10.2015 22:50

[img]https://pbs.twimg.com/media/CSBTxIDVAAARjk5.jpg[/img]

smaharbA 23.10.2015 22:52

Вообще афтар, что связано с системой кроме меня всех шли на куй. Нет в мире всем и на т1с, и особо на мисте, кто что то вообще понимает окромя меня. (не стеб)

Фдуч 24.10.2015 21:44

А я VZ поддержу ничего регить не надо , достаточно под админом запустить 1с 1 раз . В данном случае еще 4ые парсеры удалить


Текущее время: 11:06. Часовой пояс GMT +3.