建立一個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 自動生成的效果。