编号序列
在项目中,有些单据的编号需要系统按照某种格式自动生成,这个时候就需要使用编号序列进行设置。编号序列可以由英文字母,数字和部分符号组成。其中@符号建议不要使用在编号序列中(假如真的需要使用特殊符号@,可以在修改分组间隔符为#(因为分隔符默认为@,且只能设置为@或者#))
配置
系统菜单 下 编号序列画面 可配置新增编号序列
一条记录就是一个编号序列
最小值字段是编号序列产生时,数值位的最小值。
最大值字段是编号序列产生时,数值位能产生的最大值。
当前值字段是编号序列数值位的当前值。当此编号序列勾选分组重计时,编号序列的当前值将不是此字段的值。
在用字段是编号序列的有效性。不勾选此字段,此编号序列将不能使用。
连续的字段是标识产生的编号序列是否连续,删除使用此编号序列的记录时,编号序列的数值是否回退。
分组重计字段是标识编号序列是否分组重计。例如,编号序列中包含年月日时,是否按照年月日重计。如果勾选分组重计,则编号序列分组表中会记录此编号序列的分组键以及此分组的当前值。
编号序列格式
数字:用#表示数字,一个#表示一位数字。例如####表示产生的编号为四位数字。
其他字符:用字符表示字符本身。
日期:用y表示年,用M表示月,用d表示日。日期需用英文状态下的中括号[]括起来。例如[yyMMdd]。
引用编号所在记录的其他字段的值:字段名用{}括起来,例如{VendCode}。
引用编号所在记录的某字段继承的Datatype的主表中某字段的值:主表中的值写在前面,关联的Datatype值写在后面,中间用/分隔,外面用{}包括。例如{Prefix/VendCode}。
多种类型组合:字符、数字、时间、引用字段值之间用竖线“|”分隔。例如P|{VendCode}|[yyMM]|####表示产生的编号为P开头,后面跟编号所在记录中VendCode字段的值,再跟年月,最后是四位数字。
使用
在Table的init方法中,调用获取编号序列的方法,GongqiRecordHelper.fetchNextNumSeq(arg0, arg1) 或者 GongqiRecordHelper.fetchNextNumSeqByMap(arg0, arg1);
其中 arg0是 编号序列Id arg1 是 GongqiRecord 或者是 Map
@Override
public void init() {
super.init();
this.setNumber(GongqiRecordHelper.fetchNextNumSeq("StudentID", this));
}
在Table的Inert方法调用时,需要注意,对应Set值的字段 如果 在Table上设置为必填,那么需要在FormDataSourceFiled上设置为不必填,否则,会导致进不了 Table 的Inert方法 直接提示 该字段需要必填
//表上的 INSERT 方法 写在 super 之前
@Override
public void insert() {
this.setNumber(GongqiRecordHelper.fetchNextNumSeq("StudentID", this));
super.insert();
}