销售订单单据体字段条件唯一性校验试例原创
金蝶云社区-文安根
文安根
76人赞赏了该文章 482次浏览 未经作者许可,禁止转载编辑于2023年05月07日 12:45:14

    销售订单保存时,通版默认只会校验表头上的客户,销售员,以及单据体上的物料和数量等常用字段的必录,一般情况下这可以满足部分客户的需求。针对一些特殊需求,比如如何控制销售订单单据体中的所有行或者部分行中的某个字段必须一致?本文用分录上的'备注'字段来做演示:

    首先,扩展销售订单,保存操作上添加单据合法性校验,如下图1-1所示:

image.png

图1-1


    上图1-1中的表达式为:len(set(map(lambda m:m.FEntryNote, filter(lambda x: x.FEntryNote <> null and x.FEntryNote <> '' and  x.FEntryNote <> ' ', FSaleOrderEntry)))) <> 1

    这里做个简单解释,首先通过filter函数过滤分录中的备注不为空的记录(返回整条分录记录的集合),再通过map函数投影出分录备注字段(即从整条分录中只取备注数据出来),然后再通过set方法排重,最后通过len方法计算排重后的数量,当不为1时,保存不通过。表达式也可以根据需求写成 大于 1(即为0时也可以保存),客户可以根据上文中类似的替换 FEntryNote 为其它需要的字段。比如是二开的基础资料字段,则filter方法里面的lambda表达式可以使用 x.二开的基础资料字段 <> null 来表示,当然也可以通过在filter里面追加其它过滤条件。

    下图1-2为校验不通过的截图,图1-3及1-4为校验通过截图:

image.png

图1-2


image.png

图1-3


image.png

图1-4

赞 76