|
|
本帖最后由 nice 于 2014-9-10 18:43 编辑
我有一张合同起草单,在提交按钮的动作执行后脚本中加入提交后自动生成合同编号的代码,
这个功能绝大部分时间都好用,可以生成连续不重复的编号,
但是偶尔会发生重复编号的现象,找不到什么原因,我把脚本复制到了下边,请帮忙看看是不是脚本问题?还是其他问题?
var value1=getItemValueAsString("number"); //合同编号字段
if(value1.trim().length()<=0){
var prx=""; //前缀
var user = getWebUser();
var depts = user.getDepartments();
for (var iter = depts.iterator(); iter.hasNext();) {
var dept = iter.next();
}
if(dept.getName()=="市场部"){ //根据部门名称不同加不同的前缀
prx = "GJ-S-";
}
if(dept.getName()=="技术支持"){ //根据部门名称不同加不同的前缀
prx = "GJ-J-";
}
var year =getCurDate("yy");//当前年
var digit=4; //指定增长序列号位数
var rtn=prx+year+"-";
var sql="select * from tlk_合同起草单 where item_number like '%"+rtn+"%' order by created desc";
var doc=findBySQL(sql);
var val="";
if(doc==null){
value1=prx+year+"-"+"0001";
}else{
var test1=doc.getItemValueAsString("number");
var test2=parseInt(test1.substr(rtn.length));
var test3=test2+1;
if (test3< 9) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3 < 99) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3 < 999) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3 < 9999) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3 < 99999) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3 < 999999) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else if (test3< 9999999) {
for (var temp = 1; temp <= digit - test3.toString().length; temp++) {
val += "0";
}
val =val+test3;
} else
val =val+test3;
rtn=prx+year+"-"+val;
value1=rtn;
}
}
var doc = getCurrentDocument();
doc.findItem("number").setValue(value1);
var process = getDocProcess(getApplication()); //Document操作类
process.doUpdate(doc);
截图如下: |
|