在 Dynamics 365 中為財務維度建立查找字段
已發佈: 2025年2月16日 上午11:34:14 [UTC]
本文介紹如何在 Dynamics 365 for Operations 中為財務維度建立查找字段,包括 X++ 程式碼範例。
該頁面是由英語機器翻譯而來的,以便盡可能多的人可以訪問。不幸的是,機器翻譯還不是一項完善的技術,因此可能會出現錯誤。如果您願意,可以在這裡查看原始英文版本:
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Creating a Lookup Field for a Financial Dimension in Dynamics 365
這篇文章中的資訊是基於 Dynamics 365 for Operations,但其中大部分也適用於 Dynamics AX 2012(見下文)。
我最近的任務是創建一個新領域,其中應該可以指定單一財務維度,在本例中是產品。當然,新的欄位也應該能夠找到這個維度的有效值。
這比在表中進行常規查找要複雜一些,但如果你知道如何做,其實也不算太糟。
幸運的是,標準應用程式提供了一種方便的查找形式(DimensionLookup),如果您只告訴它要查找哪個維度屬性,就可以使用它。
首先,您需要建立表單欄位本身。這可以基於表格欄位或編輯方法,對於查找本身並不重要,但以某種方式它必須使用 DimensionValue 擴展資料類型。
然後您需要為該欄位建立一個 OnLookup 事件處理程序。若要建立事件處理程序,請以滑鼠右鍵按一下欄位的 OnLookup 事件,然後選擇「複製事件處理程序方法」。然後,您可以將一個空的事件處理程序方法貼到類別中並從那裡進行編輯。
注意:其中大部分也適用於 Dynamics AX 2012,但您可以覆寫表單欄位的尋找方法,而不是建立事件處理程序。
事件處理程序必須看起來像這樣(根據需要替換表單名稱和欄位名稱):
[
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}