AX のダイアログでカスタム ルックアップ フィルターを作成しようとしています。
このポストx++ フィルター ルックアップのダイアログの指示に従いましたが、コードを実行すると、スタック トレース エラー -- FormRun オブジェクトが初期化されていません -- が表示されます。
私がやろうとしているのは、ItemId EDT からの選択に基づいて、ConfigId EDT の lookup() をフィルタリングすることです。カスタムの 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;
}
lookup() の呼び出しは次のとおりです。
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 を取得しようとすると、そのオブジェクトは空白になります。
渡された DiaglogRunBase に関連付けられた FormRun オブジェクトがない理由を誰かが理解するのを手伝ってくれませんか?
ありがとう。