关于botp中sql多值取数的一些思考原创
金蝶云社区-Hadwin
Hadwin
4人赞赏了该文章 536次浏览 未经作者许可,禁止转载编辑于2020年11月07日 10:52:43

背景来源:

二开单据生成凭证时,将每个分录预算扣减费用类型去重后将名称拼接在摘要上。即下图只需显示两个预算扣减费用类型即可

image.png

需求分析:

该问题按Java逻辑来思考,比较简单。即先传个单头字段去拿到去重后的分录idList,然后遍历这个List调用公式getFromObjectID()拿到这个对象,然后get对应值,在进行字符串拼接即可。以前文档说过#sql_val()只能取到一个参数,所以需要寻找其他办法。如下图所示我们发现#sql_col()比较符合我们的要求。

image.png

实现步骤:

在单据转换规则界面按F9进入自定义公式界面,然后参照以下逻辑输入脚本(仅供参考,脚本格式见附件)


下面简单描述下写这个脚本过程中踩得雷也就是我们所讲的误区


误区一:自定义脚本里面拿到的字符串数组不能用xxxx[i]获取其中某一个具体数据,所以这个只能用自定义函数实现

image.png


误区二:字符串和字符串数组需要区分,字符串获取长度用.length()方法,字符串数组直接.length即可

if(valueArr.length==0){

     return  null;


误区三:自定义脚本和自定义函数中通过对象获取值的方式不同

自定义脚本中通过对象获取值的方法:

formula_result = __BOTgetObjectFromID(#sql_val("")).adminOrgUnit;

自定义函数的写法:

__BOTgetObjectFromID( id ).get("name");


赞 4