
有一点点基础的开发
1. 创建单据转换插件
2. 编写代码
```
public class supplierBillSwitch : AbstractConvertPlugIn
{
//源单的数据包(在OnAfterCreateLink方法李没有找到获取源单数据的方法,
只能从OnGetSourceData获取源单数据,赋给私有属性)
private DynamicObject sourceBill = null;
//源单的fid(看情况使用)
private object fid;
public override void OnGetSourceData(GetSourceDataEventArgs e)
{
base.OnGetSourceData(e);
fid = e.SourceData[0]["FId"];
if (fid != null && !"".Equals(fid))
{
// 确定需要加载的源单字段(仅加载需要携带的字段)
List<SelectorItemInfo> selector = new List<SelectorItemInfo>();
selector.Add(new SelectorItemInfo("源单字段标识"));
selector.Add(new SelectorItemInfo("源单字段标识"));
selector.Add(new SelectorItemInfo("源单字段标识"));
//。。。
//筛选条件
string sfilter = string.Format("FID = {0} ", fid.ToString());
OQLFilter filter = OQLFilter.CreateHeadEntityFilter(sfilter);
if (null == sourceBill)
{
//获取源单的数据包,selector可以填写为null,这样是源单的所有数据
IViewService viewService = ServiceHelper.GetService<IViewService>();
sourceBill = viewService.Load(this.Context, e.SourceBusinessInfo.GetForm().Id, selector, filter).FirstOrDefault();
}
}
}
/// <summary>
/// 关联关系子表已经创建并填写完毕后触发,
/// 此时,已经在关联子表中,记录了源单与目标单之间的关系
/// </summary>
/// <param name="e"></param>
/// <remarks>
/// 可以在此事件中,对关联关系子表内容进行调整,
/// </remarks>
public override void OnAfterCreateLink(CreateLinkEventArgs e)
{
// 目标单信息(getfield是获取字段的)
Entity targetContactEntry = e.TargetBusinessInfo.GetEntity("目标单单据体标识");
Entity targetBankEntry = e.TargetBusinessInfo.GetEntity("FBankInfo");
// 目标单单据体的数据包
DynamicObject dataObject = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead")[0].DataEntity;
//下推单据体的信息(这里赋值的是单据体,单据头你们自己研究吧,应该差不离)
DynamicObjectCollection tarContactEntryRows = targetContactEntry.DynamicProperty.GetValue(dataObject) as DynamicObjectCollection;
tarContactEntryRows.Clear(); // 删除空行
DynamicObject newRowContact = new DynamicObject(targetContactEntry.DynamicObjectType);
tarContactEntryRows.Add(newRowContact);
newRowContact["字段标识(不带F)"] = sourceBill["字段标识"];
newRowContact["字段标识(不带F)"] = sourceBill["字段标识"];
//。。。
}
}
```
仅供参考
关联案例链接:
[单据转换插件案例](https://wenku.my7c.com/article/229916094369502720?channel_level=%E9%87%91%E8%9D%B6%E4%BA%91%E7%A4%BE%E5%8C%BA%7C%E6%90%9C%E7%B4%A2%7C%E7%BB%BC%E5%90%88&productLineId=1)
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace 我的模板
{
[Description("【->】单据转换插件"), HotUpdate]
public class 单据转换插件 : AbstractConvertPlugIn
{
private long srcBillId;//源单 内码
private string srcFormId;//源单 表单唯一标识
/// <summary>
/// 获取 源单数据 时 调用
/// </summary>
public override void OnGetSourceData(GetS