干货:如何在BOTP规则中使用substring函数原创
金蝶云社区-潘文彬
潘文彬
18人赞赏了该文章 195次浏览 未经作者许可,禁止转载编辑于2024年07月09日 15:59:01

业务需求:

外系统通过EAS集成模块传过来一个字段,子票包区间,字段结构: 1234-45678(举例),到目标系统EAS的单据-应收票据,要求拆为2个字段,子票包开始序号1234、子票包结束序号45678,“-”前后多少位数不一定,唯一确定的是前后是用“-”隔开的。

解决方法:通过botp规则配置,使用substring和index结合的方式解决。


知识点①:验证服务器支不支持我们即将要用的函数

image.png


知识点②:最终解决问题的语句


-----例如:子票包区间,1234-45678。以下语句的意思是:从集成的中间单据分录中找到“子票包区间”这个字段,取从第一个字符数起,到“-”之前的位置的字符

使用#sql_val("") 是因为直接使用“子票包区间”这个字段系统会报错,所以从数据库取一次,确保这是个字符串,这样才能支持substring取数;

字段.substring(  0,字段.indexOf("-"))这个是BOTP里面使用这个函数的语法


公式结果  = (#sql_val("select CFZX_ZPQJ from CT_EIP_JZT2023010101Entry where fid='" + 本部英克凭证和票据pm42023.分录.ID + "'")).substring(  0, (#sql_val("select CFZX_ZPQJ from CT_EIP_JZT2023010101Entry where fid='" + 本部英克凭证和票据pm42023.分录.ID + "'")).indexOf("-")  ) ;

image.png

----下面这句话则表示从"-"后面那个字符开始到最后一个字符。最后一个字符并不需要表达,+1表示从“-”后面那个字符开始取

公式结果  = (#sql_val("select CFZX_ZPQJ from CT_EIP_JZT2023010101Entry where fid='" + 本部英克凭证和票据pm42023.分录.ID + "'")).substring(   (#sql_val("select CFZX_ZPQJ from CT_EIP_JZT2023010101Entry where fid='" + 本部英克凭证和票据pm42023.分录.ID + "'")).indexOf("-") + 1 ) ;


指导老师:陈凯生

图标赞 18
18人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!