单据转换.二开案例.针对行做插入选单

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

单据转换.二开案例.针对行做插入选单

【场景】做插入行选单处理 【案例】二开实现,针对采购订单选单采购申请单,针对选中行位置插入关联关系行 ![image.webp](/download/0100131625c2ab4e4324beaa23773f21f470.webp) ![image.webp](/download/01008fe5497db8e9496e9e213067617e6f95.webp) ```csharp using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DynamicFormPlugIn.BillConvert { public class ConstKey { public static readonly string Entity = "FPOOrderEntry"; public static readonly string OpParam = "DrawInsertPos"; } [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("记录选中操作时的选中行")] public class DrawToInsertPos : AbstractBillPlugIn { public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { if (e.Operation == null) return; if (e.Operation.FormOperation == null) return; if (!string.Equals(e.Operation.FormOperation.Operation, "Draw", StringComparison.OrdinalIgnoreCase)) return; int rowIdx = this.View.Model.GetEntryCurrentRowIndex(ConstKey.Entity); e.Option.SetVariableValue(ConstKey.OpParam, rowIdx); } } [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("根据选中位置调整单据体数据包顺序")] public class ConvertServicePlugIn_DrawToInsertPos : AbstractConvertPlugIn { public override void AfterConvert(AfterConvertEventArgs e) { int rowIdx = 0; if (!this.Option.TryGetVariableValue(ConstKey.OpParam, out rowIdx)) return; if (rowIdx <= 0) return; Entity entity = e.TargetBusinessInfo.GetEntity(ConstKey.Entity); if (entity == null || entity.SeqDynamicProperty == null) return; var drawEntityResults = e.Result.FindByEntityKey(ConstKey.Entity); if (drawEntityResults == null || drawEntityResults.Length <= 0) return; int insertLinkSeq = rowIdx+1; HashSet<DynamicObject> linkObjs = new HashSet<DynamicObject>(); for (int i = 0; i < drawEntityResults.Length; ++i) { var drawEntityObj = drawEntityResults[i].DataEntity; if (drawEntityObj == null) continue; linkObjs.Add(drawEntityObj); drawEntityObj[entity.SeqDynamicProperty] = insertLinkSeq; ++insertLinkSeq; } var drawResultBill = e.Result.FindByEntityKey("FBillHead"); if (drawResultBill == null || drawResultBill.Length <= 0) return; var drawBillObj = drawResultBill[0].DataEntity; if (drawBillObj == null) return; DynamicObjectCollection entityObjColl = drawBillObj[entity.DynamicProperty] as DynamicObjectCollection; if (entityObjColl == null || entityObjColl.Count <= 0) return; for (int i = 0; i < entityObjColl.Count; ++i) { int seq = (int)entityObjColl[i][entity.SeqDynamicProperty]; // 前面的行不处理 if (seq < rowIdx + 1) continue; // 本次生成的link数据包,前面已经重置序号了 if (linkObjs.Contains(entityObjColl[i])) continue; entityObjColl[i][entity.SeqDynamicProperty] = insertLinkSeq; ++insertLinkSeq; } } } } ``` 【效果】 ![动画.webp](/download/0100ef9e201a9014420ab1060fb75e299d01.webp)

这个很实用的

单据转换.二开案例.针对行做插入选单

【场景】做插入行选单处理【案例】二开实现,针对采购订单选单采购申请单,针对选中行位置插入关联关系行![image.webp](/download/01001316...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息