[英]Number sequence for custom table in ax 2012
我有一个自定义实用程序,它在AX 2012 AOT中使用自定义表,我想为我的表提供一个标识字段,有人告诉我我可以为此使用数字序列,并且可以将数字序列映射到我的表以便可以获取在插入行时有一个新的唯一ID,当我尝试生成数字序列时,它会询问我区域和模块信息,因为我希望我的自定义表和实用程序在使用.net业务连接器在Dynamicsax 2012之外运行的自定义表和实用程序有此要求,我不知道要输入什么向导。
您可能已经看到了使用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。
这就是您按常规方式编号顺序的方式
custTable.xyz = NumberSeq::newGetNum(CompanyInfo::numrefContactId()).num();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.