表单插件.二开案例.关联复制行

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

表单插件.二开案例.关联复制行

【场景】关联复制行使用及注意事项 【说明】 0)关联复制行:复制单据的数据的同时,复制单据的关联信息 1)源单编号、源单类型字段:当且仅当勾选了允许控制且是关联复制行才会复制 ![image.webp](/download/010098c7efae26924d7791e1e06c5e715005.webp) ![image.webp](/download/01003f4c9053e5be418fa07fa81473152d6d.webp) 2)历史版本比对 | 版本 | 配置逻辑(允许复制) | 功能效果 | | ------ | ----------- |----| | 20230112 前 | 是 | 不论是否关联复制行,都会复制源单编号;导致即使上下查没有关联,也有源单编号字段| | | 否 | 不论怎么样都不会复制 | | 20230112 及之后| 是| 当关联复制行时,才会复制源单编号,否则不复制 | | | 否| 不论怎么样都不会复制 | 【二开逻辑】 当在历史版本需要复制源单编号字段时,建议按照以下调整二开代码,手工复制 (不建议直接开启允许复制,否则会导致普通复制行也会有源单编号字段) ```csharp using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using System.Collections.Generic; using System.Linq; namespace DynamicFormPlugIn.Demo { [Kingdee.BOS.Util.HotUpdate] public class SamplePlugIn_CopyEntryRow : AbstractDynamicFormPlugIn { public override void EntryBarItemClick(BarItemClickEventArgs e) { if (string.Equals(e.BarItemKey, "tb_Sample_CopyEntryRow")) { EntryEntity entity = this.View.BillBusinessInfo.GetEntryEntity("FPOOrderEntry"); int focusRowIdx = this.View.Model.GetEntryCurrentRowIndex(entity.Key); int totalRowCnt = this.View.Model.GetEntryRowCount(entity.Key); CopyRowWithLink(entity, focusRowIdx, totalRowCnt); } } /// <summary> /// 关联复制行功能,支持赋值源单编号和源单类型 /// </summary> /// <param name="entity"></param> /// <param name="cpyIdx"></param> /// <param name="insertIdx"></param> private void CopyRowWithLink(EntryEntity entity, int cpyIdx, int insertIdx) { /* 发放补丁:K3Cloud V8.1(1号补丁)(PT-146932) 发布时间:2022年12月22日 名称:功能改进:23.1:优化源单类型、源单编号的复制处理逻辑,当复制行操作勾选关联复制时,源单类型、源单编号应按关联关系写入来源。 修改内容:源单类型、源单编号勾选了允许控制并且是关联复制才允许复制 */ var srcRowObj = this.View.Model.GetEntityDataObject(entity, cpyIdx); this.View.Model.CopyEntryRow(entity.Key, cpyIdx, insertIdx, true); List<Field> specFields = entity.Fields. Where(x => (x is SourceBillNoField || x is SourceBillTypeField )).ToList(); /* * 如果需要业务流程字段,则使用下面这个代码 List<Field> specFields = entity.Fields. Where(x => (x is SourceBillNoField || x is SourceBillTypeField || x is BusinessFlowField) && x.IsCopyControl()).ToList(); */ if (specFields.Count >0) { var tgtRowObj = this.View.Model.GetEntityDataObject(entity, insertIdx); foreach(var field in specFields) { var copyValue = field.DynamicProperty.GetValue(srcRowObj); Model.SetValue(field, tgtRowObj, copyValue); } } } } } ```

您好!我写的this.View.BillBusinessInfo.GetEntryEntity("FEntity")返回的是null,单据是销售订单,这个是什么问题啊



采购入库单的物料勾选了来料检验时,使用二开代码关联复制行会被清除物料

表单插件.二开案例.关联复制行

【场景】关联复制行使用及注意事项【说明】0)关联复制行:复制单据的数据的同时,复制单据的关联信息1)源单编号、源单类型字段:当且仅当勾...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息