单据转换插件--获取源单数据前事件(OnBeforeGetSourceData)原创
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人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读