二开案例.账表服务插件.使用高级过滤

所属产品:

所属标签:

【应用场景】

在账表过滤窗体上启用高级过滤。


【案例演示】

采购订单执行明细表,启用高级过滤。


【案例演示】

<1>编写账表服务插件,代码如下。

using Kingdee.BOS.Core.Report;

using Kingdee.BOS.Util;

using Kingdee.K3.SCM.App.Purchase.Report;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Report.PlugIn

{

    /// <summary>

    /// 【账表服务插件】使用高级过滤

    /// https://vip.kingdee.com/article/96303660623174656

    /// </summary>

    [Description("【账表服务插件】使用高级过滤"), HotUpdate]

    public class UseBatchFilterReportPlugIn : PurchaseOrderExecuteRpt

    {

        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)

        {

            // 快捷过滤条件已自动存放在FilterParameter.CustomFilter中,账表插件需要取值后自行封装成SQL过滤条件

            var customFilter = filter.FilterParameter.CustomFilter;

            // 高级过滤条件已自动存放在FilterParameter.FilterString中,账表插件可以直接拿来使用

            var commonFilter = filter.FilterParameter.FilterString;

            // TODO

            base.BuilderReportSqlAndTempTable(filter, tableName);

        }

    }

}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>登录BOSIDE,扩展采购订单执行明细表过滤界面,给高级页签下的【批量过滤条件表格】添加字段,注意字段的名称需要和条件页签下的【过滤条件表格】中的字段定义保持一致。

<4>采购订单执行明细表注册新的服务器插件,禁用原有的服务器插件,保存元数据,开发完毕。



现在可以登业务站点,打开采购订单执行明细表,验证一下高级过滤是否已生效。

VS附加进程启动调试,断点账表插件代码,可从插件事件中拿到我们在界面上输入的高级过滤的条件。

拿到高级过滤条件以后,就可以对报表数据源进行过滤啦。

过滤条件:(  FSupplierName IN (N'新宇集团',N'雅俊实业',N'明瑞五金') AND   FMaterialName IN (N'普通物料A',N'接板-A系列',N'六角螺母')  )产生的最终查询结果如下图。




【知识点】

<1>对于标准产品中的账表而言, 高级过滤条件已自动存放在FilterParameter.FilterString中,生成数据源的SQL语句也会自动把该条件附加上,因此,启用高级过滤,只需给对应账表的过滤窗体中的高级页签下的【批量过滤条件表格】添加字段,而账表插件本身通常不需要进行修改。

---------------------------------------------------------------------------------------------------------











【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

推荐知识