关于botp中sql多值取数的一些思考原创
4人赞赏了该文章
536次浏览
编辑于2020年11月07日 10:52:43
背景来源:
二开单据生成凭证时,将每个分录预算扣减费用类型去重后将名称拼接在摘要上。即下图只需显示两个预算扣减费用类型即可
需求分析:
该问题按Java逻辑来思考,比较简单。即先传个单头字段去拿到去重后的分录idList,然后遍历这个List调用公式getFromObjectID()拿到这个对象,然后get对应值,在进行字符串拼接即可。以前文档说过#sql_val()只能取到一个参数,所以需要寻找其他办法。如下图所示我们发现#sql_col()比较符合我们的要求。
实现步骤:
在单据转换规则界面按F9进入自定义公式界面,然后参照以下逻辑输入脚本(仅供参考,脚本格式见附件)
下面简单描述下写这个脚本过程中踩得雷也就是我们所讲的误区
误区一:自定义脚本里面拿到的字符串数组不能用xxxx[i]获取其中某一个具体数据,所以这个只能用自定义函数实现
误区二:字符串和字符串数组需要区分,字符串获取长度用.length()方法,字符串数组直接.length即可
if(valueArr.length==0){
return null;
}
误区三:自定义脚本和自定义函数中通过对象获取值的方式不同
自定义脚本中通过对象获取值的方法:
formula_result = __BOTgetObjectFromID(#sql_val("")).adminOrgUnit;
自定义函数的写法:
__BOTgetObjectFromID( id ).get("name");
获取多值参考脚本.rar(0.39KB)
推荐阅读