09.01.2018, 17:57 | #1 |
NavAx
|
AX7 D365 Перехват lookup на поле datasource
Доброго дня, коллеги!
Кто-нибудь пробовал в D365 (AX7) сделать кастомный lookup, перекрывая (registerOverride) событие lookup именно у поля datasource, а не контрола (FormStringControl). У кого-то это получилось? А то или лыжи не едут, или поломано что-то где-то. Нужно, т.к. хочу, чтобы лукап работал всегда, даже если юзер руками добавил поле на форму. Так вот - в поле даже перевернутый треугольник для выбора не появляется (т.е. оно остается просто полем,а не combobox). При попытке принудительно сказать ему FormLookupButton:Always, оно становится Combobox, но при поытке открыть ниспадающий список - "Cannot open lookup due to insufficient metadata information". Делаю так, регистрация registerOverride проходит, никаких runtime ошибок: X++: [ExtensionOf(FormStr(<myForm>))] final public class <myForm>_Extension { [FormDataSourceEventHandler(formDataSourceStr(<myForm>, <datasource>), FormDataSourceEventType::Initialized)] public static void <datasource>_OnInitialized(FormDataSource _sender, FormDataSourceEventArgs _e) { var overrider = <myForm>EventHandler::construct(); _sender.object(fieldNum(<table from datasource>, <field for lookup>)).registerOverrideMethod( methodStr(FormDataObject, lookup), methodStr(<myForm>EventHandler, priceOverride_OnLookup), overrider); } } //Теперь класс, обрабатывающий лукап class <myForm>EventHandler { protected void new() { } public static <myForm>EventHandler construct() { return new <myForm>EventHandler(); } public void priceOverride_OnLookup(FormDataObject _targetField, FormControl _formControl, str _filterStr) { <myForm>EventHandler::LookupField(_formControl); } protected static void LookupField(FormControl callingControl) { Query query = new Query(); QueryBuildDataSource queryBuildDataSource; QueryBuildRange queryBuildRange; ///blah-blah-blah ///... ///blah-blah-blah sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } } Такое впечатление, что в MS уже давно используют мысленные интерфейсы вместо клавиатур и мышей и никто не запаривается о тех, кто будет это все допиливать врукопашную. И это я еще плевался на AX2012... да я сейчас почти молиться на неё готов.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 09.01.2018 в 18:00. Причина: Куда-то проваливаются русские символы в треугольных скобках |
|
09.01.2018, 22:41 | #2 |
Banned
|
А эта же логика на контроле точно работает?
https://dynamicsuser.net/ax/f/develo...orking-in-ax-7 Тут аналогично уперлись в то что таблица UtilElements пустая. P.S. Цитата:
P.S. Боже, какое это AX7 тормознутое, убогое и неудобное в разработке
И еще любовь к садо-мазо. Есть ли вообще какой-то смысл тратить на AX7 свое время? Последний раз редактировалось ax_mct; 09.01.2018 в 22:52. |
|
09.01.2018, 22:56 | #3 |
Участник
|
Оно раньше не работало, потом его чинили, потом опять поломали, видимо так и не починили. Но такой ошибки я не встречал, обычно просто метод не вызывался. Заведите баг, пусть опять починят.
Если есть возможность можете лукап форму на EDT поставить. |
|
|
За это сообщение автора поблагодарили: ax_mct (1). |
10.01.2018, 01:44 | #4 |
Участник
|
На моем 7.3, PU13 работает как часы. С сигнатурой как у вас
X++: (FormDataObject _targetField, FormControl _formControl, str _filterStr) X++: OnLookup(FormStringControl _callingControl) |
|
10.01.2018, 12:54 | #5 |
NavAx
|
Цитата:
Попробовал. Даже с вашей сигнатурой метод не вызывается. Странно, что никаких ошибок не кидается даже с неправильной сигнатурой. Значит, поломано. Кстати, насчет сигнатур - свою брал здесь: https://community.dynamics.com/ax/f/33/t/252260 Здесь писали, что поломано для lookup https://ievgensaxblog.wordpress.com/...ut-overlaying/ А вот здесь уже в 2012й- как у вас: http://imdaxershiv.blogspot.ru/2016/...alogfield.html Видимо, в 7ке поломали, на входе должен быть FormDataObject (или как у меня - полный набор всего), но для него не работало. Да и на входе хорошо бы контрол иметь, а не поле, вот и запатчили. Вот интересно, а где сигнатуры правильные-то брать, кстати? Нормального справочника по API как в 2012й-то нету, сплошная беллетристика с примерами... Цитата:
Сообщение от ax_mct
А эта же логика на контроле точно работает?
https://dynamicsuser.net/ax/f/develo...orking-in-ax-7 Тут аналогично уперлись в то что таблица UtilElements пустая. Цитата:
А смысл тратить время есть, если это хорошо оплачивается. Так что если платят - почему не копаться? Но чувствуешь себя сродни золотарю... Да, я умею в иронию.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 10.01.2018 в 12:58. |
|
10.01.2018, 22:05 | #6 |
Участник
|
Что вас останавливает поставить последний PU и радоваться рабочему лукапу ? И что случилось с ошибкой о которой вы раньше писали ?
|
|
10.01.2018, 23:30 | #7 |
северный Будда
|
Если вся команда работает в PU9 то какой смысл отдельному разработчику обновляться до актуала?
__________________
С уважением, Вячеслав |
|
11.01.2018, 07:15 | #8 |
Участник
|
А какой смысл команде работать в PU9 если там что-то не работает и все равно рано или поздно придется обновляться ...
|
|
11.01.2018, 15:26 | #9 |
Banned
|
Цитата:
Больше похоже на собственные лабы в расчете на золотые горы обещанные "неграми за франк". Если так то не стоит. В лучшем случае задача постоянному программисту пощупать и потрогать AX7, тогда да почему бы и нет. Но чтобы такое на проекте? - Не верится. |
|
11.01.2018, 15:51 | #10 |
северный Будда
|
Цитата:
как я понял, автор таковым не является, значит надо принимать ситуацию в команде такой, какая она есть
__________________
С уважением, Вячеслав |
|
11.01.2018, 15:53 | #11 |
NavAx
|
Цитата:
"Мужчина из Майкрософт! Вы там в Майкраасофте все тааакие интересные... " Потому что платить за работу по обновлению никто не хочет, пока нет таких критичных багов, которые программеры не могут обойти. That's all. Цитата:
BTW, мне вот интересно в свете анонсированной MS возможности "добавить поле без программирования". Как насчет "добавить поле-ссылку на связанную таблицу с лукапом, в котором будет еще и описание и пара полей"? А как насчет "добавить поле и показать не все записи из связанной таблицы в этом лукапе"?
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
|
За это сообщение автора поблагодарили: ax_mct (3). |
11.01.2018, 16:04 | #12 |
Модератор
|
Сколько ее там, "работы по обновлению" на текуций PU ? По часу на окружение ?
Цитата:
пока нет таких критичных багов, которые программеры не могут обойти
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: skuull (1). |
11.01.2018, 16:30 | #13 |
NavAx
|
Цитата:
Это только в МС все быстро делается - есть автоматизированное производительное окружение и куча тестов. Накатил - запустил, посмотрел что отвалилось. На практике - ресурсы ограничены, тесты мало кто пишет. Цитата:
Я слишком стар для этого дерьма. Я знаю, как оно должно делаться, и делать так, как делается сейчас - не хочу. А сделать "как правильно" - нет возможности, т.к. все начинает упираться в деньги. Поэтому я тихонечко делаю таски, мне за это платят, поскольку все что напилю - работает. А дальше - хоть трава не расти. Найдутся те, кто вытрясет из людей кучу денег на ликвидацию тех.долга - на здоровье.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
|
За это сообщение автора поблагодарили: Link (5), sukhanchik (4), Logger (1). |
11.01.2018, 18:19 | #14 |
Banned
|
Цитата:
Сообщение от Maximin
Я слишком стар для этого дерьма. Я знаю, как оно должно делаться, и делать так, как делается сейчас - не хочу. А сделать "как правильно" - нет возможности, т.к. все начинает упираться в деньги. Поэтому я тихонечко делаю таски, мне за это платят, поскольку все что напилю - работает. А дальше - хоть трава не расти.
Найдутся те, кто вытрясет из людей кучу денег на ликвидацию тех.долга - на здоровье. Но все же да |
|
Теги |
d365o, lookup |
|
|