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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.02.2011, 07:47   #1  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Информация об ошибке пакетного задания
Доброго времени суток.
Как в AX2009 можно получить подробную информацию о причинах ошибки, когда пакетное задание отображается в журнале пакетных заданий со статусом "Ошибка"?
Спасибо.


Версия ядра 5.0.1000.52

Последний раз редактировалось Evgenius; 28.02.2011 в 07:49.
Старый 28.02.2011, 08:50   #2  
d&m is offline
d&m
MCT
Аватар для d&m
MCP
Manzana Group
MCBMSS
 
459 / 186 (7) ++++++
Регистрация: 11.09.2007
Записей в блоге: 6
Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try.
За это сообщение автора поблагодарили: kornix (3).
Старый 28.02.2011, 12:22   #3  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки "Журнал" сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.
__________________
Дмитрий
Старый 28.02.2011, 13:14   #4  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от d&m Посмотреть сообщение
Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал
Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом "Ошибка".
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова "Ошибка"
(уточню: я даже видел и нажимал кнопку "Журнал", при нажатии ничего не происходит)

Последний раз редактировалось Evgenius; 28.02.2011 в 13:18.
Старый 28.02.2011, 13:16   #5  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от Damn Посмотреть сообщение
Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки "Журнал" сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.
Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке "статус" надпись "Ошибка".

Последний раз редактировалось Evgenius; 28.02.2011 в 13:23.
Старый 28.02.2011, 13:18   #6  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Evgenius Посмотреть сообщение
Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом "Ошибка".
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова "Ошибка"
Если вы нажмете кнопку "Журнал", про которую говорит d&m, откроется infolog со списком ошибок, которые привели статус выполнения пакетного задания к "Ошибке".
Т.е. кнопка "Журнал" - имеется ввиду не журнал пакетных заданий, она выводит лог в infolog.

Упс... прошу прощения, опередили, пропустил :-/
Старый 28.02.2011, 13:26   #7  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Evgenius Посмотреть сообщение
Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке "статус" надпись "Ошибка".
Если в поле Info в таблице Batch контейнер абсолютно пуст - истории нет.
Старый 28.02.2011, 13:37   #8  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от kornix Посмотреть сообщение
Если в поле Info в таблице Batch контейнер абсолютно пуст - истории нет.
Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?
Старый 28.02.2011, 13:43   #9  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Evgenius Посмотреть сообщение
Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?
Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как "частный" пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?
Старый 28.02.2011, 13:44   #10  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Evgenius Посмотреть сообщение
И в чем м.б. причина того, что данные об ошибке не сохраняются?
Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.
Старый 28.02.2011, 14:02   #11  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от Zabr Посмотреть сообщение
Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.
Настроено повторение (т.е., статус задания обновляется периодически), и в последние дни сервер не падал
Старый 28.02.2011, 14:04   #12  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от kornix Посмотреть сообщение
Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как "частный" пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?
Класс - свой, но опробованный на запасном сервере (задание отрабатывало нормально) и потом перенесенный через xpo-файл.

Попробую ваш совет с частным пакетом, чуть погодя. До сих пор "частными пакетами" не пользоватлся...
Старый 28.02.2011, 16:20   #13  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
После очередного перезапуска сервера (третьего) и ручного изменения статуса на "В ожидании" задание запустилось.
Теперь имеет место знакомое дурацкое сообщение
"Ошибка вызова статического метода ClrObject", которое может означать очень много что.
Нет ли способа вот об этой ошибке "вызова метода ClrObject" узнавать какие-либо подробности?
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях - только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?
Старый 28.02.2011, 17:11   #14  
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   #15  
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:41   #16  
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   #17  
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, 17:55   #18  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 429 (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   #19  
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, 18:12   #20  
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, время: 13:08.