单据体字段一致性校验Python试例原创
金蝶云社区-angen
angen
16人赞赏了该文章 251次浏览 未经作者许可,禁止转载编辑于2022年11月25日 19:04:33

    客户的某些特殊场景要求单据体的某些字段(假设为字段A)都必须相同才能保存,这种一般可以通过编写C#校验器插件代码(继承至 Kingdee.BOS.Core.Validation.AbstractValidator  ),遍历所有单据体分录,对所有分录的字段A的值进行排重后计数,当数量大于1时添加校验提示信息。通常C#代码插件比Python插件繁杂且需要.NET技术,本文将介绍如何通过Python插件处理。

    下面以销售订单的明细信息中的备注字段为例演示如何配置Pyhton插件,首先扩展销售订单,保存操作上配置一个校验规则,如下图1-1所示:

image.png

图1-1


    上文本中的表达式的文本为:len(set(map(lambda x:x.FEntryNote, FSaleOrderEntry))) > 1  ,这里说明下表达式中的set方法会自动排除重复数据,如果是需要过滤掉备注为空的值(即备注为空的记录不参与校验),则可以添加filter方法,表达式为:len(set(map(lambda y: y.FEntryNote, (filter(lambda x: x.FEntryNote.strip() != '', FSaleOrderEntry))))) > 1 

    BOS IDE保存上面Python插件代码后,登录星空业务系统,创建新的销售订单,当分录备注不一样时,保存会有提示,当备注相同时,保存通过,分别如下图1-2和图1-3所示 :

image.png

图1-2


image.png

图1-3

赞 16