实现保存时自动删除数量为0的行(摘自Joysing大佬)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

实现保存时自动删除数量为0的行(摘自Joysing大佬)

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

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

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

image.webp

若在业务参数内没有该配置,则可以使用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的行(摘自Joysing大佬)

目前8.0版本,部分单据需要使用插件(或python脚本)实现,后续版本可能会有更多单据直接使用参数配置即可实现。目前该业务功能系统内部分...
点击下载文档
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息