【学习】单据转换插件原创
金蝶云社区-___________________
___________________
5人赞赏了该文章 392次浏览 未经作者许可,禁止转载编辑于2024年04月23日 09:42:10

扩展单据转换

首先要进行单据转换的扩展



image.png


继承类 重写方法

AbstractConvertPlugIn //继承单据转换类

AfterConvert  //重写单据转换后方法 最后触发:单据转换后 

public class Class6 : AbstractConvertPlugIn
    {
        public override void AfterConvert(AfterConvertEventArgs e)//最后触发:单据转换后 
        {
            base.AfterConvert(e);
            var Head = e.Result.FindByEntityKey("FBillHead");//获取转换后单据中的所有信息
            foreach (var item in Head)//有可能是多张单据同时下推
            {
                var SupplierId = item.DataEntity["SupplierId"] as DynamicObject;//基础资料转换信息
                var FDate = item.DataEntity["Date"].ToString();//普通文本字段 不需要转换
                var Entry = item.DataEntity["InStockEntry"] as DynamicObjectCollection;//单据体转换信息

                string SupplierName = SupplierId["Name"].ToString();
                foreach (var item2 in Entry)//循环明细
                {
                    var FMaterialId = item2["MaterialId"] as DynamicObject;
                    string FMaterialName = FMaterialId["Name"].ToString();

                    item2["Note"] = FDate + " | " + SupplierName + " | " + FMaterialName;//赋值给备注字段
                }
            }
        }
    }

获取下推后的采购入库中 供应商名称 日期 明细信息 物料名称 字段 赋值给 明细信息中的 备注 字段 


注册插件

在单据转换中 选择插件策略 将刚刚生成的插件注册进去

Snipaste_2024-04-22_11-18-37.jpg



下推

image.pngimage.png


代码分享

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;

namespace XueXi
{
    [Description("学习单据转换"), HotUpdate]
    public class Class6 : AbstractConvertPlugIn
    {
        public override void AfterConvert(AfterConvertEventArgs e)//最后触发:单据转换后 
        {
            base.AfterConvert(e);
            var Head = e.Result.FindByEntityKey("FBillHead");//获取转换后单据中的所有信息
            foreach (var item in Head)//有可能是多张单据同时下推
            {
                var SupplierId = item.DataEntity["SupplierId"] as DynamicObject;//基础资料转换信息
                var FDate = item.DataEntity["Date"].ToString();//普通文本字段 不需要转换
                var Entry = item.DataEntity["InStockEntry"] as DynamicObjectCollection;//单据体转换信息

                string SupplierName = SupplierId["Name"].ToString();
                foreach (var item2 in Entry)//循环明细
                {
                    var FMaterialId = item2["MaterialId"] as DynamicObject;
                    string FMaterialName = FMaterialId["Name"].ToString();

                    item2["Note"] = FDate + " | " + SupplierName + " | " + FMaterialName;//赋值给备注字段
                }
            }
        }
    }
}


赞 5