实现保存时自动删除数量为0的行(摘自Joysing大佬)
金蝶云社区-小小小小酥
小小小小酥
6人赞赏了该文章 120次浏览 未经作者许可,禁止转载编辑于2024年07月30日 15:44:40

目前8.0版本,部分单据需要使用插件(或python脚本)实现,后续版本可能会有更多单据直接使用参数配置即可实现。

目前该业务功能系统内部分单据可直接支持,操作方式如下:

单据编辑界面--【选型--业务参数--勾选“保存时清除实发(退)为零的分录”】即可

image.png

若在业务参数内没有该配置,则可以使用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);




本文转载自:金蝶云社区

作者:Joysing

原文链接:https://vip.kingdee.com/article/336476268613057280?productLineId=1&lang=zh-CN

赞 6