AX NumberSeq

创建一个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
新建:myconfigurationkey

2.
修改Base Enum:NumberSeqModule, 添加新项
AOT -> Data Dictionary ->Base Enums ->NumberSeqModule
新建MyModule,其属性如下:
Label: MyModule;
ConfigurationKey: myconfigurationkey;
EnumValue: 62

3.
创建Extended Data Types
AOT ->Data Dictionary ->Extended Data Types
新建扩展类型:myETD1 (string)

4.
新建类NumberSeqReference_MyModule
AOT ->Classes
新建class :NumberSeqReference_MyModule
class 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.
修改类NumberSeqReference
construct
方法:添加以下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 -> References


8.
创建表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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值