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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.11.2009, 23:57   #1  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
в том-то и дело, что транзакции все внутри try/catch. попробую сейчас изобразить листинг.

вот функция, которую вызывает внешняя программа и в которой всё происходит:

X++:
public Anytype updateTable(tableId _tablenum, TransTypes   _type, recId    _recId = 0, Container _values = connull())
{
    anytype  _object    =   new DictTable(_tablenum).makeRecord();

    int                     logPoint;
    int                     line;
    Container               c;

    ;

    buffer = _object;


    logPoint = infolog.num();

    try
    {
        switch (_type)
        {
            case (TransTypes::RecSelect)  :
                break;

            case (TransTypes::RecInsert)  :
                _object = this.RecInsert(_object, _recId, _values);
                break;

            case (TransTypes::RecUpdate)  :
                _object = this.RecUpdate(_object, _recid, _values);
                break;

            case(TransTypes::RecDelete)   :
                _object = this.RecDelete(_object, _recId, _values);
                break;
        }
    }
    catch (exception::Break)
    {
        abs(1);
    }
    catch (exception::DDEerror)
    {
        abs(1);
    }
    catch (exception::Deadlock)
    {
        abs(1);
    }
    catch (exception::Error)
    {
        abs(1);
    }
    catch (exception::Info)
    {
        abs(1);
    }
    catch (exception::Internal)
    {
        abs(1);
    }
    catch (exception::Numeric)
    {
        abs(1);
    }
    catch (exception::Sequence)
    {
        abs(1);
    }
    catch (exception::Warning)
    {
        abs(1);
    }
    catch
    {
        line = infolog.line();
        c = infolog.cut(logPoint + 1, line);

        MyErrorLog::processError(_tablenum, _type, _recId, _values, c);
    }


    return _object;
}
__________________
our sharp bitter vitriol is not that of the vulgar.
Старый 26.11.2009, 00:58   #2  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
одним словом, никаких транзакций за пределами этой функции нет, разве что есть способ задать начало и конец транзакции в коде внешней программы, который я не увижу в дебаггере.

схема того, что происходит:

внешняя программа -> Business Connector -> MyClass::construct()
внешняя программа <- Business Connector <- экземпляр класса MyClass
внешняя программа -> Business Connector -> MyClass.updateTable()

..то есть когда я смотрю в дебаггере выполнение на Business Connector сессии, то эта функция самая внешняя, то есть try/catch должен поймать что бы там ни было - тем более, что ошибки, которые возникают, это ошибки постинга, например закрытый период в general ledger.

так почему же не ловится?
__________________
our sharp bitter vitriol is not that of the vulgar.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
Inside Dynamics AX 4.0: Inside the Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
ALEG: Проект "Фишка недели" и первый пост - Microsoft Dynamics™ AX .NET Business Connector Blog bot DAX Blogs 1 22.11.2006 09:43
ProductiveGap: Microsoft's Leadership in Business Applications Usability Blog bot DAX Blogs 0 09.11.2006 08:11
Обработка исключений COM-объектов bms DAX: Программирование 24 06.04.2004 15:04

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

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

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