单据下推的时候提示,表达式计算出错/条件表达式结果转换失败!!!原创
金蝶云社区-MCXKD
MCXKD
9人赞赏了该文章 769次浏览 未经作者许可,禁止转载编辑于2023年11月24日 09:40:29

场景:单据下推的时候提示,表达式计算出错

错误信息如下:表达式计算出错/条件表达式结果转换失败


image.png

【原因】22年9月后,列表下推做了取数优化;

<1>单据界面使用的是当前加载的数据包做条件判断,数据包是完整的不会出现此问题;
<2>历史版本,列表下推时需要把整个单据都加载出来,每次点击都会加载,非常浪费数据库资源和服务器内存;
<3>修改之后,列表下推的选单条件策略计算,会根据条件中需要用到的字段进行解析,加载使用的字段
<4>表达式解析不支持复杂计算(如lambda),因此lambda中的字段没有读取,导致选单条件策略计算时报错

【处理方案】
由于python不支持复杂表达式的引用字段解析,建议后续使用单据体字段或者其他复杂表达式时做以下处理
<0>原表达式:举例说明

( FBillTypeID.FNumber  ==  'CGDD21_SYS'  or  FBillTypeID.FNumber  ==  'CGDD22_SYS'  ) and (  len(filter(lambda x:x. FENTRYSELFP0263.FNumber  <>   '002',FPOOrderEntry))>0 ) ( name 'FPOOrderEntry' is not defined )

<1>修改后表达式:举例说明

FENTRYSELFP0263 !=null and FPOOrderEntry !=null ( FBillTypeID.FNumber  ==  'CGDD21_SYS'  or  FBillTypeID.FNumber  ==  'CGDD22_SYS'  ) and (  len(filter(lambda x:x. FENTRYSELFP0263.FNumber  <>   '002',FPOOrderEntry))>0 ) ( name 'FPOOrderEntry' is not defined )

<2>逻辑说明:把复杂表达式的字段,单独写一个 field != null,用作引用解析

差异点:在原表达式前面新增(lambda条件相关字段)不等于null,用作引用解析

红线部分代表复杂表达式没有解析成功,因此需要增加 FMaterialId != null


image.png

赞 9