函数说明

    /**
     * 生成业务单据编号
     * @param format 格式: XXX[yyyyMMdd][000][0/1]  前缀字符串[日期格式][流水号][是否按日期重设流水]
     * 无前缀无日期编号:[][00000] => 00001
     * 注意: [前缀字符串]的取值不允许包含有 '[',']' 字符的字符串
     * @return 业务单据编号
     */
    public String getCode(String format) throws Exception;

支持版本:5.0.220

方法一 在后台生成自动编号

在数据源更新设置的[新增]操作类型下的某个字段设置脚本表达式值

  • 优点: 适合不断号的场景
  • 缺点: 在编辑页面无法提前获取到编号
//FYO2303-000039
cxt.getCode('FYO[yyMM][000000]'));
//FYO2303000055
cxt.getCode('FYO[yyMM]-[000000]'));
//FYO-000039
cxt.getCode('FYO[]-[000000]'));
//2303-000039
cxt.getCode('[yyMM]-[000000]'));

//下面编号随着日期编号流水号会重排
//FYO230313000002  每天都从000001开始
cxt.getCode('FYO[yyMMdd][000000][1]'));
//FYO2303000008 每月都从000001开始
cxt.getCode('FYO[yyMM][000000][1]'));
//FYO2303-000008 每月都从000001开始
cxt.getCode('FYO[yyMM]-[000000][1]'));
//FYO-000014 与 FYO[]-[000000] 一样的效果
cxt.getCode('FYO[]-[000000][1]'));

方法二 前端提前获取自动编号

在数据源字段设置[设置新增数据的默认值脚本]

  • 优点: 在编辑页面可以提前获取自动到编号
  • 缺点: 一旦退出编辑或者出现新增错误会导致编号断号

function Button2_onClickScript(cxt:ScriptContext,btn:Button){
    //FYO2303-000039
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[yyMM][000000]'));
    //FYO2303000055
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[yyMM]-[000000]'));
    //FYO-000039
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[]-[000000]'));
    //2303-000039
    console.info(btn.getPage().components.ZlPage1.getCode('[yyMM]-[000000]'));

    //下面编号随着日期编号流水号会重排
    //FYO230313000002  每天都从000001开始
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[yyMMdd][000000][1]'));
    //FYO2303000008 每月都从000001开始
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[yyMM][000000][1]'));
    //FYO2303-000008 每月都从000001开始
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[yyMM]-[000000][1]'));
    //FYO-000014 与 FYO[]-[000000] 一样的效果
    console.info(btn.getPage().components.ZlPage1.getCode('FYO[]-[000000][1]'));
}

参考

新增页面打卡时候生成一个自动的编号

作者:texbox  创建时间:2022-12-14 16:30
最后编辑:admin  更新时间:2024-10-17 08:28