在 Dynamics 365 中为财务维度创建查找字段
已出版: 2025年2月16日 UTC 11:34:13
本文介绍如何在 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);
}