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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2017, 04:26   #20  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от wojzeh Посмотреть сообщение
а чем это принципиально отличается от связки пре-пост?
Способом доступа к переменным. Так мы берем и хакаем через Args, а так мы имеем право сделать обертку и использовать члены напрямую.

Но все равно данный паттерн "обход базового метода с временным присвоением внутреннего условия" он заслуживает патента.

У меня сейчас на четвертые сутки запуска на клиенте AX2012 самоудалилось немало заказов на живом приложении. Вылечилось одной строчкой кода для обхода стандартного удаления заголовка интер. закупки при удалении оригинального заказа. Как с таким справится ь в AX7 мне даже страшно ум приложить. По данному паттерну мне в СоС надо

X++:
RecId recId = _salesTable.RecId; 
_salesTable.RecId = 0

next purchTableDelete(_salesTable)

_salesTable.RecId = recId;
Вот она какая красота расширений!
А overlayering это слишком тупо, да.
X++:
void purchTableDelete(SalesTable _salesTable)
{
    InterCompanyPurchSalesReference interCompanyPurchSalesReference;
    PurchTable                      purchTable;

    if(!_salesTable)
    {
        return;
    }

    if (_salesTable.SkipUpdate == InterCompanySkipUpdate::Internal
    ||  _salesTable.SkipUpdate == InterCompanySkipUpdate::Both
    || !this.canCreatePurchOrder())
    {
        return;
    }

    while select PurchId from interCompanyPurchSalesReference
         index hint SalesPurchIdx
         where interCompanyPurchSalesReference.SalesId == _salesTable.SalesId
    {
        select forupdate purchTable
               index hint PurchIdx
               where purchTable.PurchId == interCompanyPurchSalesReference.PurchId
               &&    purchTable.InterCompanyOrder;
        if (purchTable.isInterCompanyOrder()
        && purchTable.SalesOSInterOrigin != SalesOSInterOrigin::Sourcing) // добавлено
        {
            purchTable.SkipUpdate = InterCompanySkipUpdate::Internal;
            purchTable.delete();
        }
    }
}
--------------------------------
Хороший рябчик, да
Теги
chain of command, extensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
sertandev: AX7 Extensibility – Part 3 : Event handlers and delegates (hooks) Blog bot DAX Blogs 0 28.08.2017 19:11
ievgensaxblog: D365O. Trick to pass a value between Pre and Post event handler using XppPrePostArgs. Blog bot DAX Blogs 0 01.07.2017 10:13
How to cancel method execution in pre-event handler alicedr DAX: Программирование 6 01.01.2017 15:33
newdynamicsax: Pre / Post handlers and kernel classes. Blog bot DAX Blogs 0 25.04.2016 15:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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