业务需求:
外系统通过EAS集成模块传过来一个字段,子票包区间,字段结构: 1234-45678(举例),到目标系统EAS的单据-应收票据,要求拆为2个字段,子票包开始序号1234、子票包结束序号45678,“-”前后多少位数不一定,唯一确定的是前后是用“-”隔开的。
解决方法:通过botp规则配置,使用substring和index结合的方式解决。
知识点①:验证服务器支不支持我们即将要用的函数
知识点②:最终解决问题的语句
-----例如:子票包区间,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("-") ) ;
----下面这句话则表示从"-"后面那个字符开始到最后一个字符。最后一个字符并不需要表达,+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 ) ;
指导老师:陈凯生