AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2005, 11:02   #1  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
Открываю отчет 12468 в 4 версии- там все automation переменные excel - выдают что Unknown Automation Server.Unknown Class- т.е. я так понимаю библиотека excel версии, которую использовал MBS у меня не установлена.
Вопрос-а как проверить какую библиотеку и какой версии мне нужно установить? В этом отчете я так понимаю можно ориентироваться на название переменной - xlWorkBook например excel - метод WorkBook.
А как быть с другими automation не excel ?
Как догадаться какой automation и метод прописан в отчете.
Старый 26.07.2005, 11:22   #2  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Я думаю самый простой метод - выгрузить код в txt, посмотреть GUID у переменных типа automation, после чего найти этот GUID в реестре. Так можно выяснить какая dll за него отвечает. По названию dll можно приблизительно догадаться, что это за объект
Старый 26.07.2005, 11:44   #3  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
Цитата:
Сообщение от tyrex
Я думаю самый простой метод - выгрузить код в txt, посмотреть GUID у переменных типа automation, после чего найти этот GUID в реестре. Так можно выяснить какая dll за него отвечает. По названию dll можно приблизительно догадаться, что это за объект
Пробовала вчера в 4 версии -не выдает номер GUID-выдает Unknown Automation Server.Unknown Class
В 3.6 - да выдает GUID
Старый 26.07.2005, 12:41   #4  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Я вот я попробовал сегодня в 4. Выдает.

Automation "{00020905-0000-0000-C000-000000000046} 8.1:{000209FF-0000-0000-C000-000000000046}:Unknown Automation Server.Application";
Старый 26.07.2005, 13:48   #5  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
Цитата:
Сообщение от tyrex
Я вот я попробовал сегодня в 4. Выдает.

Automation "{00020905-0000-0000-C000-000000000046} 8.1:{000209FF-0000-0000-C000-000000000046}:Unknown Automation Server.Application";
А какой репорт вы выгружали?
Старый 26.07.2005, 14:29   #6  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
В общем то уже разобралась с конкретно этим репортом. Так как в репорте использовался excel 11.0 - 2003 (на другой машине посмотрели), а на моей машине excel 10.0 - 2002,то по этому вообще сервер не находился. А вот смотрела в 3.6. там сервер тоже не находился-но при выгрузки в txt как раз guid - был. То есть я так поняла что в 3.6 этот репорт был написана на excel не 2002-а более старой версии- поэтому номер guid был. А вот если написан на automation более новой версии то номер guid не определяется.
А вот вопрос с общим случаем так и остался. А если используются automation которые на машине вообще не зарегистированные ? Тогда как узнать какие automation были использованы?
Старый 26.07.2005, 14:53   #7  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Номер guid он не может не определятся, т.к. объект automation идентифицируется исключительно по guid'у. А вот если объект в системе не зарегестрирован, то его guid не будет прописан в реестре. В этом случае никак нельзя сказать, что это за такой automation и зачем он нужен
Старый 26.07.2005, 15:10   #8  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
Цитата:
Сообщение от tyrex
Номер guid он не может не определятся, т.к. объект automation идентифицируется исключительно по guid'у. А вот если объект в системе не зарегестрирован, то его guid не будет прописан в реестре. В этом случае никак нельзя сказать, что это за такой automation и зачем он нужен
Да я это понимаю-но приведенный мной пример-это то что я сегодня разбиралась-кстати после установки office 2003 - Excel 2003-Office 11 встал под таким же номером как и Excel 2002-Office 10 и 5 версии (смотрела через табл 2000000046)- т.е. получается что идентифицируется не только по guid- а еще и каким то образом по номеру версии. Потому что вышестоящая версия excel никак не распознавалась. А вот нижестоящая (проверяла в 3.6 Навижине) опозновалась.
Если кому не лень-может проверите-да умные мысли выскажете?
Наверно все таки сравнивается еще и по номеру версии - поле version в табл-2000000046.
Старый 26.07.2005, 16:48   #9  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Объясняю самые основы automation.

Некий программист пишет dll'ку, например super.dll.
Дает клиенту.
Клиент запускает вручную regsvr32 super.dll, либо это вместо него делает инсталлятор (автоматически).

При этом в реестр записываются ProgId, ClassId и TypeLib
ProgID - это название automation server
ClassId - гуид COM-класа
TypeLib - путь к файлу, который отвечает за COM-объект. В данном случае это путь к super.dll

в случае Excel 10 и Excel 11 - ClassId один и тот же, а ProgId и TypeLib разные.

Теперь касательно двух вопросов - почему навижен что-то распознает, а что-то нет и как определить, что это за Unknown Automation Server такой?

Вопрос 1. Навижн распознает только то, что прописано в реестре. Если в реестре записи нет (то бишь компонента не зарегестрирована), то навижн ничего распознать естессно не может.

Вопрос 2. Найти в реестре строчку, с таким же гуидом, как и у объекта automation. Посмотреть TypeLib. Выяснить что это за dll и к какой программе она относится.
За это сообщение автора поблагодарили: mira (1).
Старый 26.07.2005, 17:26   #10  
Галина is offline
Галина
Участник
 
1,132 / 28 (3) +++
Регистрация: 01.07.2003
Спасибо за подробный ответ.
Только если не зарегистрирован automation то и GUID не выдает при выгрузки в txt объекта и соответственно я не могу воспользоваться поиском в реестре этой строки, так как я не знаю guid.
А в моем случае да так и есть ClassId у Excel 10(2002) и Excel 11(2003) - один и тот же-но тем не менее, у меня стоял Excel 10 -и отчет 12468 из Nav 4 не компилировался и при выгрузки в txt - guid не определялся, так как в отчете были использованы automation Excel 11 - более высокой версии. А вот в 3.6 - был использован Excel 9 (наверно) 2000, а у меня был зарегистрирован Excel 10 (2002) - да при выгрузке GUID определился.

Tyrex еще раз большое спасибо - вы уже повторяетесь(впрочем как и я )-я все прекрасно поняла из вашего первого поста и этим советом то и воспользовалась только для 3.6 Navision.
Попробуйте на машине где Excel 2002 или Excel 2000 выгрузить r.12468 из Nav 4 или просто перекомпилировать объект - не получится будет выдавать сообщение нет библиотеки, а в txt - то что я писала выше.
Хотя GUID - один и тот же {00020813-0000-0000-C000-000000000046}.
Ну вообщем то я поняла что если automation не зарегистрирован на машине или зарегистрирована версия более низкая чем automation,который используется в Nav- то определить что это за automation очень проблематично.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:39.