实现保存时自动删除数量为0的行

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

实现保存时自动删除数量为0的行

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

实现方式:

销售出库单、销售退货单:

单据编辑界面--【选型--业务参数--勾选“保存时自动删除实发(退)数量为0的行”】即可

image.webp

直接调拨单、生产领料单、生产退料单:

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

image.webp

其他单据未添加参数控制的,可以用以下python脚本实现:

(社区的代码编辑器会改变代码格式,直接复制代码可能会格式不正确,请下载附件内容)

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的行

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