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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.07.2009, 18:24   #1  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
всем привет.

в своем решении использую 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  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Nosta Посмотреть сообщение
в своем решении использую MS Word для автоматизированного создания документов. у меня установлен Office 2007 и, соответственно, переменные для работы с вордом идут как 'Microsoft Word 12.0 Object Library'.* при переносе решения на другую машину, где установлена иная версия MS Office, переменные 'Microsoft Word 12.0 Object Library’ даже не инициализируются, так как нету такой библиотеки в системе.

собственно, вопрос: каким образом можно унифицировать решение, чтобы оно не было жестко подвязано под версию MS Office?

не хочется верить, что для каждой из версий MS Office придется выпускать отдельные наборы объектов.
Наверное глупое предложение, но может можно выбрать парочку DLL с библиотеками и зарегистрировать на каждой машине каким-нибудь bat-иком при инсталляции?
Старый 28.07.2009, 18:59   #3  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
а не будет ли это нарушением лицензионных соглашений? ведь, по существу, я, в таком случае, буду распространять часть продукта (в данном случае, часть MS Office) без сопутствующей лицензии. для европейских заказчиков это неприемлемо, да и сам в итоге могу по балде получить
Старый 28.07.2009, 19:26   #4  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
Могу предложить ритуал выгрузки Ваших объектов в текстовый файл и при передаче решения заменять CLSID на соответствующей версии Word.

Еще можно создать кодеюниты для каждой версии Word, скомпилить на машине с соответствующей версией. В зависимости от условий вызывать нужную версию кодеюнита.
Старый 29.07.2009, 14:58   #5  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
"Еще можно создать кодеюниты для каждой версии Word, скомпилить на машине с соответствующей версией. В зависимости от условий вызывать нужную версию кодеюнита."

было такое предположение. но не нашел пути определения версии Word, установленной в системе. есть ли?
Старый 29.07.2009, 15:23   #6  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
IF CREATE(appWord) THEN
codeunit1
ELSE
codeunit2;

или что-то подобное
Старый 29.07.2009, 16:47   #7  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Вы можете в коде использовать 11 версию Worda, она должна быть совместима с 12ой. Но скомпилить КЮ на машине с установленным 12 Офисом вряд ли получится.
Старый 29.07.2009, 18:28   #8  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
Цитата:
Сообщение от anatol33 Посмотреть сообщение
IF CREATE(appWord) THEN
codeunit1
ELSE
codeunit2;

или что-то подобное
а вот какого типа должна быть эта appWord? если я в КЮ заведу их пяток (по одной для разных версий), то КЮ не скомпилится, если хоть одна из них не сможет инициализироваться.
у меня КЮ с переменной Word12.0 (т.е. 2007)не то, чтобы не компилится на машине с Word10.0 (т.е. 2003), а вообще вырубает навижн с ошибкой. хотя ихние отомейшн сервера имеют одинаковый CLSID , вот только версии у них разные 8.4 - 8.2

наверняка у МС есть "обходы", но не афишируют они их. или я плохо копаю
Старый 29.07.2009, 19:47   #9  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
Создаем codueunit с версией переменной для Word 2007. В нем следующий код:

IF CREATE(appWord2007) THEN

codeunit1 (с переменными для Word12.0 или текущий объект)

ELSE

codeunit2; (с переменными для Word10.0)

Цитата:
у меня КЮ с переменной Word12.0 (т.е. 2007)не то, чтобы не компилится на машине с Word10.0 (т.е. 2003), а вообще вырубает навижн с ошибкой
на машине с Word10.0 (т.е. 2003) надо компилить кодеюнит с переменными для Word10.0 (т.е. 2003). Затем этот скомпиленый оъект фобом экспортировать на машину с Word12.0 (т.е. 2007).

PS
Извините, протестировать предлагаемые решения не на чем. Это всего лишь мои предположения.
Старый 29.07.2009, 20:04   #10  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от anatol33 Посмотреть сообщение
Могу предложить ритуал выгрузки Ваших объектов в текстовый файл и при передаче решения заменять CLSID на соответствующей версии Word.
это только у меня такие проблемы? юниты, содержащие automation, после импорта из текстового файла не компилятся. с fob все в порядке.
Старый 29.07.2009, 20:57   #11  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
надо попробовать импортить,

давно не пробовал.
Старый 29.07.2009, 21:05   #12  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
выгрузил и загрузил через текст вот это

Код:
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  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
спасибо
наверное, все дело в Automation-ах, нах.
у меня связки с PDF Creator и многим чем еще не поднимаются из txt.
именно с ошибкой Unknown Automation Server
Старый 30.07.2009, 10:30   #14  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Sancho Посмотреть сообщение
спасибо
наверное, все дело в Automation-ах, нах.
у меня связки с PDF Creator и многим чем еще не поднимаются из txt.
именно с ошибкой Unknown Automation Server
А они зарегены на машине, куда импортишь, Серег?
Старый 30.07.2009, 12:12   #15  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Цитата:
Сообщение от .Quattro. Посмотреть сообщение
Вы можете в коде использовать 11 версию Worda, она должна быть совместима с 12ой. Но скомпилить КЮ на машине с установленным 12 Офисом вряд ли получится.
Установлен офис 2007. Есть НАВ5 со следующими объектами: t370 - excel 8, r12468 - excel 9, c8619 - excel 11.
Все компилируются.
Т.е. при установленной более свежей версии офиса сохраняется совместимость со старыми объектами.

Или я не так понял проблему?
Старый 30.07.2009, 12:35   #16  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от romeo Посмотреть сообщение
А они зарегены на машине, куда импортишь, Серег?
импорчу из своей же машины на свою же. конечно да.
Старый 31.07.2009, 15:44   #17  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
у меня ситуация противоположная: разрабатываю приложение на офисе2007(иных нету) + НАВ4.3, как основная конфигурация. но предполагается его использовать и на иных версиях офиса. также приложение включает в себя сторонние .НЕТ библиотеки, подключаемые в НАВ-е.
возможно, все работы в Вордом целесообразнее вынести на уровень бибилиотек? все таки в дотнете гораздо проще работать с вордом, не вдаваясь особо в его версию.
либо, как вариант: делаю все под офис ХР, который потом вполне "распознаваем" более поздними версиями.

я не прошу решить все за меня, просто может кто уже сталкивался с подобным и знает верный путь
Старый 02.08.2009, 00:56   #18  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Nosta Посмотреть сообщение
а не будет ли это нарушением лицензионных соглашений? ведь, по существу, я, в таком случае, буду распространять часть продукта (в данном случае, часть MS Office) без сопутствующей лицензии. для европейских заказчиков это неприемлемо, да и сам в итоге могу по балде получить
Я думаю, что на библиотеки это не распространняется.. Сами библиотеки помомеу лежат в свободном доступе.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:06.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.