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. Причина: Куда-то проваливаются русские символы в треугольных скобках |
|
Теги |
d365o, lookup |
|
|