python插件开发-BOM保存前新增物料
公司业务部门提出需求,希望一些特殊物料依据一定的规则在保存BOM时,能自动增加到单据体中,
下面是利用python编写的插件,插件注册在菜单插件中,特殊物料按照一定的规则通过SQL存储过程获取。
import clr clr.AddReference("mscorlib") clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.ServiceHelper') from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Core.Validation import * from Kingdee.BOS.Log import Logger from Kingdee.BOS.ServiceHelper import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Core.Bill.PlugIn.Args import * from Kingdee.BOS.App.Data import * def BeforeDoOperation(e): opCode=e.Operation.FormOperation.Operation.ToUpperInvariant();#触发操作代码大写,例如保存:SAVE if(opCode=="SAVE"): fmodel = this.View.Model.GetValue("F_BLNS_Text") #获取表头规格型号 FMATERIALID = this.View.Model.GetValue("FMATERIALID",0) #获取表头物料ID FDESCRIPTION = this.View.Model.GetValue("FDESCRIPTION",0) #获取备注内容 FFNUMBER = FMATERIALID["Number"] FNAME = FMATERIALID["Name"] FNAME = str(FNAME) #此处一定要转为str FDESCRIPTION = str(FDESCRIPTION) FNAME = FNAME.rstrip() #清除字符串后的空格 FDESCRIPTION = FDESCRIPTION.rstrip() #清除字符串后的空格 #只有符合条件的BOM才新增物料 if FFNUMBER[0:3] == 'QGC' and FNAME == "改造机器" and FDESCRIPTION != "系统自动生成": #执行MSSQL存储过程,获取物料编码 sql = """/*dialect*/exec ZRL_ZJ_QueryMaterial '{0}' """.format(fmodel) result = DBUtils.ExecuteDataSet(this.Context, sql) #操作盒贴纸 if result and result.Tables.Count > 0 and result.Tables[0].Rows.Count > 0: data = result.Tables[0].Rows # 用于存放两个fnumber数值的列表 fnumber_list = [] for row in data: # 通过列名访问特定字段的值 fnumber = str(row['fnumber']) fnumber_list.append(fnumber) # 单据体最后新增一个空白行,并更新编码、备注信息 this.View.Model.CreateNewEntryRow("FTreeEntity");#为单据体新增一行 row = this.View.Model.GetEntryCurrentRowIndex("FTreeEntity");#获取单据体当前焦点行号 this.View.Model.SetItemValueByNumber("FMATERIALIDCHILD",fnumber,row-1) #更新物料编码 this.View.Model.SetValue("FEFFECTDATE",'1998/8/8',row-1) #更新生效日期 this.View.Model.SetValue("FMEMO",'系统生成',row-1) #更新备注 this.View.UpdateView("FMATERIALIDCHILD");#刷新字段 this.View.Model.SetValue("FDESCRIPTION","系统自动生成",0) #更新表头数据源 this.View.ShowWarnningMessage("特殊物料[" + (','.join(fnumber_list)) + "]已插入BOM子项,请留意!") else: this.View.ShowWarnningMessage("请勿重复插入特殊物料!")
python插件开发-BOM保存前新增物料
公司业务部门提出需求,希望一些特殊物料依据一定的规则在保存BOM时,能自动增加到单据体中,下面是利用python编写的插件,插件注册在菜单...
点击下载文档
上一篇:云星空融合数据字典下一篇:销售订单手工行关闭,单据体行变色
本文2024-09-16 17:10:47发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14029.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章