Python插件 - 如何通过单据保存时把单据体上的数据赋值到基础资料【SQL方式更新】

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

Python插件 - 如何通过单据保存时把单据体上的数据赋值到基础资料【SQL方式更新】

[python插件代码,如何通过采购入库单保存时把单据体上的仓库、仓位赋值到基础资料的仓库、仓库](https://wenku.my7c.com/questions/476714464754828288?productLineId=1) 对于次回答提供了解决思路,但是没完全解决一直在私信交流,决定开篇文章分享功能 # 重点 - 要查看 e.DataEntitys 的数据包结构 因为了解了结构才能更顺利的取值避免多次取值失败 - 通过 ==raise NameError(JsonConvert.SerializeObject(obj));== 获取数据包结构 ![获取JSON结构.webp](/download/01002127709e165049429e3fde56a2a3376b.webp) - **修改完基础资料一定要清除缓存** - **修改完基础资料一定要清除缓存** - **修改完基础资料一定要清除缓存** - 重要的事情说三遍 # 部署 ![1691578113144.webp](/download/01005b26938d408f4240b5a58403ac9dcc3f.webp) # 代码块 ``` python import clr clr.AddReference("System") clr.AddReference("System.Core") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.App") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("Newtonsoft.Json") clr.AddReference("Kingdee.BOS.ServiceHelper") from Kingdee.BOS.Util import * from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.Metadata.FormElement import * from Kingdee.BOS.App.Data import * from System import * from System.Linq import * from System.Text import * from Newtonsoft.Json import * from Newtonsoft.Json.Linq import * from Kingdee.BOS.ServiceHelper import * def AfterExecuteOperationTransaction(e): obj = e.DataEntitys; _FEntity=obj[0]["InStockEntry"] #获取单据明细表 #raise NameError(JsonConvert.SerializeObject(obj)); #用于查看数据结构 方便取值使用 for item in _FEntity : MaterialId_Id= item["MaterialId_Id"];#物料标识 StockId_Id = item["StockId_Id"];#仓库标识 StockLocId_Id = item["StockLocId_Id"]; #仓位标识 if StockId_Id is not None: #更新基础资料 _UpdateSql="/*dialect*/ UPDATE t_BD_MaterialStock set FSTOCKID = {0},FSTOCKPLACEID = {1} where FMATERIALID = {2}".format(StockId_Id,StockLocId_Id,MaterialId_Id); DBUtils.Execute(this.Context,_UpdateSql); ClearCache(MaterialId_Id);#清除缓存资料 def ClearCache(ID): #缓存清理 FORMID="BD_MATERIAL";#基础资料的表单ID completaMetadata = MetaDataServiceHelper.Load(this.Context,FORMID); pkList = [-1]; pkList[0] = ID; BusinessDataServiceHelper.ClearCache(this.Context, completaMetadata.BusinessInfo.GetDynamicObjectType(), pkList); CacheUtil.ClearCache(this.Context.DBId + FORMID, "BOS_QuickBaseDataCache"); ``` # 结果 ## 更新前数据 ![更新前.webp](/download/010026b96ca4fc7f44cf8884921eefa6adbb.webp) ## 更新后 ![更新后.webp](/download/010026c15b96a3a146f8acba70543f7e70f2.webp) ## 客户端显示 ![更新后UI展示.webp](/download/010069086a1f6f604e70aa9cdf73ed95fd8d.webp)

谢谢,这样做可以把企业个性化需求实现简化了,内部IT可以去处理了,也减少找第三方去开发的费用支出。


这个插件在“审核”操作上可以用么


牛逼的功能


非常给力的技术,使用ok


@云社区用户Zj3A284 

Python插件 - 如何通过单据保存时把单据体上的数据赋值到基础资料【SQL方式更新】

[python插件代码,如何通过采购入库单保存时把单据体上的仓库、仓位赋值到基础资料的仓库、仓库](https://wenku.my7c.com/questions/476714...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息