26.07.2005, 11:02 | #1 |
Участник
|
Открываю отчет 12468 в 4 версии- там все automation переменные excel - выдают что Unknown Automation Server.Unknown Class- т.е. я так понимаю библиотека excel версии, которую использовал MBS у меня не установлена.
Вопрос-а как проверить какую библиотеку и какой версии мне нужно установить? В этом отчете я так понимаю можно ориентироваться на название переменной - xlWorkBook например excel - метод WorkBook. А как быть с другими automation не excel ? Как догадаться какой automation и метод прописан в отчете. |
|
26.07.2005, 11:22 | #2 |
Moderator
|
Я думаю самый простой метод - выгрузить код в txt, посмотреть GUID у переменных типа automation, после чего найти этот GUID в реестре. Так можно выяснить какая dll за него отвечает. По названию dll можно приблизительно догадаться, что это за объект
|
|
26.07.2005, 11:44 | #3 |
Участник
|
Цитата:
Сообщение от tyrex
Я думаю самый простой метод - выгрузить код в txt, посмотреть GUID у переменных типа automation, после чего найти этот GUID в реестре. Так можно выяснить какая dll за него отвечает. По названию dll можно приблизительно догадаться, что это за объект
В 3.6 - да выдает GUID |
|
26.07.2005, 12:41 | #4 |
Moderator
|
Я вот я попробовал сегодня в 4. Выдает.
Automation "{00020905-0000-0000-C000-000000000046} 8.1:{000209FF-0000-0000-C000-000000000046}:Unknown Automation Server.Application"; |
|
26.07.2005, 13:48 | #5 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
В общем то уже разобралась с конкретно этим репортом. Так как в репорте использовался 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 |
Moderator
|
Номер guid он не может не определятся, т.к. объект automation идентифицируется исключительно по guid'у. А вот если объект в системе не зарегестрирован, то его guid не будет прописан в реестре. В этом случае никак нельзя сказать, что это за такой automation и зачем он нужен
|
|
26.07.2005, 15:10 | #8 |
Участник
|
Цитата:
Сообщение от tyrex
Номер guid он не может не определятся, т.к. объект automation идентифицируется исключительно по guid'у. А вот если объект в системе не зарегестрирован, то его guid не будет прописан в реестре. В этом случае никак нельзя сказать, что это за такой automation и зачем он нужен
Если кому не лень-может проверите-да умные мысли выскажете? Наверно все таки сравнивается еще и по номеру версии - поле version в табл-2000000046. |
|
26.07.2005, 16:48 | #9 |
Moderator
|
Объясняю самые основы 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 |
Участник
|
Спасибо за подробный ответ.
Только если не зарегистрирован 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 очень проблематично. |
|