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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.02.2011, 16:20   #1  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
После очередного перезапуска сервера (третьего) и ручного изменения статуса на "В ожидании" задание запустилось.
Теперь имеет место знакомое дурацкое сообщение
"Ошибка вызова статического метода ClrObject", которое может означать очень много что.
Нет ли способа вот об этой ошибке "вызова метода ClrObject" узнавать какие-либо подробности?
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях - только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?
Старый 28.02.2011, 17:11   #2  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Evgenius Посмотреть сообщение
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях - только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?
Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку "Частный", указываете пакетную группу, затем:
Основное - Переодические операции - Пакет - Обработка, в диалоге указываете выбранную пакетную группу и ставите галку "частный".

А вот по поводу текста сообщения, при его создании у вас наверняка появилась запись в системных сообщениях, если найти его по дате и времени - увидите более полное содержимое ошибки.

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.
За это сообщение автора поблагодарили: Poleax (2), Evgenius (1).
Старый 28.02.2011, 17:35   #3  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от kornix Посмотреть сообщение
Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку "Частный", указываете пакетную группу, затем:
Основное - Переодические операции - Пакет - Обработка, в диалоге указываете выбранную пакетную группу и ставите галку "частный".

А вот по поводу текста сообщения, при его создании у вас наверняка появилась запись в системных сообщениях, если найти его по дате и времени - увидите более полное содержимое ошибки.

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.
Ок, частный пакет все-таки понадобится, понятно.
А насчет остального: CLR и COM вещи разные. И в журналах windows мне ни разу не удавалось ничего найти.. Там ошибки вызова объектов CLR точно отражаются, не читали чего-ндь про это?

С одной стороны, вроде бы должны - это ведь исключения в приложении .Net, но почему-то ни разу не отыскалось ни фига.

Последний раз редактировалось Evgenius; 28.02.2011 в 17:38.
Старый 28.02.2011, 17:55   #4  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
При исполнении CLR кода в аксапте перехват ошибок CLR происходит несколько иначе чем ошибки X++. Поэтому в логах пакетного задания не будет никакой информации, лишь сама пакетная задача переводится в статус "ошибка".

При использовании вызовов CLR методов придется всегда, в явном выиде ошибки перехватывать и парсить, иначе понять причины ошибки нельзя.

Вот пример, как получить описание ошибки вызванной исполнением CLR кода:

X++:
    System.Exception                    exception;
    ;
    try
    {
        ...  CLR
    }
    catch (Exception::CLRError)
    {
        exception = CLRInterop::getLastException();

        while (exception)
        {
            error(exception.get_Message());

            exception = exception.get_InnerException();
        }
        throw error("Операция отменена");
    }
За это сообщение автора поблагодарили: Evgenius (1).
Старый 28.02.2011, 18:07   #5  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от someOne Посмотреть сообщение
При исполнении CLR кода в аксапте перехват ошибок CLR происходит несколько иначе чем ошибки X++. Поэтому в логах пакетного задания не будет никакой информации, лишь сама пакетная задача переводится в статус "ошибка".

При использовании вызовов CLR методов придется всегда, в явном выиде ошибки перехватывать и парсить, иначе понять причины ошибки нельзя.

Вот пример, как получить описание ошибки вызванной исполнением CLR кода:

X++:
    System.Exception                    exception;
    ;
    try
    {
        ...  CLR
    }
    catch (Exception::CLRError)
    {
        exception = CLRInterop::getLastException();

        while (exception)
        {
            error(exception.get_Message());

            exception = exception.get_InnerException();
        }
        throw error("Операция отменена");
    }
Спасибо! В имеющейся под рукой книге то ли эта тема отдельно не выделена (CLRInterop), то ли вообще ни фига нет.
Пример - то, что нужно.
Старый 28.02.2011, 17:41   #6  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Evgenius Посмотреть сообщение
Нет ли способа вот об этой ошибке "вызова метода ClrObject" узнавать какие-либо подробности?
А вот это не используете ?
X++:
    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }
__________________
Дмитрий
За это сообщение автора поблагодарили: kornix (1), Evgenius (1).
Старый 28.02.2011, 17:50   #7  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Damn Посмотреть сообщение
А вот это не используете ?
X++:
    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }
Damn, у вас какая версия Ax? У меня в четверке такого нет
Старый 28.02.2011, 18:12   #8  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от Damn Посмотреть сообщение
А вот это не используете ?
X++:
throw error( AifUtil::getClrErrorMessage());
Последний ответ мне первым на глаза попался, но этот класс, похоже, также надо изучить.

Перепишу код задания с учетом подсказок, спасибо всем.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Настройка Axapta 3.0 (Array fetch ahead, Buffer size, событие ожидания в oracle 10G SQL*Net message to/from client ). Долго выполняются пакетные задания. NemoFF DAX: Администрирование 4 13.01.2011 11:01
Фильтр на FormDataSource сбрасывается при ошибке. wildguess DAX: Программирование 3 27.11.2009 09:29
Изменение типа задания в производстве Nic DAX: Функционал 34 26.10.2004 17:10
В браузере таблицы информация есть Natashka DAX: Функционал 10 12.02.2003 15:59
Производство - изменение Задания после Планирования LTA DAX: Функционал 2 30.01.2003 09:52

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

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

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