28.07.2009, 18:24 | #1 |
Участник
|
всем привет.
в своем решении использую MS Word для автоматизированного создания документов. у меня установлен Office 2007 и, соответственно, переменные для работы с вордом идут как 'Microsoft Word 12.0 Object Library'.* при переносе решения на другую машину, где установлена иная версия MS Office, переменные 'Microsoft Word 12.0 Object Library’ даже не инициализируются, так как нету такой библиотеки в системе. собственно, вопрос: каким образом можно унифицировать решение, чтобы оно не было жестко подвязано под версию MS Office? не хочется верить, что для каждой из версий MS Office придется выпускать отдельные наборы объектов. |
|
28.07.2009, 18:54 | #2 |
Участник
|
Цитата:
Сообщение от Nosta
в своем решении использую MS Word для автоматизированного создания документов. у меня установлен Office 2007 и, соответственно, переменные для работы с вордом идут как 'Microsoft Word 12.0 Object Library'.* при переносе решения на другую машину, где установлена иная версия MS Office, переменные 'Microsoft Word 12.0 Object Library’ даже не инициализируются, так как нету такой библиотеки в системе.
собственно, вопрос: каким образом можно унифицировать решение, чтобы оно не было жестко подвязано под версию MS Office? не хочется верить, что для каждой из версий MS Office придется выпускать отдельные наборы объектов. |
|
28.07.2009, 18:59 | #3 |
Участник
|
а не будет ли это нарушением лицензионных соглашений? ведь, по существу, я, в таком случае, буду распространять часть продукта (в данном случае, часть MS Office) без сопутствующей лицензии. для европейских заказчиков это неприемлемо, да и сам в итоге могу по балде получить
|
|
28.07.2009, 19:26 | #4 |
Участник
|
Могу предложить ритуал выгрузки Ваших объектов в текстовый файл и при передаче решения заменять CLSID на соответствующей версии Word.
Еще можно создать кодеюниты для каждой версии Word, скомпилить на машине с соответствующей версией. В зависимости от условий вызывать нужную версию кодеюнита. |
|
29.07.2009, 14:58 | #5 |
Участник
|
"Еще можно создать кодеюниты для каждой версии Word, скомпилить на машине с соответствующей версией. В зависимости от условий вызывать нужную версию кодеюнита."
было такое предположение. но не нашел пути определения версии Word, установленной в системе. есть ли? |
|
29.07.2009, 15:23 | #6 |
Участник
|
IF CREATE(appWord) THEN
codeunit1 ELSE codeunit2; или что-то подобное |
|
29.07.2009, 16:47 | #7 |
Участник
|
Вы можете в коде использовать 11 версию Worda, она должна быть совместима с 12ой. Но скомпилить КЮ на машине с установленным 12 Офисом вряд ли получится.
|
|
29.07.2009, 18:28 | #8 |
Участник
|
а вот какого типа должна быть эта appWord? если я в КЮ заведу их пяток (по одной для разных версий), то КЮ не скомпилится, если хоть одна из них не сможет инициализироваться.
у меня КЮ с переменной Word12.0 (т.е. 2007)не то, чтобы не компилится на машине с Word10.0 (т.е. 2003), а вообще вырубает навижн с ошибкой. хотя ихние отомейшн сервера имеют одинаковый CLSID , вот только версии у них разные 8.4 - 8.2 наверняка у МС есть "обходы", но не афишируют они их. или я плохо копаю |
|
29.07.2009, 19:47 | #9 |
Участник
|
Создаем codueunit с версией переменной для Word 2007. В нем следующий код:
IF CREATE(appWord2007) THEN codeunit1 (с переменными для Word12.0 или текущий объект) ELSE codeunit2; (с переменными для Word10.0) Цитата:
у меня КЮ с переменной Word12.0 (т.е. 2007)не то, чтобы не компилится на машине с Word10.0 (т.е. 2003), а вообще вырубает навижн с ошибкой
PS Извините, протестировать предлагаемые решения не на чем. Это всего лишь мои предположения. |
|
29.07.2009, 20:04 | #10 |
Administrator
|
|
|
29.07.2009, 20:57 | #11 |
Участник
|
надо попробовать импортить,
давно не пробовал. |
|
29.07.2009, 21:05 | #12 |
Участник
|
выгрузил и загрузил через текст вот это
Код: OBJECT Codeunit 12416 Excel Management { OBJECT-PROPERTIES { } CODE { VAR PurchSetup@1210000 : Record 312; XlApp@1210005 : Automation "{00020813-0000-0000-C000-000000000046} 1.2:{00024500-0000-0000-C000-000000000046}:Unknown Automation Server.Application"; XlWrkBk@1210004 : Automation "{00020813-0000-0000-C000-000000000046} 1.2:{00020819-0000-0000-C000-000000000046}:Unknown Automation Server.Workbook"; XlWrkSht@1210003 : Automation "{00020813-0000-0000-C000-000000000046} 1.2:{00020820-0000-0000-C000-000000000046}:Unknown Automation Server.Worksheet"; XlWrkshts@1210002 : Automation "{00020813-0000-0000-C000-000000000046} 1.2:{000208D8-0000-0000-C000-000000000046}:Unknown Automation Server._Worksheet"; XlRange@1210001 : Automation "{00020813-0000-0000-C000-000000000046} 1.2:{00020846-0000-0000-C000-000000000046}:Unknown Automation Server.Range"; |
|
29.07.2009, 21:25 | #13 |
Administrator
|
спасибо
наверное, все дело в Automation-ах, нах. у меня связки с PDF Creator и многим чем еще не поднимаются из txt. именно с ошибкой Unknown Automation Server |
|
30.07.2009, 10:30 | #14 |
Участник
|
|
|
30.07.2009, 12:12 | #15 |
MCTS
|
Цитата:
Все компилируются. Т.е. при установленной более свежей версии офиса сохраняется совместимость со старыми объектами. Или я не так понял проблему? |
|
30.07.2009, 12:35 | #16 |
Administrator
|
|
|
31.07.2009, 15:44 | #17 |
Участник
|
у меня ситуация противоположная: разрабатываю приложение на офисе2007(иных нету) + НАВ4.3, как основная конфигурация. но предполагается его использовать и на иных версиях офиса. также приложение включает в себя сторонние .НЕТ библиотеки, подключаемые в НАВ-е.
возможно, все работы в Вордом целесообразнее вынести на уровень бибилиотек? все таки в дотнете гораздо проще работать с вордом, не вдаваясь особо в его версию. либо, как вариант: делаю все под офис ХР, который потом вполне "распознаваем" более поздними версиями. я не прошу решить все за меня, просто может кто уже сталкивался с подобным и знает верный путь |
|
02.08.2009, 00:56 | #18 |
Участник
|
Цитата:
|
|