单据转换插件--获取源单数据前事件(OnBeforeGetSourceData)原创
金蝶云社区-eris
eris
2人赞赏了该文章 854次浏览 未经作者许可,禁止转载编辑于2023年09月22日 09:55:48

一、说明

1、OnBeforeGetSourceData 获取源单数据前事件,在把查询参数对象解析为查询对象,执行sql脚本前触发,

对查询对象、参数和过滤描述进行干预,这是获取源单数据的最后一次干预,已经生成了相应的sql脚本,不会再去生成脚本了。

2、BeforeGetSourceDataEventArgs参数,相关属性

1)Context 上下文

2)BusinessInfo 源单元数据信息

3)QueryObject 输入/出参数,查询对象

4)ParamList  输入/出参数,SqlParam参数,输入值为解析源单选中行时在OnInSelectedRow事件中加入的参数或行数大于100产生的参数

5)filterDescriptionFilter 输入/出参数, 输入值为解析源单选中行产生的过滤条件,存在于下推筛选源单描述对象中,

自定义此处的过滤条件,当没有取到任何源单数据时,会影响到根据筛选源单描述对象找出具体不满足的条件情况。 

二、代码示例

1、取数之前加上分录内码为1111的数据

using System;
using System.ComponentModel;
using System.Text;
using System.Linq;
using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
namespace Kingdee.BOS.TestPlugIn.BillABillB
{
    [HotUpdate]
    [Description("单据转换插件")]
    public class BillConvertPlugIn : AbstractConvertPlugIn
    {
        private string _pkKey = string.Empty;
        public override void OnInSelectedRow(InSelectedRowEventArgs e)
        {
            base.OnInSelectedRow(e);
            this._pkKey = e.PkKey;
        }
        public override void OnBeforeGetSourceData(BeforeGetSourceDataEventArgs e)
        {
            base.OnBeforeGetSourceData(e);
            var entryTbName = "BillA_Entry"; //表名
            var entryTbNameAlias = e.QueryObject.DicTableAlias[entryTbName];//表别名
            //再取数之前加上分录内码为1111的数据
            var newPkKeyWhere = string.Format(" OR {0}.FEntryId = 1111", entryTbNameAlias);
            e.QueryObject.SQLWhere = e.QueryObject.SQLWhere + newPkKeyWhere;
            //刷选源单过滤条件也要加上
            e.filterDescriptionFilter = e.filterDescriptionFilter + string.Format(" OR {0} = 1111", this._pkKey);
        }
    }
}



图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!