跳转至

保存提交暂存时开始计数

保存提交暂存时开始计数脚本示例。

值脚本代码

//值脚本代码!
(function(){
    var dValue = getItemValueAsString("########");   //当前字段名称#############
    if(dValue!=null && dValue.trim().length>0){
        return dValue;
    }
    var dName = "###########";  //就是编号前缀   例如 标号  DF20160302 0004   dName = DF20160302 ###########
    var digit = ##########;  //就是编号后面几位 例如 标号  DF20160302 0004   digit = 4
    var sql = "SELECT domainid,count_vER as item_count_v from t_count_ver where name ='"+dName+"'";
    var date = findBySQL(sql);

    if(date!=null){
        var count_v = date.getItemValueAsDouble("count");  //数量
        var val = "";
        if (count_v < 10) {
            for (var temp = 1; temp <= digit - 1; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 100) {
            for (var temp = 1; temp <= digit - 2; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 1000) {
            for (var temp = 1; temp <= digit - 3; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 10000) {
            for (var temp = 1; temp <= digit - 4; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 100000) {
            for (var temp = 1; temp <= digit - 5; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 1000000) {
            for (var temp = 1; temp <= digit - 6; temp++) {
                val += "0";
            }
            val += count_v;
        } else if (count_v < 10000000) {
            for (var temp = 1; temp <= digit - 7; temp++) {
                val += "0";
            }
            val += count_v;
        } else{
            val += count_v;
        }
        return (dName + val);
    }
})();

保存/暂存/提交脚本前

(function(){
    var doc = getCurrentDocument();
    var docid = doc.getId();  
    var iscountSql ="select domainid from tlk_####### where id = '"+docid+"'";
    if(countBySQL(iscountSql)<=0){
        var dNum = countNext2("JM", true, false, false, 3);  //JM2016 0004  需要的那个编码的代码 ################
        doc.findItem("#######").setValue(dNum);   //编码字段字段名称#############
    }    
})();

脚本说明

该脚本实现了在保存、提交或暂存时自动生成编号的功能:

  1. 值脚本部分
  2. 检查当前字段是否已有值,如果有则直接返回
  3. t_count_ver 表中获取当前计数
  4. 根据计数位数自动补零,生成完整编号
  5. 返回格式:前缀 + 补零后的数字(如:DF20160302 0004)

  6. 保存/暂存/提交前脚本

  7. 检查文档是否已存在(通过 SQL 查询)
  8. 如果不存在,使用 countNext2 函数生成新编号
  9. 设置到指定字段

参数说明

  • dName: 编号前缀(如:DF20160302)
  • digit: 编号后数字的位数(如:4,表示 0004)
  • countNext2: 系统函数,用于生成下一个计数编号
  • 参数1:前缀
  • 参数2-4:布尔值配置
  • 参数5:数字位数

使用示例

例如生成编号:DF20160302 0004 - dName = "DF20160302" - digit = 4 - 当前计数为 4,自动补零为 0004 - 最终返回:DF20160302 0004


本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a4rs4947vt
文档更新时间: 2023-09-16 06:49 作者:admin