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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2022, 13:47   #1  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
Ошибка Microsoft.Office.Interop.Excel
Добрый день.

Не могу найти ответа на загадочную ошибку.

Версия - 2012
Стандартная библиотека - Microsoft.Office.Interop.Excel

В какой то момент (есть подозрения, что после переноса кода через модель, либо после того как коллега что то заденет где то - точно не выяснил) компилятор начинает выдавать ошибку в нескольких классах, которые используют Microsoft.Office.Interop.Excel. Раз в пару месяцев такое случается.

Внизу пример джоба. Т.е. система перестает видеть некоторые методы классов из библиотеки (на классе Range тоже ограниченно видит)

Если закомментировать код на проблемных классах, откомпилировать их, запустить CIL (даже инкрементный помог), то все становится на места.

Внизу джоб где уже видны все методы класса уже после CIL.

Не пойму как CIL влияет. И как решить ситуацию. Т.е. я получаю ошибку в классах. Не могу собрать CIL. Без CIL ошибка в классах не исправляется.

Так же было на рабочей после переноса. Перенос через модель. Падает на глобальной компиляции. Причем ошибка всплывает периодически с интервалом в пару месяцев. Чаще переносы проходят без проблем.

Понимаю, что тема довольно специфическая, но может кто сталкивался.
Изображения
  
Старый 17.06.2022, 15:01   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Злой Вы. В России давать ссылку на community.dynamics.com без комментария.

Последний раз редактировалось Raven Melancholic; 17.06.2022 в 15:04.
Старый 17.06.2022, 16:50   #4  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Спасибо за ссылку. Встречал ее, когда гуглил. Немного не мое мне кажется.
В теме речь как откомпилировать код через axBuild если нет Excel на сервере.
Я компилировал именно на клиенте, на котором точно есть Excel. Т.е. все действия в теме делал из под клиента без AxBuild.
Старый 17.06.2022, 19:16   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,324 / 3548 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Злой Вы. В России давать ссылку на community.dynamics.com без комментария.
Вытащу статью, правда без картинок и ссылок (картинки не грузятся, ссылки не работают)

A few months ago I wrote a post on how to convert Excel documents to PDF with X++. Well, that piece of code made it into production! image But I just notice it does not necessarily compile with Ax Build.
The error:
The xlApp declaration does not compile because Excel is not installed on the server and AX build can only be completed on the server. If you compile this same piece of code in the AOT on a server that has Excel installed, it compiles without a problem.

My solution(s):
Install Excel on the server. I am not sure if this will allow AX Build to compile the code, but at least you can then open the AOT after AX build on the sever and compile like I described here.
Since I could not install Excel on the server, I did the following:
  1. Compile with AX Build on the server.
  2. If you have a compile error related to Microsoft.Office.Interop.Excel, start the server and open the AOT on a terminal server that has Excel installed.
  3. Compile the code with normal F7 compile.
  4. Compile the CIL on the terminal server.
Hope that helps! Let me know in the comments if you know of a better way to solve this.
__________________
Возможно сделать все. Вопрос времени
Старый 18.06.2022, 00:02   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от gudzon Посмотреть сообщение
Версия - 2012
Стандартная библиотека - Microsoft.Office.Interop.Excel
В какой то момент компилятор начинает выдавать ошибку в нескольких классах, которые используют Microsoft.Office.Interop.Excel. Раз в пару месяцев такое случается.
Загадочно... "Стандартная библиотека", как она тут обзывается. - это вроде бы довес к Ms Office, который в инсталляторе прежних версий обзывался наподобие "Компоненты интеграции .NET" и был опциональным. Т.е. при установке MS Office нужно было развернуть узел Excel и отдельно прокрыжить этот компонент интеграции.
Далее, чтобы код X++, ссылающийся на .NET-типы, успешно компилировался в AX2012, нужно, чтобы там, где работает компилятор X++, были доступны соотв. сборки .NET. В данном случае, если код компилируется с помощью AXBuild, то на хосте, где AXBuild запускается, должны быть установлены и доступны сборки с namespace-ом Microsoft.Office.Interop.Excel. Если код компилируется из клиента AX32.exe на вашем рабочем компе, тогда на нем должны быть установлены эти сборки. Если код компилируется из клиента AX32.exe на терминальном сервере - то на терминальнике должны быть эти сборки... Как у классиков: утром деньги - вечером стулья, утром на хосте - сборки .NET, вечером - успешная компиляция кода X++ на этом хосте. Может, код компилится на разных хостах?..
Старый 20.06.2022, 12:41   #7  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
Все действия делаю на терминалке. Там стоит Excel. Да и раньше все ок было. Ничего не делали с Excel.

Кстати, видимо я поторопился, сказав, что CIL исправил ошибку. Сегодня она опять всплыла. Видимо, в пятницу не так посмотрел.

В общем, на всех почти классах Microsoft.Office.Interop.Excel не видно часть методов (ощущение, что все они свойства)

Для пример три класса/интерфейса (привожу по иерархии)
Microsoft.Office.Interop.Excel._Application. Не виден метод get_Interactive (свойство Interactive)
Microsoft.Office.Interop.Excel.Application. Не виден метод get_Interactive
Microsoft.Office.Interop.Excel.ApplicationClass. Все отлично. Виден get_Interactive

Можно было бы заменить классы (для WorkBook и WorkSheet есть аналоги *Class), но не понятно что делать с Microsoft.Office.Interop.Excel.Range - на нем тоже свойства не видны.

Попробую Repair Office. Может поможет.

ЗЫ Гугл молчит

Последний раз редактировалось gudzon; 20.06.2022 в 12:44.
Старый 20.06.2022, 13:06   #8  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
В общем барабашка какая то.

Решение обходное нашел вроде (на тестовом примере все ок) - приводить к Object классы.
Старый 20.06.2022, 13:19   #9  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Загадочно... "Стандартная библиотека", как она тут обзывается. - это вроде бы довес к Ms Office
Да. Некорректно выразился. Не стандартная библиотека - с офисом устанавливается.
Старый 20.06.2022, 18:11   #10  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Может быть на терминале не установлен компонент, а на AOS установлен?
А после танцев с бубном (CIL-компиляции) возможно всё встает на свои места.
После модификации класса на клиенте список методов/свойств снова может пропасть.
Проверьте, что на терминальной машинке компонент присутствует.
Ну это так, моя догадка...
__________________
// no comments
Старый 20.06.2022, 18:22   #11  
axm2017 is offline
axm2017
Участник
 
1,937 / 317 (14) ++++++
Регистрация: 15.05.2017
Скорее походит имхо что они сбивают номер версии при переносе, с учетом утверждения что excel есть везде и прочее
Старый 20.06.2022, 18:32   #12  
gudzon is offline
gudzon
программист
 
1,166 / 324 (13) ++++++
Регистрация: 06.07.2004
Адрес: Москва
После обеда хотел уже переписать классы. А проблема сама пропала. Захожу - компилирую классы, и ошибки пропадают. Никто ничего не делал. Коллеги только правили никак с этим не связанный функционал. Эти классы древние - никто не трогает.
В общем не понятно, что это было.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX09: где найти библиотеку References\Microsoft.Office.Interop.Excel oleggy DAX: Программирование 6 24.05.2021 12:29
Microsoft.Office.Interop.Excel DmitryS DAX: Программирование 20 25.04.2014 12:24
emeadaxsupport: Microsoft Dynamics AX 2012 Office Addins tab does not appear in Microsoft Excel 2007 or Word 2007 on a 64bit Windows system Blog bot DAX Blogs 0 25.02.2012 05:42
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13

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

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

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