1

我有一个自定义实用程序,它在 AX 2012 AOT 中使用自定义表格,我想为我的表格设置一个身份字段,有人告诉我我可以为此使用数字序列,并且可以将数字序列映射到我的表格以便它可以得到插入行时的一个新的唯一 ID,当我尝试生成数字序列时,它会询问我区域和模块信息,因为我想要这个用于我的自定义表和实用程序,它使用 .net 业务连接器在动态 ax 2012 之外工作,我无法弄清楚输入向导的内容。

4

2 回答 2

4

您可能已经看到使用 NumberSeqModule 枚举并向其添加自定义模块枚举值的方法。然后,您通常会创建一个扩展 NumberSeqApplicationModule 类的类,然后使用数字序列引用加载链接到数据类型的数字序列。

尽管这是“最佳实践方式”,但对于您现在想要做的事情来说,这有点矫枉过正。所以这是你可以做的:

您可以只覆盖您正在使用的表的插入方法。您可以在 NumberSeq 类上使用 newGetNumFromCode 构造函数。

public static NumberSeq newGetNumFromCode(
    NumberSequenceCode  _numberSequenceCode,
    NumberSeqScope      _scope = NumberSeqScopeFactory::createDefaultScope(),
    boolean             _makeDecisionLater           = false,
    boolean             _dontThrowOnMissingRefSetUp  = false,
    SysLastValue        _nextNumSeq = null,
    boolean             _fillNextNumSeq = false)
{
    return NumberSeq::newGetNumFromId(
            NumberSequenceTable::findByNaturalKey(_numberSequenceCode, _scope.getId()).RecId,
            _makeDecisionLater,
            _dontThrowOnMissingRefSetUp,
            _nextNumSeq,
            _fillNextNumSeq);
}

所以现在要使用它,您只需在 Dynamics Ax(组织管理 | 编号规则 | 编号规则)中创建一个新的数字序列并记住数字序列代码。

然后在您的表的插入方法上,您可以执行以下操作:(示例取自联系人表)

if (!this.ContactPersonId)
{
    this.ContactPersonId = NumberSeq::newGetNum(CompanyInfo::numRefContactPersonId()).num();
}

这应该确保在插入记录时,您还将填写 ID。

于 2012-12-14T16:18:48.873 回答
1

这就是你以正常方式编号的方式

custTable.xyz = NumberSeq::newGetNum(CompanyInfo::numrefContactId()).num();
于 2013-09-25T11:29:59.557 回答