Miklix

在 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

这篇文章中的信息基于 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);
}
分享至 Bluesky在 Facebook 上分享在 LinkedIn 上分享在 Tumblr 上分享分享至 X在 LinkedIn 上分享在Pinterest上固定

米克尔·邦·克里斯滕森

关于作者

米克尔·邦·克里斯滕森
迈克尔 是 miklix.com 的创建者和所有者。他拥有 20 多年的专业计算机程序员/软件开发人员经验,目前全职受雇于一家大型欧洲 IT 公司。不写博客时,他把业余时间花在各种兴趣、爱好和活动上,这在一定程度上反映在本网站涵盖的各种主题上。