单据转换.二开案例.针对行做插入选单
【场景】做插入行选单处理
【案例】二开实现,针对采购订单选单采购申请单,针对选中行位置插入关联关系行
![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...
点击下载文档
本文2024-09-16 18:20:14发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21488.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章