Ошибка вызова статического метода clrobject

AXForum

AXForum
(//axforum.info/forums/index.php)

Evgenius 28.02.2011 07:47

Информация об ошибке пакетного задания
 

Доброго времени суток.
Как в AX2009 можно получить подробную информацию о причинах ошибки, когда пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка»?
Спасибо.

Версия ядра 5.0.1000.52


Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал


Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.

Evgenius 28.02.2011 13:14

Цитата:


Сообщение от d&m
(Сообщение 244238)

Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал


Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»
(уточню: я даже видел и нажимал кнопку «Журнал», при нажатии ничего не происходит)

Evgenius 28.02.2011 13:16

Цитата:


Сообщение от Damn
(Сообщение 244261)

Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.


Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».


Цитата:


Сообщение от Evgenius
(Сообщение 244267)

Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»


Если вы нажмете кнопку «Журнал», про которую говорит d&m, откроется infolog со списком ошибок, которые привели статус выполнения пакетного задания к «Ошибке».
Т.е. кнопка «Журнал» — имеется ввиду не журнал пакетных заданий, она выводит лог в infolog.

Упс… прошу прощения, опередили, пропустил :-/


Цитата:


Сообщение от Evgenius
(Сообщение 244268)

Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».


Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.

Evgenius 28.02.2011 13:37

Цитата:


Сообщение от kornix
(Сообщение 244273)

Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.


Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?


Цитата:


Сообщение от Evgenius
(Сообщение 244278)

Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?


Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?


Цитата:


Сообщение от Evgenius
(Сообщение 244278)

И в чем м.б. причина того, что данные об ошибке не сохраняются?


Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.

Evgenius 28.02.2011 14:02

Цитата:


Сообщение от Zabr
(Сообщение 244282)

Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.


Настроено повторение (т.е., статус задания обновляется периодически), и в последние дни сервер не падал

Evgenius 28.02.2011 14:04

Цитата:


Сообщение от kornix
(Сообщение 244281)

Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?


Класс — свой, но опробованный на запасном сервере (задание отрабатывало нормально) и потом перенесенный через xpo-файл.

Попробую ваш совет с частным пакетом, чуть погодя. До сих пор «частными пакетами» не пользоватлся…

Evgenius 28.02.2011 16:20

После очередного перезапуска сервера (третьего) и ручного изменения статуса на «В ожидании» задание запустилось.
Теперь имеет место знакомое дурацкое сообщение
«Ошибка вызова статического метода ClrObject», которое может означать очень много что.
Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?


Цитата:


Сообщение от Evgenius
(Сообщение 244324)

И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?


Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.

Evgenius 28.02.2011 17:35

Цитата:


Сообщение от kornix
(Сообщение 244339)

Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.


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

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


Цитата:


Сообщение от Evgenius
(Сообщение 244324)

Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?


А вот это не используете ?

X++:


    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }



Цитата:


Сообщение от Damn
(Сообщение 244347)

А вот это не используете ?

X++:


    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }



Damn, у вас какая версия Ax? У меня в четверке такого нет :(


При исполнении 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 28.02.2011 18:07

Цитата:


Сообщение от someOne
(Сообщение 244354)

При исполнении 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), то ли вообще ни фига нет.
Пример — то, что нужно.

Evgenius 28.02.2011 18:12

Цитата:


Сообщение от Damn
(Сообщение 244347)

А вот это не используете ?

X++:


throw error( AifUtil::getClrErrorMessage());



Последний ответ мне первым на глаза попался, но этот класс, похоже, также надо изучить.

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

Часовой пояс GMT +3, время: 01:37.

Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация,
Реклама.

AXForum

AXForum
(//axforum.info/forums/index.php)

Evgenius 28.02.2011 07:47

Информация об ошибке пакетного задания
 

Доброго времени суток.
Как в AX2009 можно получить подробную информацию о причинах ошибки, когда пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка»?
Спасибо.

Версия ядра 5.0.1000.52


Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал


Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.

Evgenius 28.02.2011 13:14

Цитата:


Сообщение от d&m
(Сообщение 244238)

Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал


Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»
(уточню: я даже видел и нажимал кнопку «Журнал», при нажатии ничего не происходит)

Evgenius 28.02.2011 13:16

Цитата:


Сообщение от Damn
(Сообщение 244261)

Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.


Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».


Цитата:


Сообщение от Evgenius
(Сообщение 244267)

Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»


Если вы нажмете кнопку «Журнал», про которую говорит d&m, откроется infolog со списком ошибок, которые привели статус выполнения пакетного задания к «Ошибке».
Т.е. кнопка «Журнал» — имеется ввиду не журнал пакетных заданий, она выводит лог в infolog.

Упс… прошу прощения, опередили, пропустил :-/


Цитата:


Сообщение от Evgenius
(Сообщение 244268)

Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».


Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.

Evgenius 28.02.2011 13:37

Цитата:


Сообщение от kornix
(Сообщение 244273)

Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.


Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?


Цитата:


Сообщение от Evgenius
(Сообщение 244278)

Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?


Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?


Цитата:


Сообщение от Evgenius
(Сообщение 244278)

И в чем м.б. причина того, что данные об ошибке не сохраняются?


Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.

Evgenius 28.02.2011 14:02

Цитата:


Сообщение от Zabr
(Сообщение 244282)

Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.


Настроено повторение (т.е., статус задания обновляется периодически), и в последние дни сервер не падал

Evgenius 28.02.2011 14:04

Цитата:


Сообщение от kornix
(Сообщение 244281)

Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?


Класс — свой, но опробованный на запасном сервере (задание отрабатывало нормально) и потом перенесенный через xpo-файл.

Попробую ваш совет с частным пакетом, чуть погодя. До сих пор «частными пакетами» не пользоватлся…

Evgenius 28.02.2011 16:20

После очередного перезапуска сервера (третьего) и ручного изменения статуса на «В ожидании» задание запустилось.
Теперь имеет место знакомое дурацкое сообщение
«Ошибка вызова статического метода ClrObject», которое может означать очень много что.
Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?


Цитата:


Сообщение от Evgenius
(Сообщение 244324)

И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?


Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.

Evgenius 28.02.2011 17:35

Цитата:


Сообщение от kornix
(Сообщение 244339)

Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.


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

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


Цитата:


Сообщение от Evgenius
(Сообщение 244324)

Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?


А вот это не используете ?

X++:


    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }



Цитата:


Сообщение от Damn
(Сообщение 244347)

А вот это не используете ?

X++:


    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }



Damn, у вас какая версия Ax? У меня в четверке такого нет :(


При исполнении 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 28.02.2011 18:07

Цитата:


Сообщение от someOne
(Сообщение 244354)

При исполнении 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), то ли вообще ни фига нет.
Пример — то, что нужно.

Evgenius 28.02.2011 18:12

Цитата:


Сообщение от Damn
(Сообщение 244347)

А вот это не используете ?

X++:


throw error( AifUtil::getClrErrorMessage());



Последний ответ мне первым на глаза попался, но этот класс, похоже, также надо изучить.

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

Часовой пояс GMT +3, время: 09:36.

Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация,
Реклама.

Старый
28.02.2011, 07:47

#1
 

Участник

Информация об ошибке пакетного задания


Доброго времени суток.
Как в AX2009 можно получить подробную информацию о причинах ошибки, когда пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка»?
Спасибо.

Версия ядра 5.0.1000.52


Последний раз редактировалось Evgenius; 28.02.2011 в 07:49.

Старый
28.02.2011, 08:50

#2
 

MCT

 

Регистрация: 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
 

Участник

 

Регистрация: 28.05.2003

Адрес: Москва

Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.

__________________
Дмитрий

Старый
28.02.2011, 13:14

#4
 

Участник

Цитата:

Сообщение от d&m
Посмотреть сообщение

Основное / Запросы / Пакетное задание, далее кнопка Журнал пакетных заданий, далее кнопка Журнал

Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»
(уточню: я даже видел и нажимал кнопку «Журнал», при нажатии ничего не происходит)


Последний раз редактировалось Evgenius; 28.02.2011 в 13:18.

Старый
28.02.2011, 13:16

#5
 

Участник

Цитата:

Сообщение от Damn
Посмотреть сообщение

Удобнее будет модернизировать метод serverProcessFinishedJobs() в классе BatchRun и получать содержимое информационного сообщения из кнопки «Журнал» сразу в уведомлении об ошибке, которое приходит на электронную почту или во всплывающем окне. Чтоб лишний раз не лазить по формам пакетных заданий.

Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».


Последний раз редактировалось Evgenius; 28.02.2011 в 13:23.

Старый
28.02.2011, 13:18

#6
 

MCP

 

Регистрация: 24.02.2009

Адрес: Санкт-Петербург

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

Я же написал: пакетное задание отображается в журнале пакетных заданий со статусом «Ошибка».
Это означает, что я заглядывал в журнал пакетных заданий.
Меня интересует хоть что-то, кроме слова «Ошибка»

Если вы нажмете кнопку «Журнал», про которую говорит d&m, откроется infolog со списком ошибок, которые привели статус выполнения пакетного задания к «Ошибке».
Т.е. кнопка «Журнал» — имеется ввиду не журнал пакетных заданий, она выводит лог в infolog.

Упс… прошу прощения, опередили, пропустил :-/

Старый
28.02.2011, 13:26

#7
 

MCP

 

Регистрация: 24.02.2009

Адрес: Санкт-Петербург

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

Уведомлений нет (хотя они настроены, в том числе на эл. почту). Есть только запись в журнале пакетных заданий, где в колонке «статус» надпись «Ошибка».

Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.

Старый
28.02.2011, 13:37

#8
 

Участник

Цитата:

Сообщение от kornix
Посмотреть сообщение

Если в поле Info в таблице Batch контейнер абсолютно пуст — истории нет.

Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?

Старый
28.02.2011, 13:43

#9
 

MCP

 

Регистрация: 24.02.2009

Адрес: Санкт-Петербург

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

Пуст.
Как быть? И в чем м.б. причина того, что данные об ошибке не сохраняются?

Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?

Старый
28.02.2011, 13:44

#10
 

Участник

Axapta Retail User

 

Регистрация: 26.06.2002

Адрес: Москва

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

И в чем м.б. причина того, что данные об ошибке не сохраняются?

Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.

Старый
28.02.2011, 14:02

#11
 

Участник

Цитата:

Сообщение от Zabr
Посмотреть сообщение

Чтобы текст ошибки сохранился, нужно чтобы он вообще был. Если в процессе выполнения вырубили электричество или накрылся сервер или сеть или еще что, то никакого сообщения в Аксапте может и не быть.

Настроено повторение (т.е., статус задания обновляется периодически), и в последние дни сервер не падал

Старый
28.02.2011, 14:04

#12
 

Участник

Цитата:

Сообщение от kornix
Посмотреть сообщение

Пробовали запускать операцию в обычном режиме?
Попробуйте запустить пакет вручную как «частный» пакет от себя, поставьте точку останова в методе pack и unpack вашего класса и посмотрите корректно ли сохраняются параметры при запаковке и распаковке класса.
P.S. А класс который не оставил сообщения стандартный или свой?

Класс — свой, но опробованный на запасном сервере (задание отрабатывало нормально) и потом перенесенный через xpo-файл.

Попробую ваш совет с частным пакетом, чуть погодя. До сих пор «частными пакетами» не пользоватлся…

Старый
28.02.2011, 16:20

#13
 

Участник

После очередного перезапуска сервера (третьего) и ручного изменения статуса на «В ожидании» задание запустилось.
Теперь имеет место знакомое дурацкое сообщение
«Ошибка вызова статического метода ClrObject», которое может означать очень много что.
Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?
И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?

Старый
28.02.2011, 17:11

#14
 

MCP

 

Регистрация: 24.02.2009

Адрес: Санкт-Петербург

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

И заодно уже вопрос: как отлаживать код, выполняющийся в пакетных заданиях — только путем создания джоба (job) и его запуска в клиенте, или можно напрямую?

Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.

За это сообщение автора поблагодарили: Poleax (2), Evgenius (1).

Старый
28.02.2011, 17:35

#15
 

Участник

Цитата:

Сообщение от kornix
Посмотреть сообщение

Отлаживать код пакетных заданий можно при помощи частных пакетов: При запуске ставите галку «Частный», указываете пакетную группу, затем:
Основное — Переодические операции — Пакет — Обработка, в диалоге указываете выбранную пакетную группу и ставите галку «частный».

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

Более полное описание из Ax получить можно, но тут для каждого com придется писать свой обработчик ошибок, и не для каждого получится.. Например, тут обсуждалась похожая ошибка, ее причину установить достаточно проблематично.

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

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


Последний раз редактировалось Evgenius; 28.02.2011 в 17:38.

Старый
28.02.2011, 17:41

#16
 

Участник

 

Регистрация: 28.05.2003

Адрес: Москва

Цитата:

Сообщение от Evgenius
Посмотреть сообщение

Нет ли способа вот об этой ошибке «вызова метода ClrObject» узнавать какие-либо подробности?

А вот это не используете ?

X++:

    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }

__________________
Дмитрий

За это сообщение автора поблагодарили: kornix (1), Evgenius (1).

Старый
28.02.2011, 17:50

#17
 

MCP

 

Регистрация: 24.02.2009

Адрес: Санкт-Петербург

Цитата:

Сообщение от Damn
Посмотреть сообщение

А вот это не используете ?

X++:

    try
    {
    }
    catch (Exception::CLRError)
    {
        throw error( AifUtil::getClrErrorMessage());
    }

Damn, у вас какая версия Ax? У меня в четверке такого нет

Старый
28.02.2011, 17:55

#18
 

Участник

Аватар для someOne

 

Регистрация: 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
 

Участник

Цитата:

Сообщение от 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
 

Участник

Цитата:

Сообщение от Damn
Посмотреть сообщение

А вот это не используете ?

X++:

throw error( AifUtil::getClrErrorMessage());

Последний ответ мне первым на глаза попался, но этот класс, похоже, также надо изучить.

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

I have a DLL with a class TestService.TestServiceWebClient.
It’s constructor has two parameters, one of type string, and the other one is of type TestService.TestServiceWebClient.MODE which is an enum.

In C#, I use this easily with the code below.

string secret;
secret = "asdfasdf";

TestService.TestServiceWebClient test = new TestService.TestServiceWebClient(secret, TestService.TestServiceWebClient.MODE.TEST);

test.setGroupForCustomer("test@foo.com", "12345", "TestService.TestServiceWebClient.CUST_GROUPS.MILITARY);

In AX, I’m having some trouble. I know the DLL is referenced properly because I see the parameters when I create an instance of the class, but I’m getting errors such as

The class TestService does not contain this function

when I use the keyword new:

TestService test;
;
test = new TestService.TestServiceWebClient(secret, "");

I’ve also tried…

TestService.TestServiceWebClient test;
;
test = new TestService.TestServiceWebClient(secret, "");

That second argument is NOT a string, so when I try to add an enum, I get

enumeration doesn’t exist…

TestService test;
;
test = new TestService.TestServiceWebClient(secret, TestService.TestServiceWebClient.MODE::TEST);

Do I need an enum created in AX that would map to the enums from my DLL?

C# Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Collections.Specialized;

namespace ProductService
{
    public class TestWebClient
    {
        public enum CUST_GROUPS
        {
            NOT_LOGGED_IN,
            GENERAL,
            WHOLESALE,
            RETAILER,
            TEST_REVIEWS,
            COTM_DISCOUNT,
            MILITARY,
            FIRST_RESPONDER
        };

        public enum MODE
        {
            DEV,
            TEST,
            PROD
        }
        public static int COTM_GROUP_ID = 5;
        public static int GENERAL_GROUP_ID = 1;

        private string presharedSecret;

        private string BASE_URL;

        private static string destinationPathPut = "/path";
        private static string destinationPathGet = "/pathgroup";
        public TestWebClient(String presharedSecret, MODE mode)
        {
            this.presharedSecret = presharedSecret;
            switch (mode)
            {
                case MODE.DEV:
                    BASE_URL = "http://dev";
                    break;
                case MODE.TEST:
                    BASE_URL = "http://test";
                    break;
                case MODE.PROD:
                    BASE_URL = "https://prod";
                    break;
            }
        }

        public bool setGroupForCustomer(string customerEmail, string customerId, CUST_GROUPS selectedGroup)
        {
            WebClient client = new WebClient();
            try
            {
                NameValueCollection requestParams = new NameValueCollection();
                requestParams.Add("customer_id", customerId);
                requestParams.Add("email", customerEmail);
                requestParams.Add("group_id", ((int)selectedGroup).ToString());
                requestParams.Add("signature", Util.sha1Hash(customerId.ToString() + ((int)selectedGroup).ToString() + customerEmail + presharedSecret));
                byte[] response = client.UploadValues(BASE_URL + "/" + destinationPathPut,
                    requestParams
                );
                string result = System.Text.Encoding.UTF8.GetString(response);
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                client.Dispose();
            }
            return true;
        }

        public bool isInGroup(string customerEmail, string customerId, CUST_GROUPS selectedGroup)
        {
            WebClient client = new WebClient();
            NameValueCollection requestParams = new NameValueCollection();
            requestParams.Add("customer_id", customerId);
            requestParams.Add("email", customerEmail);
            requestParams.Add("group_id", ((int)selectedGroup).ToString());
            requestParams.Add("signature", Util.sha1Hash(customerId.ToString() + ((int)selectedGroup).ToString() + customerEmail + presharedSecret));
            byte[] response = client.UploadValues(BASE_URL + "/" + destinationPathGet,
                 requestParams
            );
            string result = System.Text.Encoding.UTF8.GetString(response);
            client.Dispose();
            System.Diagnostics.Debug.WriteLine(result);
            return result.Equals("true");
        }
    }
}

I have a DLL with a class TestService.TestServiceWebClient.
It’s constructor has two parameters, one of type string, and the other one is of type TestService.TestServiceWebClient.MODE which is an enum.

In C#, I use this easily with the code below.

string secret;
secret = "asdfasdf";

TestService.TestServiceWebClient test = new TestService.TestServiceWebClient(secret, TestService.TestServiceWebClient.MODE.TEST);

test.setGroupForCustomer("test@foo.com", "12345", "TestService.TestServiceWebClient.CUST_GROUPS.MILITARY);

In AX, I’m having some trouble. I know the DLL is referenced properly because I see the parameters when I create an instance of the class, but I’m getting errors such as

The class TestService does not contain this function

when I use the keyword new:

TestService test;
;
test = new TestService.TestServiceWebClient(secret, "");

I’ve also tried…

TestService.TestServiceWebClient test;
;
test = new TestService.TestServiceWebClient(secret, "");

That second argument is NOT a string, so when I try to add an enum, I get

enumeration doesn’t exist…

TestService test;
;
test = new TestService.TestServiceWebClient(secret, TestService.TestServiceWebClient.MODE::TEST);

Do I need an enum created in AX that would map to the enums from my DLL?

C# Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Collections.Specialized;

namespace ProductService
{
    public class TestWebClient
    {
        public enum CUST_GROUPS
        {
            NOT_LOGGED_IN,
            GENERAL,
            WHOLESALE,
            RETAILER,
            TEST_REVIEWS,
            COTM_DISCOUNT,
            MILITARY,
            FIRST_RESPONDER
        };

        public enum MODE
        {
            DEV,
            TEST,
            PROD
        }
        public static int COTM_GROUP_ID = 5;
        public static int GENERAL_GROUP_ID = 1;

        private string presharedSecret;

        private string BASE_URL;

        private static string destinationPathPut = "/path";
        private static string destinationPathGet = "/pathgroup";
        public TestWebClient(String presharedSecret, MODE mode)
        {
            this.presharedSecret = presharedSecret;
            switch (mode)
            {
                case MODE.DEV:
                    BASE_URL = "http://dev";
                    break;
                case MODE.TEST:
                    BASE_URL = "http://test";
                    break;
                case MODE.PROD:
                    BASE_URL = "https://prod";
                    break;
            }
        }

        public bool setGroupForCustomer(string customerEmail, string customerId, CUST_GROUPS selectedGroup)
        {
            WebClient client = new WebClient();
            try
            {
                NameValueCollection requestParams = new NameValueCollection();
                requestParams.Add("customer_id", customerId);
                requestParams.Add("email", customerEmail);
                requestParams.Add("group_id", ((int)selectedGroup).ToString());
                requestParams.Add("signature", Util.sha1Hash(customerId.ToString() + ((int)selectedGroup).ToString() + customerEmail + presharedSecret));
                byte[] response = client.UploadValues(BASE_URL + "/" + destinationPathPut,
                    requestParams
                );
                string result = System.Text.Encoding.UTF8.GetString(response);
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                client.Dispose();
            }
            return true;
        }

        public bool isInGroup(string customerEmail, string customerId, CUST_GROUPS selectedGroup)
        {
            WebClient client = new WebClient();
            NameValueCollection requestParams = new NameValueCollection();
            requestParams.Add("customer_id", customerId);
            requestParams.Add("email", customerEmail);
            requestParams.Add("group_id", ((int)selectedGroup).ToString());
            requestParams.Add("signature", Util.sha1Hash(customerId.ToString() + ((int)selectedGroup).ToString() + customerEmail + presharedSecret));
            byte[] response = client.UploadValues(BASE_URL + "/" + destinationPathGet,
                 requestParams
            );
            string result = System.Text.Encoding.UTF8.GetString(response);
            client.Dispose();
            System.Diagnostics.Debug.WriteLine(result);
            return result.Equals("true");
        }
    }
}

Добрый день,
C# SDK 1.76, Framework 3.5

Исходящий документ, сформировал и заполнил переменную UniversalTransferDocument типа Diadoc.Api.DataXml.Utd820.UniversalTransferDocument, вызываю сериализацию объекта для последующей передачи в GenerateSenderTitleXml():

Вопроса 2, в каждом из вариантов.

Diadoc.Api.DataXml.Utd820.UniversalTransferDocument      universalTransferDocument; 
System.Byte[] contract;
;

1 вариант
contract = CLRInterop::staticInvoke('Diadoc.Api.XmlSerializerExtensions', 'SerializeToXml', universalTransferDocument);
Валится с внутренней ошибкой «Ошибка вызова статического метода ClrObject».
Мы должны передавать в метод эту переменную или над ней нужно провести доп операции ?
Возможно, проблема с моей стороны, но причину пока понять не могу.

Реализация метода
https://github.com/diadoc/diadocsdk-csharp/blob/a50fb514cc040bdca51e24e44f6e3ab4052d6ac2/src/XmlSerializerExtensions.cs

2 вариант
Использую самописную сериализацию, не полностью идентичную из апи, для теста отправки.

this.serializeToXml(universalTransferDocument);

public System.Byte[] serializeToXml(CLRObject _object)
{
    System.Xml.Serialization.XmlSerializer              xmlSerializer;    
    System.IO.MemoryStream                              xml;
    System.Type                                         type = _object.GetType();
    System.Byte[]                                       content;
    ;
	
    xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
    xml = new System.IO.MemoryStream();
    xmlSerializer.Serialize(xml, _object);    
    content = xml.ToArray();
    return content;
}

Сериализация проходит, но в GenerateSenderTitleXml() получаю ошибку

«There was an error generating the XML document. The type Diadoc.Api.DataXml.Utd820.Address was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.»

Что довольно странно на самом деле.
Invoice, СЧФДОП.
Нужно приводить самописную реализацию к виду официальной или адрес действительно не сериализуется ?

Я использую веб-службу отдыха в работе в AX 2012.

Я использую UTF-8, и когда я запускаю свою работу, я получаю ошибку: «CLRObject» не может быть [!]

dataStream = response.GetResponseStream();

мой код:

  postData = strfmt('My json');

new InteropPermission = «my URL»;

request = System.Net.WebRequest :: Создать (url);

System.Net.ServicePointManager :: set_Expect100Continue (false);

request.set_Method («POST»);

utf8 = System.Text.Encoding :: get_UTF8 ();

byteArray = utf8.GetBytes (postData);

request.set_ContentType («application / JSON»);

request.set_ContentLength (byteArray.get_Length ());

dataStream = request.GetRequestStream (); [ ! d12]

dataStream.Write (byteArray, 0, byteArray.get_Length ());

dataStream.Close (); try

{

   response = request.GetResponse();

}

catch (Exception :: CLRError)

{

postdata = «»;

}

dataStream = response.GetResponseStream ();

streamReader = новый System.IO.StreamReader (dataStream);

returnValue = streamReader.ReadToEnd ();

, пожалуйста, сообщите, что для тех же URL-адресов и почтовых данных (JSON) я могу получить правильные данные в Postman (), но я столкнулся с проблемой в AX.

, и я знаю, что что-то не так с моим Unicode, потому что, когда я тестирую то же, что и выше, с другим URL-адресом и данными для другого веб-сервиса, это приводит к ответу на меня, что в нем все «& amp;» символы заменяются на Unicode « u0026» !!!!!

не могли бы вы мне помочь?

Я пытаюсь принудительно открыть диалоговое окно печати, чтобы все, что нужно сделать пользователю, это установить адрес электронной почты и нажать «ОК». Я нашел несколько руководств о том, как распечатать отчет в файл или на принтер без диалогового окна печати, но это не то, что я ищу.

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

Это одна из моих многочисленных попыток сделать это до сих пор, но безрезультатно.

void emailInvoice()
{
Args                args;
ReportRun           rr;
Report              rb;
PrintJobSettings    pjs;
CustInvoiceJour     record;
;

select record where record.RecId == 5637175089;

args = new Args("SalesInvoice");
args.record(record);
args.parmEnum(PrintCopyOriginal::OriginalPrint);

// Set report run properties
rr = new ReportRun(args,'');
rr.suppressReportIsEmptyMessage(true);
rr.query().interactive(false);

// set report properties
rb = rr.report();
rb.interactive(true);

// set print job settings
pjs = rr.printJobSettings();
pjs.fileName(strfmt("C:UsersgbonzoDesktop%1.pdf", record.SalesId));
pjs.fitToPage(true);
// break the report info pages using the height of the current printer's paper
pjs.virtualPageHeight(-1);


// force PDF printing
pjs.format(PrintFormat::PDF);
pjs.setTarget(PrintMedium::Mail);
pjs.viewerType(ReportOutputUserType::PDF);

// lock the print job settings so can't be changed
// X++ code int the report may try to change the destination
// to the screen for example but this does not make
// sense when running a report here
pjs.lockDestinationProperties(true);

// Initialize the report
rr.init();

rr.run();
}

Заранее спасибо за вашу помощь!

RE: Ax 2009 Workflow

Post by usenet » Tue Sep 23, 2008 8:55 am
HI,

You vave installed one .Net Business Connector, and created two
configurations in the AX Config. Utility for the Business Connector, Right ?
Only one AX Configuration can be active at the same time. You have to
activate the second if you want, but the first will no work anymore.
I use IISReset DOS command to take in account a new . Net Business Connector
configuration… it’s may be a quick and dirty solution.

Greets,
Vijay

Reply

I am attempting to force open the print dialog so that all the user has to do is set the email address and press ok. I’ve found multiple tutorials on how to print a report to file or a printer without the print dialog, but that’s not what I’m looking for.

Typically to email a report, the user displays the report, clicks the print icon in the tool bar, and then chooses email and sends it. I want to cut out the first two steps automatically.

This is one of my many attempts at doing this so far, but to no avail.

void emailInvoice()
{
Args                args;
ReportRun           rr;
Report              rb;
PrintJobSettings    pjs;
CustInvoiceJour     record;
;

select record where record.RecId == 5637175089;

args = new Args("SalesInvoice");
args.record(record);
args.parmEnum(PrintCopyOriginal::OriginalPrint);

// Set report run properties
rr = new ReportRun(args,'');
rr.suppressReportIsEmptyMessage(true);
rr.query().interactive(false);

// set report properties
rb = rr.report();
rb.interactive(true);

// set print job settings
pjs = rr.printJobSettings();
pjs.fileName(strfmt("C:\Users\gbonzo\Desktop\%1.pdf", record.SalesId));
pjs.fitToPage(true);
// break the report info pages using the height of the current printer's paper
pjs.virtualPageHeight(-1);


// force PDF printing
pjs.format(PrintFormat::PDF);
pjs.setTarget(PrintMedium::Mail);
pjs.viewerType(ReportOutputUserType::PDF);

// lock the print job settings so can't be changed
// X++ code int the report may try to change the destination
// to the screen for example but this does not make
// sense when running a report here
pjs.lockDestinationProperties(true);

// Initialize the report
rr.init();

rr.run();
}

Thanks in advance for your help!

Добрый день,
C# SDK 1.76, Framework 3.5

Исходящий документ, сформировал и заполнил переменную UniversalTransferDocument типа Diadoc.Api.DataXml.Utd820.UniversalTransferDocument, вызываю сериализацию объекта для последующей передачи в GenerateSenderTitleXml():

Вопроса 2, в каждом из вариантов.

Diadoc.Api.DataXml.Utd820.UniversalTransferDocument      universalTransferDocument; 
System.Byte[] contract;
;

1 вариант
contract = CLRInterop::staticInvoke('Diadoc.Api.XmlSerializerExtensions', 'SerializeToXml', universalTransferDocument);
Валится с внутренней ошибкой «Ошибка вызова статического метода ClrObject».
Мы должны передавать в метод эту переменную или над ней нужно провести доп операции ?
Возможно, проблема с моей стороны, но причину пока понять не могу.

Реализация метода
https://github.com/diadoc/diadocsdk-csharp/blob/a50fb514cc040bdca51e24e44f6e3ab4052d6ac2/src/XmlSerializerExtensions.cs

2 вариант
Использую самописную сериализацию, не полностью идентичную из апи, для теста отправки.

this.serializeToXml(universalTransferDocument);

public System.Byte[] serializeToXml(CLRObject _object)
{
    System.Xml.Serialization.XmlSerializer              xmlSerializer;    
    System.IO.MemoryStream                              xml;
    System.Type                                         type = _object.GetType();
    System.Byte[]                                       content;
    ;
	
    xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
    xml = new System.IO.MemoryStream();
    xmlSerializer.Serialize(xml, _object);    
    content = xml.ToArray();
    return content;
}

Сериализация проходит, но в GenerateSenderTitleXml() получаю ошибку

«There was an error generating the XML document. The type Diadoc.Api.DataXml.Utd820.Address was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.»

Что довольно странно на самом деле.
Invoice, СЧФДОП.
Нужно приводить самописную реализацию к виду официальной или адрес действительно не сериализуется ?

  • Ошибка выполнения запроса mysql
  • Ошибка выполнения запроса 403 утм
  • Ошибка выполнения команды gksu system config samba
  • Ошибка выполнения действия отправить документы на сервере
  • Ошибка выполнения квитирования связи tls evolution