实现保存时自动删除数量为0的行(摘自Joysing大佬)
6人赞赏了该文章
120次浏览
编辑于2024年07月30日 15:44:40
目前8.0版本,部分单据需要使用插件(或python脚本)实现,后续版本可能会有更多单据直接使用参数配置即可实现。
目前该业务功能系统内部分单据可直接支持,操作方式如下:
单据编辑界面--【选型--业务参数--勾选“保存时清除实发(退)为零的分录”】即可
若在业务参数内没有该配置,则可以使用phython插件实现
(社区的代码编辑器会改变代码格式,直接复制代码可能会格式不正确,请下载附件内容)
import clr clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.App") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("System.Data") clr.AddReference('Kingdee.BOS.Contracts') from Kingdee.BOS.Util import * from System import * from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Orm import * from Kingdee.BOS.App import * from Kingdee.BOS.Contracts import * #采购入库单表单插件 def BeforeSave(e): DeleteEntryWhenZore("FInStockEntry","FRealQty") #数量为0时删除分录行。EntryKey:单据体标识,QtyKey:数量字段标识 def DeleteEntryWhenZore(EntryKey,QtyKey): entity = this.View.BillBusinessInfo.GetEntity(EntryKey); rows = this.Model.GetEntityDataObject(entity); #DynamicObjectCollection for i in range(rows.Count-1,-1,-1):#从后往前循环,不包括-1,步长为-1 Qty=this.View.Model.GetValue(QtyKey,i) if Qty==0 or Qty==None: this.View.Model.DeleteEntryRow(EntryKey,i);
采购入库单表单插件.zip(0.68KB)
本文转载自:金蝶云社区
作者:Joysing
原文链接:https://vip.kingdee.com/article/336476268613057280?productLineId=1&lang=zh-CN