电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-236

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

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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信