К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

AddIn.XMLParser "ошибка исполнения метода"

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

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

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

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

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



1 - 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
Гость
2 - 23.10.2015 - 16:50
0-volk13 > V7plus - в директорию /BIN/. И зарегистрировать от лица главнокомандующего (не директора, а админа).

P.S. Win7 ведет себя точно так же, если работать там по нормальному, а не по уродски ("из под админа").
Гость
3 - 23.10.2015 - 16:53
1-user1C > Лишнее это... Без бубна танцует на 2008-м. Проверено.
4 - 23.10.2015 - 16:59
спасибо, сейчас попробую зарегить сначала от админа на сервере (по рдп прорвусь), сообщу результат
Гость
5 - 23.10.2015 - 17:09
\windows\syswow64\regedit.exe \windows\syswow64\msxml4.dll
6 - 23.10.2015 - 17:19
0-volk13 > V7plus - в директорию /BIN/. И зарегистрировать от лица главнокомандующего (не директора, а админа).
НЕ помогло на вин2008, делал от имени самого главного Администратора, запускал тоже из его сессии. Версия v7plus.dll 7.70.0.11 (я так понимаю самамя последняя)

Сейчас попробую (5)
7 - 23.10.2015 - 17:30
\windows\syswow64\regedit.exe \windows\syswow64\msxml4.dll

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

Сейчас попробую (1), но уже на winXP, на которой не работает (боюсь на сервере удалять что-то)...
8 - 23.10.2015 - 17:35
regsvr32 /u msxml.dll
regsvr32 /u msxml2.dll
regsvr32 /u msxml3.dll
regsvr32 /u msxml4.dll
regsvr32 /u msxml6.dll
regsvr32 msxml3.dll


тоже не помогло!
чего ещё может быть?..
Гость
9 - 23.10.2015 - 17:57
7-volk13 >
Ну ошибся я

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

Как ты делаешь это над 64-и разрядными версиями, а нужно над 32-х разрядными, они лежат в syswow64
Гость
10 - 23.10.2015 - 17:58
+ это как говорит Вольфофич "однозначно"
Гость
11 - 23.10.2015 - 18:10
Хм...
Я ориентировался на:
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда

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

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

Возврат;

КонецЕсли;

КонецЕсли;

КонецЕсли;


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

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


т.е., вначале ищет в каталоге ИБ.
Поэтому: надо либо изменить порядок поиска, либо выкинуть нафиг v7plus.dll из каталого ИБ.
12 - 23.10.2015 - 18:10
\windows\syswow64\regsvr32.exe \windows\syswow64\msxml4.dll

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

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

что ещё попробовать?
13 - 23.10.2015 - 18:11
в каталоге ИБ у меня нет библиотеки этой, только в BIN
14 - 23.10.2015 - 18:14
и у меня же находится dll, а парсер не пашет почему-то
Гость
15 - 23.10.2015 - 18:18
14-volk13 > по реестру всё же посмотри какой версии msxml зарегистрирован? Точно третий?
16 - 23.10.2015 - 18:20
а где посмотреть, в какой ветке?
Гость
17 - 23.10.2015 - 18:21
+(15) ну и по стародревнему обряду после изменений реестра ребутнись для чистоты
Гость
18 - 23.10.2015 - 18:22
HKLM (на память)
Гость
19 - 23.10.2015 - 18:25
14-volk13 > Предупреждение "Компонента v7plus.dll не найдена!" по прежнему вылазит? Тогда не дергайся с парсерами, выясни путь, откуда конфа v7plus.dll пытается загрузить.

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

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

P.S. И не трогай UAC. Не надо.
Гость
20 - 23.10.2015 - 18:28
19-VZ > откуда Предупреждение "Компонента v7plus.dll не найдена!" по прежнему вылазит?
В (0) Ошибка: ФайлХМЛ.ВыбратьУзел("ns:Documents") - ошибка исполнения метода
21 - 23.10.2015 - 18:30
задал в реестре поиск по msxml - так их там полно, этих записей... нужен конкретный путь....
есть и 3 (их больше), есть и 4
где конкретно-то проверить?
22 - 23.10.2015 - 18:31
у меня не вылазит "компонента не найдена", у меня вылазит "ошибка исполнения метода"
Гость
23 - 23.10.2015 - 18:38
20-roma n > Тады не знаю. От v77 почти отошел...
24 - 23.10.2015 - 18:38
ребутнулся, не помогло :(

сейчас готов проводить эксперименты только на винХР, её и убить не жалко (на сервере не буду ничего делать, пока на ХР не заработает)
25 - 23.10.2015 - 18:41
только мыслей больше нет... :(
явно не работает парсер, так как v7plus использует именно его. А вот почему он не работает - не ясно
Гость
26 - 23.10.2015 - 18:45
(24) - ну раз пошла такая пьянка...
Состояние реестра в файл (не гарантирую, но по-моему в хрюне можно для этого воспользоваться созданием точки восстановления), regsvr32 /u для всех версий.
Потом можно какой-нить чистилкой реестра пройтись или руками все ветки погрохать.
Ребут
regsvr32 msxml3.dll
Ребут

если что-то пошло не так - восстановление реестра
27 - 23.10.2015 - 18:47
так, уже клёво - запустил на 2008-м!!!
как Смахарба написал - только сначала удалил 4-й, затем зарегил 3-й.. И заработало!!!
На ХР пока нет... :)
т.е. дело в версии парсера, должна быть 3-я! Только вот в какой ветке на ХР она должна быть 3-я - непонятно, так как там куча этих парсеров
Гость
28 - 23.10.2015 - 18:48
25-volk13 > Гранаты у тебя не той системы © скорее всего винда-таки поднимает msxml4, а v7plus писался под msxml3
29 - 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
щас ещё попробую тогда
но причина главное понятна
ПАРСЕР MSXML3 должен быть зареген
30 - 23.10.2015 - 18:53
вобщем всем спасибо! как добью ХР - сообщу (хотя и ежу уже ясно, что дело в парсере) :)

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

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

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


Всем спасибо, приятных выходных! :)
32 - 23.10.2015 - 19:25
в самом низу памятки лишнее скопировалось:
Предварительно можно удалить другие версии, используя ключ /u
т.е. например:
c:\windows\system32\regsvr32.exe /u c:\windows\system32\msxml4.dll

убрать!
:)
Гость
33 - 23.10.2015 - 22:48
Только одно решение, что выше написал, интерпретируй правильно, остальное куета полная.
Давай доступ.
Гость
34 - 23.10.2015 - 22:50
Гость
35 - 23.10.2015 - 22:52
Вообще афтар, что связано с системой кроме меня всех шли на куй. Нет в мире всем и на т1с, и особо на мисте, кто что то вообще понимает окромя меня. (не стеб)
36 - 24.10.2015 - 21:44
А я VZ поддержу ничего регить не надо , достаточно под админом запустить 1с 1 раз . В данном случае еще 4ые парсеры удалить


К списку вопросов






Copyright ©, Все права защищены