文件服务.二开案例.复制单据时,同时复制附件列表中的附件到目标单据

1、应用场景:
目前复制单据时,只支持将单据上附件字段或者图片字段的附件复制到新的单据上,并不支持将附件列表的附件一起复制到目标单据。现状如下图:
1)单据编号为123的采购订单,附件字段跟附件列表都挂了附件。

2)复制单据保存,生成单据编号为CGDD000511的采购订单,附件字段复制了,但是无法复制附件列表中的附件过来。

2、案例演示:
如果用户有类似需求,可参考本帖通过二开实现。本案例将演示如何将采购订单的附件列表,在复制单据时一起复制到新的单据上。下图为实现后的效果:

3、实现步骤:
1)拓展采购订单单据,拖文本字段,用以记录源单单据内码。

2)编写表单插件,用以实现复制单据时,将源单单据内码携带到目标单上,使得我们在保存时可以查询得到源单关联附件信息,下图为示例代码:

using System.ComponentModel;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Util;
namespace Running.Sample.PlugIn.BusinessPlugIn.Bill
{
[Description("复制单据时赋值源单内码"), HotUpdate]
public class P20200925CopyPkValueEdit : AbstractBillPlugIn
{
public override void AfterCopyData(CopyDataEventArgs e)
{
//复制单据完毕后,判断存在FSourPkValue实体属性,则为其赋值源单内码。
if (e.DataObject.DynamicObjectType.Properties.ContainsKey("FSourPkValue"))
{
e.DataObject["FSourPkValue"] = e.PrimaryKeyValue;
}
}
}
}
3)采购订单注册表单插件:

4)编写保存操作插件,用以实现保存单据时,将源单关联的附件信息一并复制到新增单据上,下图为示例代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Util;
namespace Running.Sample.PlugIn.ServicePlugIn.Operation
{
[Description("保存单据时复制源单附件列表的附件到当前单据"), HotUpdate]
public class P20200925CopyFileSavePlugIn : AbstractOperationServicePlugIn
{
private const string SourPkPropName = "FSourPkValue"; //源单内码字段实体属性名。
private string _sourPkValue = string.Empty; //源单内码字段值。
public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
{
if (e.DataEntitys == null || e.DataEntitys.Length <= 0
|| !e.DataEntitys[0].DynamicObjectType.Properties.ContainsKey(SourPkPropName))
{
return;
}
//缓存源单内码字段值,并替换数据包值为空,防止重复保存时重复复制附件数据。
_sourPkValue = e.DataEntitys[0][SourPkPropName].GetString();
e.DataEntitys[0][SourPkPropName] = string.Empty;
}
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
if (_sourPkValue.IsNullOrEmptyOrWhiteSpace())
{
retur文件服务.二开案例.复制单据时,同时复制附件列表中的附件到目标单据
1、应用场景: 目前复制单据时,只支持将单据上附件字段或者图片字段的附件复制到新的单据上,并不支持将附件列表的附件一起复制到目标...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



