Miklix

在 Dynamics 365 中为财务维度创建查找字段

已出版: 2025年2月16日 UTC 11:34:13
最后更新 2026年1月12日 UTC 08:56:19

本文解释了如何在 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上固定

Mikkel Christensen

关于作者

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