天天看點

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;

修改相應的地方主要是1,2,8相關說明參見下面自定義。

儲存之後找到該子產品對應的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 自動生成的效果。