自动获取即时库存配置方案(二)

之前文章提到使用实体服务规则配合"行更新"的方式处理【单据转换自动获取即时库存信息?行选择来帮您】,【自动获取即时库存配置方案(一)】,实际效果是每切换单据体的选中行,都会触发获取即时库存的操作,明细行较多且切换行操作频繁,对性能有较大的损耗。
研究了一下,有个更好一点的实现方案避免出现性能问题: 单据头扩展按钮(注意是单据头配置,单据体插件无法触发到),配置"获取即时库存"操作, 注册表单插件重写事件使得单据下推,审核反审核触发操作,从而实现自动获取即时库存。




选单返回,没有设计特定事件
但系统会调用UpdateView,刷新界面数据。在此过程中,会触发OnLoad、BeforeBindData、AfterBindData等事件。
因此,通过this.View.OpenParameter.CreateFrom == CreateFrom.Draw 判断是否选单操作
据此与从数据库加载打开单据区分开
Python:
import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
from System import *
from System import StringComparison
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.Core.Metadata.FormElement import *
def AfterBindData(e):
if this.View.OpenParameter.CreateFrom == CreateFrom.Draw: # 选单返回触发
this.View.GetMainMenu().ItemClick("tbButton_1")
this.View.SendDynamicFormAction(this.View)
#this.View.UpdateView()
def AfterDoOperation(e):
if e.Operation.Operation.Equals("Audit", StringComparison.OrdinalIgnoreCase) or e.Operation.Operation.Equals("UnAudit", StringComparison.OrdinalIgnoreCase):
this.View.GetMainMenu().ItemClick("tbButton_1")
this.View.SendDynamicFormAction(this.View)
this.View.UpdateView()
def AfterCreateModelData(e): # 适用于单据下推自动获取场景
if this.View.OpenParameter.Status == OperationStatus.ADDNEW and this.View.OpenParameter.CreateFrom == CreateFrom.Push:
this.View.GetMainMenu().ItemClick("tbButton_1")
this.View.SendDynamicFormAction(this.View)C#
using System;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FormElement;
namespace Kingdee.K3.SCM.Stock.Business.PlugIn.MisBill
{
public自动获取即时库存配置方案(二)
之前文章提到使用实体服务规则配合"行更新"的方式处理【单据转换自动获取即时库存信息?行选择来帮您】,【自动获取即时库存配置方案(一)】...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



