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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2016, 22:03   #61  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от IvanS Посмотреть сообщение
Но ведь на параллельном сервере все работает без каких-либо дополнительных операций- это и смущает
так на параллельном сервере, наверное, и стоит "правильная" 64-разрядная сестра.

залезь и посмотри, какие версии установлены.

не забывай также, что разные версии Excel требуют разной строки подключения в коде. там или прописывать весь зоопарк ноевого ковчега, или договориться, какая именно версия будет использоваться повсеместно.
__________________
Felix nihil admirari
Старый 29.09.2016, 22:20   #62  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Ни на одном из серверов нет Access DataEngine
Офис у нас стоит одинаковый на обоих серверах Office 365 c Excel 2013.
система Windows 2008 R2 SP1
При этом пакетник на тестовом сервере с аосом на нем же отрабатывает,
а аналогичный пакетник на рабочем сервере также со своим аосом падает
Старый 29.09.2016, 22:35   #63  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от IvanS Посмотреть сообщение
Ни на одном из серверов нет Access DataEngine
это как это? мы вообще об одном и том же говорим? если драйвера нет, то каким образом он к данным-то доступается?

выложи картинки ODBC32 ODBC64 с обоих серваков
__________________
Felix nihil admirari
Старый 30.09.2016, 06:44   #64  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от IvanS Посмотреть сообщение
В качестве апа.
Есть проблема открытия файла Excel в пакетнике.
АХ2009, Office 2013, в пакетном режиме в момент отработки кода открытия книги просто падает обработки.
При чем никаких уведомлений не выдается как в АХ, так и Windows.
try catch Exception::CLRError тоже ничего не перехватывает.
А еще самое интересное в аналогичной тестовой среде все работает отлично и без ошибок, а вот на рабочей как назло падает.
Поэтому вопрос как минимум понять, что за ошибка мешает корректной работе в рабочей среде? А от неё уже смотреть дальше
Скорее всего у вас один из .NET объектов возвращает null. А затем уже при обращении к его методам падает вся аксапта. Сделайте проверку на null.
Бывает что 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  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от IvanS Посмотреть сообщение
Ни на одном из серверов нет Access DataEngine
Офис у нас стоит одинаковый на обоих серверах Office 365 c Excel 2013.
система Windows 2008 R2 SP1
При этом пакетник на тестовом сервере с аосом на нем же отрабатывает,
а аналогичный пакетник на рабочем сервере также со своим аосом падает
Еще может быть проблема, что на тестовом сервере у вас установлен клиент, а на рабочем - нет. И где-то в недрах вашего пакетника вызывается класс c RunOn=Client
__________________
// no comments
Старый 30.09.2016, 08:14   #66  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от dech Посмотреть сообщение
Скорее всего у вас один из .NET объектов возвращает null. А затем уже при обращении к его методам падает вся аксапта. Сделайте проверку на null.
Все создается и не нулевое, наделал везде проверок на инициализацию объектов .Net.
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 Посмотреть сообщение
Попробуйте сделать паузу в catch
в catch вообще не попадает нигде
Цитата:
Сообщение от dech
Еще может быть проблема, что на тестовом сервере у вас установлен клиент, а на рабочем - нет. И где-то в недрах вашего пакетника вызывается класс c RunOn=Client
Клиент установлен на обоих серверах, версии абсолютно одинаковые.
Приложения в части Excel абсолютно одинаковые и у всех RunOn=CalledFrom, если бы ошибка была в этом была бы ругань на некорректную инициализацию классов, но все эти ошибки я давно исправил.
Старый 30.09.2016, 08:26   #67  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от wojzeh Посмотреть сообщение
это как это? мы вообще об одном и том же говорим? если драйвера нет, то каким образом он к данным-то доступается?
выложи картинки ODBC32 ODBC64 с обоих серваков
Ситуация с ODBC одинаковая на обоих серверах. И при настройке выдается одинаковая ошибка, что она не установлена
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 142
Размер:	73.4 Кб
ID:	10975  
Старый 30.09.2016, 19:09   #68  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от IvanS Посмотреть сообщение
Ситуация с ODBC одинаковая на обоих серверах. И при настройке выдается одинаковая ошибка, что она не установлена
их же две! 32 и 64. нужно смотреть обе.

после попытки открытия книги excel появляется в списке процессов?
__________________
Felix nihil admirari
Старый 30.09.2016, 20:22   #69  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от wojzeh Посмотреть сообщение
их же две! 32 и 64. нужно смотреть обе.
А что по ним смотреть, если ни по одной настройка не открывается?
Цитата:
Сообщение от wojzeh Посмотреть сообщение
после попытки открытия книги excel появляется в списке процессов?
Да, процесс екселя открывает и остается висеть
Старый 30.09.2016, 21:36   #70  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от IvanS Посмотреть сообщение
А что по ним смотреть, если ни по одной настройка не открывается?

Да, процесс екселя открывает и остается висеть
на сервере не нужен офис совсем, для доступа к данным - если я верно понимаю задачу, то для выгрузки данных из аксы в эксельный файл - нужен microsoft Access Database Engine, его и надо поставить.

а когда запускаешь ту же задачу со стороны клиента, то что происходит?
__________________
Felix nihil admirari
Старый 01.10.2016, 07:30   #71  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от wojzeh Посмотреть сообщение
на сервере не нужен офис совсем, для доступа к данным - если я верно понимаю задачу, то для выгрузки данных из аксы в эксельный файл - нужен microsoft Access Database Engine, его и надо поставить.
а когда запускаешь ту же задачу со стороны клиента, то что происходит?
в нашем случае офис как раз нужен без него не не запускается процедура экспорта или импорта.
На клиенте работает аналогично.
Создаются объекты SysExcel*Net, а дальше открывается/создается объект екселя и производит необходимые операции.
На сервере он делает то же самое
Старый 01.10.2016, 16:42   #72  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от wojzeh Посмотреть сообщение
на сервере не нужен офис совсем
Для классов SysExcel как раз он обязателен.
Вы, скорее всего, имеете ввиду классы DAX2012, связанные с OXML.
Старый 01.10.2016, 16:53   #73  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Семейство этих классов у нас работает на версиях Excel с 97 по 2013, но стоящих локально на ПК или серверах Citrix (насколько помню, при создании некоторых классов учитывается конкретная версия и версия клиетской Windows, но подробности навскидку не скажу).
Судя по всему, могут быть особенности именно Office 365. Но тут нужно смотреть даже не связку с Аксой, а отличия 365 от других версий.
Старый 01.10.2016, 19:31   #74  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Семейство этих классов у нас работает на версиях Excel с 97 по 2013, но стоящих локально на ПК или серверах Citrix (насколько помню, при создании некоторых классов учитывается конкретная версия и версия клиетской Windows, но подробности навскидку не скажу).
Судя по всему, могут быть особенности именно Office 365. Но тут нужно смотреть даже не связку с Аксой, а отличия 365 от других версий.
Ровно так и работает у нас. И сервера делались одинаковые соответственно софт одинаковый, но вот падает только на рабочем. Загадка и понять в чем проблема не получается
Старый 01.10.2016, 21:40   #75  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Добрался до приложения. Там, действительно, есть различия при создании экземпляров некоторых 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  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Добрался до приложения. Там, действительно, есть различия при создании экземпляров некоторых SysExcel*_NET в зависимости от версии Excel и версии Windows.
Но у автора вопроса системы, где работает и где не работает полностью идентичны. Единственное предположение тогда в том, что настройки самого Excel различаются в плане настроек безопасности.
Мы иногда попадаем на такие различия. Правда, при проверке обертывание вызовов при помощи try/catch это отлавливает.
Конечно, хотелось бы иметь try/catch внутри классов SysExcel*_NET. Автор иерархии gl00mie выполнил прекрасную работу, но, если бы он реализовывал это в JAVA, то компилятор бы наказал за то, что нет определения того, как обрабатывать исключения (сам обрабатываю или делаю экскалацию на вызывающие методы)..
Первым делом полез смотреть именно настройки безопасности, все аналогично
Старый 02.10.2016, 10:54   #77  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Наверное уже пробовали, но на всякий случай спрошу.
Открывается этот файл вручную, если зайти на этот АОС под пользователем, под которым АОС работает, под пользователем, который запускает пакет?
Старый 02.10.2016, 20:27   #78  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Наверное уже пробовали, но на всякий случай спрошу.
Открывается этот файл вручную, если зайти на этот АОС под пользователем, под которым АОС работает, под пользователем, который запускает пакет?
да конечно- это тоже проверял, все открывается
Старый 10.10.2016, 12:19   #79  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Написал джоб с вызовом на сервере и создание класса 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  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Разумеется ни одна из описанных причин не подпадает под наш вариант проблемы
Теги
.net, ax2009, excel, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
проблема использования Excel через clr Batuev Artem DAX: Программирование 8 22.08.2011 18:01
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
Импорт даты через Excel OliaM DAX: Функционал 2 13.12.2007 10:32
Экспорт в Excel через WorkBooks.OpenText() Владимир Максимов DAX: Программирование 2 09.04.2004 17:16
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18

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

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

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