众所周知,单据转换规则是可以使用sql的,这样就避免了开发自定义公式的繁琐步骤。
#sql_val(select ....)
今天碰到一个很奇怪的问题,就是
formula_result = #sql_val("/*dialect*/select '付'||replace(t2.FName_l2,'供应商','')||'款' from T_BD_SupplierCompanyInfo t1 inner join T_BD_KAClassfication t2 on t2.FID=t1.FAccountClassID where 1=1 and t1.FComOrgID='" + OtherBillInfo.company.id + "' and t1.FSupplierID='" + OtherBillInfo.asstActID + "'");
sql单独在navicate或者查询分析器中执行都没问题
但是偏偏在单据转换中报错
在日志中发现是缺失右括号,因此怀疑是替换字符为''的问题
然后改成了'a',成功,
于是上面的sql就变成了
formula_result = #sql_val("/*dialect*/select '付'||replace(t2.FName_l2,'供应商','款') from T_BD_SupplierCompanyInfo t1 inner join T_BD_KAClassfication t2 on t2.FID=t1.FAccountClassID where 1=1 and t1.FComOrgID='" + OtherBillInfo.company.id + "' and t1.FSupplierID='" + OtherBillInfo.asstActID + "'");
总结一句话:应该命令避免替换字符串为空字符