29.09.2016, 22:03 | #61 |
Участник
|
Цитата:
залезь и посмотри, какие версии установлены. не забывай также, что разные версии Excel требуют разной строки подключения в коде. там или прописывать весь зоопарк ноевого ковчега, или договориться, какая именно версия будет использоваться повсеместно.
__________________
Felix nihil admirari |
|
29.09.2016, 22:20 | #62 |
Участник
|
Ни на одном из серверов нет Access DataEngine
Офис у нас стоит одинаковый на обоих серверах Office 365 c Excel 2013. система Windows 2008 R2 SP1 При этом пакетник на тестовом сервере с аосом на нем же отрабатывает, а аналогичный пакетник на рабочем сервере также со своим аосом падает |
|
29.09.2016, 22:35 | #63 |
Участник
|
это как это? мы вообще об одном и том же говорим? если драйвера нет, то каким образом он к данным-то доступается?
выложи картинки ODBC32 ODBC64 с обоих серваков
__________________
Felix nihil admirari |
|
30.09.2016, 06:44 | #64 |
Участник
|
Цитата:
Сообщение от IvanS
В качестве апа.
Есть проблема открытия файла Excel в пакетнике. АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки. При чем никаких уведомлений не выдается как в АХ, так и Windows. try catch Exception::CLRError тоже ничего не перехватывает. А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает. Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше Бывает что catch срабатывает, но уже после защищенной секции идет обращение к методам нулевого объекта. Т.е. инфолог появляется, но вы не успеваете его заметить, т.к. аксапта уже упала. Попробуйте сделать паузу в catch, и изучить ошибки. Если интересно получить весь стек ошибок можно попробовать такой приемчик. Не знаю как для других версий, но для АХ4 требует подключить ссылку к библиотеке Microsoft.Dynamics.BusinessConnectorNet.dll, которая хранится в папке Client/Bin X++: public void run() { try { new InteropPermission(InteropKind::ClrInterop).assert(); // ... CLR code CodeAccessPermission::revertAssert(); } catch (Exception::CLRError) { this.clrWarning(); } } X++: public void clrWarning() { Microsoft.Dynamics.BusinessConnectorNet.BusinessConnectorException lastException; ; lastException = ClrInterop::getLastException(); while(lastException) { warning(lastException.get_Message()); lastException = lastException.get_InnerException(); } }
__________________
// no comments |
|
30.09.2016, 06:53 | #65 |
Участник
|
Цитата:
Сообщение от IvanS
Ни на одном из серверов нет Access DataEngine
Офис у нас стоит одинаковый на обоих серверах Office 365 c Excel 2013. система Windows 2008 R2 SP1 При этом пакетник на тестовом сервере с аосом на нем же отрабатывает, а аналогичный пакетник на рабочем сервере также со своим аосом падает
__________________
// no comments |
|
30.09.2016, 08:14 | #66 |
Участник
|
Цитата:
application_net и workbooks_net. В этой части все хорошо, ошибка падает на методе X++: workbook_net = workbooks_net.Open(_fileName, _updateLinks, _readOnly, _format, _password, _writeResPassword, _ignoreReadOnlyRecommended, origin, _delimiter, _editable, _notify, _converter, _addToMru, _local, _corruptLoad); Цитата:
Сообщение от dech
Еще может быть проблема, что на тестовом сервере у вас установлен клиент, а на рабочем - нет. И где-то в недрах вашего пакетника вызывается класс c RunOn=Client
Приложения в части Excel абсолютно одинаковые и у всех RunOn=CalledFrom, если бы ошибка была в этом была бы ругань на некорректную инициализацию классов, но все эти ошибки я давно исправил. |
|
30.09.2016, 08:26 | #67 |
Участник
|
Ситуация с ODBC одинаковая на обоих серверах. И при настройке выдается одинаковая ошибка, что она не установлена
|
|
30.09.2016, 19:09 | #68 |
Участник
|
Цитата:
после попытки открытия книги excel появляется в списке процессов?
__________________
Felix nihil admirari |
|
30.09.2016, 20:22 | #69 |
Участник
|
|
|
30.09.2016, 21:36 | #70 |
Участник
|
Цитата:
а когда запускаешь ту же задачу со стороны клиента, то что происходит?
__________________
Felix nihil admirari |
|
01.10.2016, 07:30 | #71 |
Участник
|
Цитата:
На клиенте работает аналогично. Создаются объекты SysExcel*Net, а дальше открывается/создается объект екселя и производит необходимые операции. На сервере он делает то же самое |
|
01.10.2016, 16:42 | #72 |
Участник
|
|
|
01.10.2016, 16:53 | #73 |
Участник
|
Семейство этих классов у нас работает на версиях Excel с 97 по 2013, но стоящих локально на ПК или серверах Citrix (насколько помню, при создании некоторых классов учитывается конкретная версия и версия клиетской Windows, но подробности навскидку не скажу).
Судя по всему, могут быть особенности именно Office 365. Но тут нужно смотреть даже не связку с Аксой, а отличия 365 от других версий. |
|
01.10.2016, 19:31 | #74 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Семейство этих классов у нас работает на версиях Excel с 97 по 2013, но стоящих локально на ПК или серверах Citrix (насколько помню, при создании некоторых классов учитывается конкретная версия и версия клиетской Windows, но подробности навскидку не скажу).
Судя по всему, могут быть особенности именно Office 365. Но тут нужно смотреть даже не связку с Аксой, а отличия 365 от других версий. |
|
01.10.2016, 21:40 | #75 |
Участник
|
Добрался до приложения. Там, действительно, есть различия при создании экземпляров некоторых SysExcel*_NET в зависимости от версии Excel и версии Windows.
Но у автора вопроса системы, где работает и где не работает полностью идентичны. Единственное предположение тогда в том, что настройки самого Excel различаются в плане настроек безопасности. Мы иногда попадаем на такие различия. Правда, при проверке обертывание вызовов при помощи try/catch это отлавливает. Конечно, хотелось бы иметь try/catch внутри классов SysExcel*_NET. Автор иерархии gl00mie выполнил прекрасную работу, но, если бы он реализовывал это в JAVA, то компилятор бы наказал за то, что нет определения того, как обрабатывать исключения (сам обрабатываю или делаю экскалацию на вызывающие методы).. Последний раз редактировалось Raven Melancholic; 01.10.2016 в 21:45. |
|
01.10.2016, 21:58 | #76 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Добрался до приложения. Там, действительно, есть различия при создании экземпляров некоторых SysExcel*_NET в зависимости от версии Excel и версии Windows.
Но у автора вопроса системы, где работает и где не работает полностью идентичны. Единственное предположение тогда в том, что настройки самого Excel различаются в плане настроек безопасности. Мы иногда попадаем на такие различия. Правда, при проверке обертывание вызовов при помощи try/catch это отлавливает. Конечно, хотелось бы иметь try/catch внутри классов SysExcel*_NET. Автор иерархии gl00mie выполнил прекрасную работу, но, если бы он реализовывал это в JAVA, то компилятор бы наказал за то, что нет определения того, как обрабатывать исключения (сам обрабатываю или делаю экскалацию на вызывающие методы).. |
|
02.10.2016, 10:54 | #77 |
Участник
|
Наверное уже пробовали, но на всякий случай спрошу.
Открывается этот файл вручную, если зайти на этот АОС под пользователем, под которым АОС работает, под пользователем, который запускает пакет? |
|
02.10.2016, 20:27 | #78 |
Участник
|
|
|
10.10.2016, 12:19 | #79 |
Участник
|
Написал джоб с вызовом на сервере и создание класса Excel также на сервере. Выпадает ошибка:
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "\\Aos-1\AxDocs\1.xls". Это может быть вызвано одной из следующих причин. • Указан несуществующий файл или путь. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент. --- Конец трассировки внутреннего стека исключений --- в System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) в System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) в System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args) в ClrBridgeImpl.InvokeClrInstanceMethod(ClrBridgeImpl* , ObjectWrapper* objectWrapper, Char* pszMethodName, Int32 argsLength, ObjectWrapper** arguments, Boolean* argsAreByRef, Boolean* isException) Как-то не понятно, почему ошибка Com объекта? Последний раз редактировалось IvanS; 10.10.2016 в 12:21. |
|
10.10.2016, 12:23 | #80 |
Участник
|
Разумеется ни одна из описанных причин не подпадает под наш вариант проблемы
|
|
Теги |
.net, ax2009, excel, законченный пример, полезное |
|
|