Я пытаюсь создать собственный фильтр поиска в диалоговом окне в AX.
Я следовал инструкциям в этом сообщении поиск фильтра x++ в диалоговом окне и получаю Ошибка трассировки стека — объект FormRun не инициализирован — когда я запускаю свой код.
То, что я пытаюсь сделать, это отфильтровать lookup() для EDT ConfigId на основе выбора из EDT ItemId. У меня есть пользовательский lookup(), готовый к работе и работающий правильно, я просто не могу вызвать его из своего диалогового окна.
public Object dialog(DialogRunbase _dialog, boolean _forceOnClient)
{
DialogRunBase dialog;
;
dialog = super(_dialog, true);
dialog.caption('@RID2885');
dfItem = dialog.addField(typeid(ItemId));
dfInventLoc = dialog.addField(typeid(InventLocationId));
dfReplaceCost = dialog.addField(typeid(PdsCost));
dfItemConfig = dialog.addField(typeid(ConfigId));
dfColorId = dialog.addField(typeid(InventColorId), '@RID101');
return dialog;
}
Вот вызов функции поиска():
void Fld_7_lookup()
{
Formrun fr = this.dialogModify().parmDialog();
Object control = fr.controlCallingMethod();
;
ConfigTable::lookupConfigIdSimple(control, dfItem.value());
}
И здесь он продолжает получать ошибку трассировки стека:
public void dialogPostRun(DialogRunbase _dialog)
{
;
super(_dialog);
**_dialog.formRun().controlMethodOverload(true);** // Causes Stack Trace error
_dialog.formRun().controlMethodOverloadObject(this);
}
Я пробовал несколько конфигураций с диалоговым окном. Когда код достигает этой точки, он все еще имеет информацию, переданную из метода dialog(), но когда он переходит к получению FormRun, этот объект остается пустым.
Может ли кто-нибудь помочь мне понять, почему нет объекта FormRun, связанного с переданным DiaglogRunBase?
Спасибо.