AX NumberSeq

    技术2024-07-10  70

    创建一个NumberSequence

     

    1.首先在AOT中找到形如 NumberSeqReference_*****的类。

    2.在该类的loadModule方法中加入如下代码

    numRef.dataTypeId               = typeId2ExtendedTypeId(typeid(VendAccount));

    numRef.referenceHelp            = literalStr("@SYS53981");

    numRef.wizardContinuous         = true;

    numRef.wizardManual             = NoYes::No;

    numRef.wizardAllowChangeDown    = NoYes::No;

    numRef.wizardAllowChangeUp      = NoYes::No;

    numRef.wizardHighest            = 999999;

    numRef.sortField                = 1;

    修改相应的地方主要是128相关说明参见下面自定义。

    保存之后找到该模块对应的Number Sequence Form。就可以看到刚才所加Number sequence 的项。

    3.右键单击 number sequence code>Go to main table form.新建一条数据,参照已有数据进行设置.

    Number sequence code //定义一个Number Sequence code Name

    Format //定义NumberSeq格式。

    用法参见以下。

     

    创建一个自定义的NumberSequence

    1.创建一个configuration key.AOT-> Data Dictionary ->Configuration Keys新建:myconfigurationkey2.修改Base Enum:NumberSeqModule, 添加新项。AOT -> Data Dictionary ->Base Enums ->NumberSeqModule新建MyModule,其属性如下:Label: MyModule;ConfigurationKey: myconfigurationkey;EnumValue: 623. 创建Extended Data TypesAOT ->Data Dictionary ->Extended Data Types 新建扩展类型:myETD1 (string)4.新建类NumberSeqReference_MyModuleAOT ->Classes新建class :NumberSeqReference_MyModuleclass NumberSeqReference_MyModule extends numberSeqReference{}protected void loadModule(){    NumberSequenceReference numRef;    ;    numRef.configurationKeyId = 50005;//这里指定刚定义的ConfigKey    numRef.DataTypeId = typeId2ExtendedTypeId(typeid(myETD1));

    //定义NumSeq的数据类型    //numRef.ReferenceHelp = literalStr('@SYS25197');//Inventory management    numRef.ReferenceHelp = literalStr('MyModule');//定义Label文件    numRef.WizardContinuous = true;//是否通过向导生成NumSeq的连续性    numRef.WizardManual = NoYes::No;//是否手动录入NumSeq    numRef.WizardAllowChangeDown = NoYes::No;//是否自动获取NumSeq的值改成更小的值    numRef.WizardAllowChangeUp = NoYes::No; //是否自动获取NumSeq的值改成更大的值    numRef.WizardLowest = 1;//NumSeq最小值    numRef.WizardHighest = 9999;//NumSeq最大值    numRef.SortField = 1;//NumSeq的排序值    this.create(numRef);}public static client server NumberSeqModule numberSeqModule(){    return NumberSeqModule::MyModule;}5.修改类NumberSeqReferenceconstruct 方法:添加以下case语句:        case (NumberSeqReference_MyModule::numberSeqModule())       : return new NumberSeqReference_MyModule(_module);moduleList 方法,在尾部添加:    moduleList += NumberSeqReference_MyModule::numberSeqModule();6. 创建number sequence.Basic -> Setup ->Number sequences -> Number Sequences添加一个序列。7.创建number sequence reference.Basic -> Setup ->Number sequences -> References8.创建表test1, 字段field1:table:   test1;field name: test1;field extended data type: Etd1;9.重载表 test1 的以下方法:public void initValue(){    NumberSeq numberSeq;    ;    numberSeq = NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(myETD1))),true);    this.Field1 = numberSeq.num();    super();}public void delete(){    ;    NumberSeq::release(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(myETD1))).NumberSequence,this.Field1);    super();}10.AOT ->Data Dictionary ->Tables ->test1 ->Add Ins -> Table Browser添加新纪录,可以观察到number sequence 自动生成的效果。

    最新回复(0)