
【场景】单据复制时,支持二开复制指定字段
【案例】源单编号在普通复制时不携带,通过插件自行复制携带

```chsarp
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DynamicFormPlugIn.Test
{
[Kingdee.BOS.Util.HotUpdate]
[System.ComponentModel.Description("复制源单编号")]
public class BillPlugIn_CopySrcBillNo : AbstractBillPlugIn
{
/// <summary>
/// 单据复制后事件
/// </summary>
/// <param name="e"></param>
public override void AfterCopyData(CopyDataEventArgs e)
{
if (e.SrcDataObject == null || e.DataObject == null)
return;
//复制源单编号、源单类型该字段
List<Field> copyFieldList = View.BillBusinessInfo.GetFieldList().Where(x => x is SourceBillNoField || x is SourceBillTypeField).ToList();
if (copyFieldList == null || copyFieldList.Count <= 0)
return;
foreach(var copyField in copyFieldList)
{
CopyField(e.SrcDataObject, e.DataObject, copyField);
}
}
private void CopyField(DynamicObject srcDataObj, DynamicObject tgtDataObj, Field copyField)
{
//简单拷贝处理
Action<DynamicObject, DynamicObject> copyAct = (srcObj, tgtObj) =>
{
if (!tgtObj.DynamicObjectType.Properties.ContainsKey(copyField.PropertyName))
return;
tgtObj[copyField.PropertyName] = srcObj[copyField.PropertyName];
};
var entity = copyField.Entity;