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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2017, 04:39   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
D365: passing through public method by means of Pre- and Post-event handlers
Источник: http://alexvoy.blogspot.com/2017/10/...method-by.html
==============

Let's say we need to change the logic of a standard public method in terms of Extensions approach in D367 (AX7).

The whole idea is basically in saving values provided by XppPrePostArgs parameter in Pre-event handler method in new parameters and then restoring them in Post- one from the latter.

pre()>Save
standard method()
post()>Restore

For example, our business scenario is to allow the user to select Default company without selecting a Project while creating a new Purchase requisition. (I added a new parameter to the module)



Therefore, we have to change the logic of validateCoexistenceOfProjectAndBuyingLegalEntity method, which is called inside of PurchReqTable.validateWrite().

Standard, it does not allow to have an empty Project once Default company is chosen.


First, we create Pre- and Post-event handlers.



Then we put them into a new class and add new "by-passing" logic.


X++:
class PurchReqTableHandler
{
    #define.CompanyInfoDefaultArgName('CompanyInfoDefaultArgName')
    
    [PreHandlerFor(tableStr(PurchReqTable), tableMethodStr(PurchReqTable, validateCoexistenceOfProjectAndBuyingLegalEntity))]
    public static void PurchReqTable_Pre_validateCoexistenceOfProjectAndBuyingLegalEntity(XppPrePostArgs _args)
    {
        RefRecId        companyInfoDefault;
        PurchReqTable   purchReqTable   = _args.getThis();

        if(PurchParameters::find().PurchReqAllowCmpInfoDefWithoutProjId)
        {
            
            // if the user opted for setting Company without a project
            // we have to save it and use after this standard validation process
            if ( !purchReqTable.ProjId && purchReqTable.CompanyInfoDefault)
            {
                companyInfoDefault                  = purchReqTable.CompanyInfoDefault;
                purchReqTable.CompanyInfoDefault    = 0;
            }
            // make it zero to pass through the standard validation
            _args.setArg(#CompanyInfoDefaultArgName, companyInfoDefault);
        }
    }

   
    [PostHandlerFor(tableStr(PurchReqTable), tableMethodStr(PurchReqTable, validateCoexistenceOfProjectAndBuyingLegalEntity))]
    public static void PurchReqTable_Post_validateCoexistenceOfProjectAndBuyingLegalEntity(XppPrePostArgs _args)
    {
        boolean         ret;
        RefRecId        companyInfoDefault;
        PurchReqTable   purchReqTable   = _args.getThis();

        if(PurchParameters::find().PurchReqAllowCmpInfoDefWithoutProjId)
        {
            ret                 = _args.getReturnValue();
            companyInfoDefault  = _args.getArg(#CompanyInfoDefaultArgName);
            purchReqTable       = _args.getThis();
            // restore it
            if (ret && companyInfoDefault && !purchReqTable.CompanyInfoDefault)
            {
                purchReqTable.CompanyInfoDefault = companyInfoDefault;
            }
        }
    }

}


Источник: http://alexvoy.blogspot.com/2017/10/...method-by.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.

Последний раз редактировалось mazzy; 04.10.2017 в 14:18.
За это сообщение автора поблагодарили: Logger (1).
Старый 04.10.2017, 14:15   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
На самом деле интересно, молодец Алексей. Не знал, что можно в передаваемый args пихать свои.
Это уже не так нужно с CoC, но все равно занятно.
Старый 04.10.2017, 14:34   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Blog bot Посмотреть сообщение
For example, our business scenario is to allow the user to select Default company
...
Standard, it does not allow to have an empty Project once Default company is chosen.
Стандартный функционал не разрешает пустой проект при выбранной Default company.
Но "для примера наш бизнес сценарий должен позволить".

Что делаем?
а) разбираемся с бизнес логикой и выясняем причину явно записанного в валидаторе условия
б) сообщаем постановщику нашей задачи "для примера" о том, что в стандартной бизнес-логике есть вот такое условие валидации, чтобы он скорректировал условия задачи "для примера"
в) явно изменяем стандарный валидатор, чтобы все сразу видели что происходит (возможно даже оставляя комментарии в коде)
г) добавляем хуки, которые обманывают валидатор, передавая "глобальный" параметр и жестко завязываясь на конкретную реализацию и окружение валидатора.

Пфффф! очевидно же - пункт г)

Больше! Больше треша!

================================
Ну ведь дохренища же систем с экстеншенами/плагинами/хуками!
И для этой дохренищи уже написаны бестпрактисы и рекомендации что можно делать, а что не надо.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.10.2017 в 14:39.
За это сообщение автора поблагодарили: EVGL (-1), wojzeh (1).
Старый 04.10.2017, 14:36   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Не знал, что можно в передаваемый args пихать свои.
А еще caller() есть.
И в строку параметров можно положить какой-нибудь объект в сериализованном виде.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 14:52   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Это уже не так нужно с CoC, но все равно занятно.
Напротив, именно при chain of command это особенно и нужно: как убрать участок кода, который вам не нужен? Вся суть extensions заключается в том, что каждое ISV только добавляет функционал, но как тогда избавиться от излишнего? Пример из практики: прямая поставка в intercompany автоматически разносит накладную в двух компаниях, но что если хотим разнести одну позже из-за условий перехода права собственности DAP?
За это сообщение автора поблагодарили: mazzy (2), wojzeh (1).
Старый 04.10.2017, 14:58   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от EVGL Посмотреть сообщение
Вся суть extensions заключается в том, что каждое ISV только добавляет функционал
Именно.

Цитата:
Сообщение от EVGL Посмотреть сообщение
но как тогда избавиться от излишнего?
выбрать другую систему.

========================
так на рынке существует много форумных движков.
для пользователей они различаются в основном внешним видом и почти не различаются по пользовательскому функционалу.

почти все современные форумные движки предоставляют extensions в том или ином виде, под тем или иным названием.

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

повторюсь: extensions - не изобретение майкрософт. это очень старая технология. грабли хорошо известны.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 15:26   #7  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от kashperuk Посмотреть сообщение
На самом деле интересно, молодец Алексей. Не знал, что можно в передаваемый args пихать свои.
Это уже не так нужно с CoC, но все равно занятно.
что такое сос? в принципе данный подход работает со времён AX2012, но до подобных извращений (как ниже верно отмечает mazzy) пришлось опуститься именно в стеснённых условиях новой парадигмы.

как бы ты предложил решить подобную задачу?
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: EVGL (10), kashperuk (5).
Старый 04.10.2017, 15:36   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от EVGL Посмотреть сообщение
Напротив, именно при chain of command это особенно и нужно: как убрать участок кода, который вам не нужен?
Воспользоваться какой-то точкой расширения для убирания функционала (не участка кода). Запросить такую точку расширения, если ее нет.

Продублировать то, что надо от default company (я не знаю функционала) - сделать свое поле которое ведет себя так же только в тех местах когда надо

Последний раз редактировалось belugin; 04.10.2017 в 15:41.
Старый 04.10.2017, 15:38   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
повторюсь: extensions - не изобретение майкрософт. это очень старая технология. грабли хорошо известны.
Уточнение: Это грабли отсутсвия возможности модифицировать код, а не наличия extensions.
За это сообщение автора поблагодарили: wojzeh (1).
Старый 04.10.2017, 15:41   #10  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Стандартный функционал не разрешает пустой проект при выбранной Default company.
Но "для примера наш бизнес сценарий должен позволить".

Что делаем?
а) разбираемся с бизнес логикой и выясняем причину явно записанного в валидаторе условия
б) сообщаем постановщику нашей задачи "для примера" о том, что в стандартной бизнес-логике есть вот такое условие валидации, чтобы он скорректировал условия задачи "для примера"
в) явно изменяем стандарный валидатор, чтобы все сразу видели что происходит (возможно даже оставляя комментарии в коде)
г) добавляем хуки, которые обманывают валидатор, передавая "глобальный" параметр и жестко завязываясь на конкретную реализацию и окружение валидатора.

Пфффф! очевидно же - пункт г)

Больше! Больше треша!

================================
Ну ведь дохренища же систем с экстеншенами/плагинами/хуками!
И для этой дохренищи уже написаны бестпрактисы и рекомендации что можно делать, а что не надо.
ха-ха! спасибо за каменты!

реальность гораздо страшнее нашего воображения! данный бизнес-сценарий - это то, над чем я конкретно сейчас работаю у реального клиента, которому нужно более гибко и мощно управляться со своим проектным производством. теперь по пунктам, которые ты совершенно обоснованно и чётко выделил.

а и б сидели на трубе, но быстро оттуда слиняли после общения с клиентом;
в - главный камень преткновения, из-за которого собственно весь сыр-бор: работаем только в парадигме расширения (в том числе и сознания, привыкшего делать простые задачи просто, а также времени разработки и бюджета, гыыы)

с твоей оценкой пункта "г" (даже с буквой, которую ты ему присвоил) я полностью согласен, так как прекрасно помню речь из "полицейской академии". но это реальное решение реальной задачи для реального бизнеса.

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

кстати говоря, не понял я, что имел в виду под "передавая "глобальный" параметр и жестко завязываясь на конкретную реализацию и окружение валидатора". этот хук именно что должен быть привязан к одному конкретному случаю, когда он вызывается из формы создания нового запроса на покупку (эту проверку я удалил из кода для облегчения понимания подхода); параметр самый что ни на есть локальный - существует исключительно в args. но это детали, можно их и опустить, так как меня интересует вопрос в более общей постановке: how to f***** survive in extensions?

спасибо за обсуждение!
__________________
Felix nihil admirari
Старый 04.10.2017, 15:56   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Уточнение: Это грабли отсутсвия возможности модифицировать код, а не наличия extensions.
да.
это коррелирующие вещи. но согласен что разные.
с замечанием согласен.

Цитата:
Сообщение от wojzeh Посмотреть сообщение
с твоей оценкой пункта "г" (даже с буквой, которую ты ему присвоил) я полностью согласен, так как прекрасно помню речь из "полицейской академии".
))))
да, нумерация сознательная. как и подразумеваемый пятый пункт - PROFIT!!!!

Цитата:
Сообщение от wojzeh Посмотреть сообщение
ты не представляешь, насколько мне это не нравится, но я ничего лучше придумать не смог. с интересом жду твоих идей.
Ну... если бы приперло, то пришлось бы делать что-то в духе исходного поста.
но считаю это запредельным говнокодом.
и считаю, что система, которая вынуждает программировать в таком стиле, не является хорошо продуманной.
и уж точно не привел бы такой код в качестве примера

Цитата:
Сообщение от wojzeh Посмотреть сообщение
кстати говоря, не понял я, что имел в виду под "передавая "глобальный" параметр и жестко завязываясь на конкретную реализацию и окружение валидатора".
вот этот ключевой момент "методики":
Цитата:
Сообщение от Blog bot Посмотреть сообщение
X++:
PurchReqTable   purchReqTable   = _args.getThis();
_args.getThis() - возвращает anytype
https://msdn.microsoft.com/ru-ru/lib...s.getthis.aspx

фиг с ним, что нет каста, фиг с ним что нет проверок.
но РЕКОМЕНДОВАТЬ использовать ЭТО для ОБМАНА штатного валидатора?...

впрочем, я уже создавал отдельную ветку:
Что с логикой у людей на форуме? Вроде программисты. Вроде код и ТЗ должны читать и писать.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:00   #12  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
По хорошему без возможности полной подмены метода ни о какой нормальности речь быть не может.
СoC и Pre/Post это все компромиссы которые делают хуже. Они полезны, но как дающие наполовину - опасны.

Последний раз редактировалось ax_mct; 04.10.2017 в 16:03.
Старый 04.10.2017, 16:01   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
так как меня интересует вопрос в более общей постановке: how to f***** survive in extensions?
давай плакать и страдать здесь Клуб анонимных оверлейщиков

могу сказать одно - навижиноводы давно живут в условиях закрытого кода и в условиях extensions.
правда поэтому у них система более продуманная изначально.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:02   #14  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
выбрать другую систему.
это оффтопик и в некотором смысле троллинг. я ж не продажами занимаюсь: что клиент купил, то и ставим. тут нечего обсуждать, мне, по крайней мере.

Цитата:
Сообщение от mazzy Посмотреть сообщение
повторюсь: extensions - не изобретение майкрософт. это очень старая технология. грабли хорошо известны.
технически говоря, это и не технология, а подход, но давай поставим вопрос шире: какие приёмы нам доступны в новой парадигме?

- подписка на события;
- подписка на публичные методы до и после с различными перверсиями и девиациями;
- динамическое перекрытие методов form control;

что ещё?
__________________
Felix nihil admirari
Старый 04.10.2017, 16:08   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
это оффтопик и в некотором смысле троллинг. я ж не продажами занимаюсь: что клиент купил, то и ставим. тут нечего обсуждать, мне, по крайней мере.
оно понятно.
точно также как понимаю и покупателей систем.
вот наглядный пример, как я сам был на месте покупателя Потенциально новая версия форума. Подсмотреть, обсудить.
система экстеншенов формного движка - один из криетриев. не самый важный конечно. но ощутимый.

Цитата:
Сообщение от wojzeh Посмотреть сообщение
технически говоря, это и не технология, а подход, но давай поставим вопрос шире: какие приёмы нам доступны в новой парадигме?

- подписка на события;
- подписка на публичные методы до и после с различными перверсиями и девиациями;
- динамическое перекрытие методов form control;

что ещё?
отлично ставишь вопрос.
только давай в другой ветке?
Как правильно вести разработку в условиях, когда часть кода закрыта от изменения - Sys-слой в аксапте, закрытые codeunit в навике, extensions в MS CRM

здесь все-таки тема
D365: passing through public method by means of Pre- and Post-event handlers
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:14   #16  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ну... если бы приперло, то пришлось бы делать что-то в духе исходного поста.
но считаю это запредельным говнокодом ...
и уж точно не привел бы такой код в качестве примера
у меня по программированию в универе была "четвёрка", так что сорян.
можешь вкратце набросать бриллиантово-чистый пример?

Цитата:
Сообщение от mazzy Посмотреть сообщение
фиг с ним, что нет каста, фиг с ним что нет проверок.
но РЕКОМЕНДОВАТЬ использовать ЭТО для ОБМАНА штатного валидатора?...
именно в этом и задача. ещё раз: как бы ты решил эту задачу?

Цитата:
спасибо за ссылку. не понял, как это относится к нашему топику. впрочем, там и без меня уже каментов насыпали.

я чувствую, эмоции тебя переполняют - поверь, меня тоже. но прошу, давай отвлечёмся от критики чистого разума и морального закона внутри нас и вернёмся к нашим баранам.
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: Link (1).
Старый 04.10.2017, 16:19   #17  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
давай плакать и страдать здесь Клуб анонимных оверлейщиков
очевидно, текст не передаёт тона: я не призываю к стонам, я задаюсь конкретными вопросами о том, как работать (молотить бабло) в новых условиях со связанными руками. учусь рисовать пальцами ног, а также прочими частями тела. иногда да, и этим местом тоже.

Цитата:
Сообщение от mazzy Посмотреть сообщение
могу сказать одно - навижиноводы давно живут в условиях закрытого кода и в условиях extensions.
правда поэтому у них система более продуманная изначально.
да и хрен с ними. зачем нам навик в топике про аксу? перестань увиливать уже!
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: Ace of Database (2).
Старый 04.10.2017, 16:21   #18  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от EVGL Посмотреть сообщение
Напротив, именно при chain of command это особенно и нужно: как убрать участок кода, который вам не нужен? Вся суть extensions заключается в том, что каждое ISV только добавляет функционал, но как тогда избавиться от излишнего? Пример из практики: прямая поставка в intercompany автоматически разносит накладную в двух компаниях, но что если хотим разнести одну позже из-за условий перехода права собственности DAP?
увидел твоё замечание в оценке только. и что произойдёт при подстановке проекта? ты увидел логическую ошибку в коде? или я что-то не понял?
спасибо
__________________
Felix nihil admirari
Старый 04.10.2017, 16:22   #19  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
можешь вкратце набросать бриллиантово-чистый пример?
именно в этом и задача. ещё раз: как бы ты решил эту задачу?
Я не знаю как правильно решить поставленную задачу в поставленных условиях.
Я бы изо всех сил постарался изменить формулировку задачи. Я бы постарался донести последствия силового решения. Если бы мои уговоры не сработали, то практическое решение было бы похоже на то, что приведено в блоге - стиль "сломать через колено".

Но мне чертовски не нравится что система вынуждает писать именно так.

Мне чертовски не нравится, что через несколько лет придется с последствиями решений, которые были сделаны в таком стиле.

А еще больше мне не нравится, систему сейчас делают такой совершенно конкретные люди. И они это делают точно не со зла.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.10.2017 в 16:24.
Старый 04.10.2017, 16:22   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
перестань увиливать уже!
отвечаю жеж. это не чат жеж. )))
__________________
полезное на axForum, github, vk, coub.
Теги
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, время: 14:46.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.