在表单操作中,添加服务端服务,设置自动下推时,为了配合单据转换规则的选单条件策略,通常需要同时将下推控制条件作为自动下推的前提条件,而对于单据体的条件,通常需要用到Lambda表达式,判断"单据体是否含有满足XXX条件的行),可以像这样设置:len(filter(lambda x : (x.F_CanPayAmt >x. F_GLBCFKSQJE ), F_CXMX))> 0
但是,通常会报错,类似于下图的错误,然后看表达式也没问题,就是不知道为啥。
解决方法:
我猜想,由于服务端在执行前提条件校验规则时,应该是在标准的操作服务插件事务中进行处理,懂插件开发的同事就知道,服务插件中默认不会加载单据的全部字段,只会加载一些单据编号、内码等关键信息,如果需要添加其他字段,需要在
OnPreparePropertys事件方法中先进行添加声明。为了方便快捷的处理这个问题,通过简单的Python脚本是比较好的方式。在对应的操作中,设置服务插件,注册Python脚本即可。卡了很久才发现是这个原因,因此写下这篇文章记录一下。
如下图所示:
Python示例如下:
import clr
clr.AddReference("System")
clr.AddReference("Kingdee.BOS.Core")
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from System import *
def OnPreparePropertys(e):
e.FieldKeys.Add("F_CanPayAmt");
e.FieldKeys.Add("F_GLBCFKSQJE");
e.FieldKeys.Add("F_CXMX");
推荐阅读