Доброго дня, коллеги!
Кто-нибудь пробовал в 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();
}
}
P.S. Боже, какое это AX7 тормознутое, убогое и неудобное в разработке. Приходится сказать по сраному Visual Studio как лягушка по раскаленной сковороде, чтобы что-то увидеть и открыть. По десятку кликов, чтобы посмотреть пару форм. Дизайнер UI в VS и не ночевал. А чего стоят формы, не влезающие по вертикали на экран, особенно с гридом где-нибудь поближе к нижней границе, и кол-вом строк в ней побольше. Скачешь к кнопкам "+Add line" (или еще какой нужной кастомной) в заголовке грида, как идиот.
Такое впечатление, что в MS уже давно используют мысленные интерфейсы вместо клавиатур и мышей и никто не запаривается о тех, кто будет это все допиливать врукопашную.
И это я еще плевался на AX2012... да я сейчас почти молиться на неё готов.