您可能已经看到使用 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。