电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

齐套分析子项明细自定义字段赋值处理指南

来源:金蝶云社区作者:金蝶2024-09-234

齐套分析子项明细自定义字段赋值处理指南

# 齐套分析子项明细自定义字段赋值处理指南 ## 需要提前了解的知识点 1.操作插件的开发(本文使用python操作插件作为案例,有编译条件的可以使用.net作为开发语言,一样的效果)注:本方案不适用于多租户部署 2.生产齐套分析单与齐套分析子项明细的元数据模型关系 3.如何添加物料属性引用 ## 本文案例 ### 我希望在生产齐套分析单的齐套分析子项明细携带二次开发的扩展字段。 #### 需要做的事情 1.齐套分析子项明细加入需要携带的目标字段 ![8.webp](/download/01009a2148df08054d4099ec534b16ecd286.webp) 2.扩展齐套分析单,于操作列表>保存操作>插件列表>注册Python插件加入二次开发插件,实现功能。有编译部署条件的朋友可以用.net实现,注册插件也是一样的。 ![9.webp](/download/01008a8894f70efb40448f231c551684ba2a.webp) #### 插件代码 ##### python版本 ```python #将本插件注册至生产齐套分析单保存操作,齐套分析单的分析功能在生成分析结果后,执行结束前会自动调用一次齐套分析单的保存 #通过保存注入该插件可以为二开的自定义字段作计算,赋值保存处理 import clr clr.AddReference('System.Core') clr.AddReference('Kingdee.BOS.ServiceHelper') clr.AddReference('Kingdee.BOS.DataEntity') from System.Linq import Enumerable from Kingdee.BOS.Util import ListUtils from Kingdee.BOS.Orm.DataEntity import DynamicObject from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter from Kingdee.BOS.ServiceHelper import MetaDataServiceHelper from Kingdee.BOS.ServiceHelper import BusinessDataServiceHelper def GetEntryKey(entry): return entry['MoEntryId'] def AfterExecuteOperationTransaction(e): dicMatchMoEntrys = Enumerable.ToDictionary(Enumerable.ToList(e.DataEntitys[0]['Entity']),GetEntryKey) #齐套分析单生产订单明细数据集合 fid = e.DataEntitys[0]['Id'] matchItemMeta = MetaDataServiceHelper.Load(this.Context,'PRD_MATCHDETAIL') qp = QueryBuilderParemeter() qp.FormId='PRD_MATCHDETAIL' qp.FilterClauseWihtKey = 'FID=%d' % (fid) qp.SelectItems = SelectorItemInfo.CreateItems('FENTRYID') matchItems = BusinessDataServiceHelper.Load(this.Context,matchItemMeta.BusinessInfo.GetDynamicObjectType(),qp) #抓取齐套分析单子项明细数据集合 if ListUtils.IsEmpty(matchItems):#空集则什么都不处理 return for matchItem in matchItems: if dicMatchMoEntrys.ContainsKey(matchItem['MoEntryId']): matchMoEntry = dicMatchMoEntrys[matchItem['MoEntryId']] #使用子项明细的MoEntryId匹配生产订单明细数据集合对应的订单分录 #实现子项明细的二次开发处理。获取字段的值使用对应字段的动态实体名 matchItemSubMtrl = matchItem['MaterialIdSub']#子项物料数据包,需要取物料字段先在齐套分析子项明细的物料编码字段加入引用属性 #获取物料字段要参考它所属的实体,如果字段的实体在子单据头上,需要先获取对应实体再取字段值 #以下提供几个获取物料字段的样例 mtrlBase = matchItemSubMtrl['MaterialBase'][0] #物料基本实体 erpclsId = mtrlBase['ErpClsId'] #物料属性 mtrlStock = matchItemSubMtrl['MaterialStock'][0]#物料库存实体 safeStock = mtrlStock['SafeStock']#物料库存页签的安全库存 specification = matchItemSubMtrl['Specification']#物料规格型号 #matchItem['MobillNo']= '%s|%d' % (matchMoEntry['MoBillNo'],matchMoEntry['MoEntrySeq'])#这是个样例,演示如何将生产订单明细的订单号+订单行号拼接填入子项明细的生产订单字段,二开逻辑可以在这里加入代码处理 BusinessDataServiceHelper.Save(this.Context,matchItems)#保存修改后的子项明细数据集合 ``` ##### C#版本 ```csharp using Kingdee.BOS; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Kingdee.K3.Core.MFG.EntityHelper; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SampleExtPlugIn { public class MatchBillSaveExtend : AbstractOperationServicePlugIn { public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { DynamicObject matchBillObject = e.DataEntitys[0]; var dicMatchMoEntrys = (matchBillObject["Entity"] as DynamicObjectCollection).GroupBy(x => x["MoEntryId"].ConvertTo<long>()).ToDictionary(x => x.Key, v => v.First());//齐套分析单生产订单明细数据集合 long fid = matchBillObject["Id"].ConvertTo<long>(0); FormMetadata matchItemMeta = MetaDataServiceHelper.Lo

齐套分析子项明细自定义字段赋值处理指南

# 齐套分析子项明细自定义字段赋值处理指南## 需要提前了解的知识点1.操作插件的开发(本文使用python操作插件作为案例,有编译条件的可以...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信