
[原贴参考1](https://wenku.my7c.com/article/148691?productLineId=1)
[原贴参考2](https://wenku.my7c.com/article/81696654923133440?productLineId=1)
[原贴参考3](https://wenku.my7c.com/article/1094?productLineId=1)
[原贴参考4](https://wenku.my7c.com/article/209963869630678016?productLineId=1)
上面的原贴1、2、3几乎是一样的,以避免原贴失效所以3个都贴出来。因为原贴1有红字加粗看着方便,所以推荐原题1.
上面的原贴参考4学习到过滤方法(因为1、2、3中没有讲过滤)
开发环境:
1、客户机电脑是win7 64位旗舰版。
2、测试环境用金蝶是8.1版本,BOS也是8.1,代码引用的DLL是8.0版本
3、VS2010 ,.NET4
4、服务器是WIN10,SQL SERVER2008
========================== 分割线 ==========================
# 一、准备界面
### 1、新建简单账表


### 2、新建公共过滤

### 3、把公共过滤捆绑到简单账表


### 4、公共过滤拖一个文本控件

# 二、代码


```
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using System.ComponentModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
//添加引用后,缩写函数
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Bill.PlugIn;
using System.ComponentModel;
//数据库
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.DynamicForm;
using System.Data;
namespace JDSample.ServicePlugIn.Report
{
[Description("自定义简单账表")]
public class S151016MySysReport : SysReportBaseService
{
/***********事件执行顺序*************
2015/8/31 18:04:12 : Initialize
2015/8/31 18:04:12 : GetTableName
2015/8/31 18:04:15 : BuilderReportSqlAndTempTable
2015/8/31 18:04:15 : GetIdentityFieldIndexSQL
2015/8/31 18:04:15 : ExecuteBatch
2015/8/31 18:04:19 : GetReportHeaders
2015/8/31 18:04:19 : GetReportTitles
2015/8/31 18:04:27 : GetTableName
2015/8/31 18:04:27 : GetIdentityFieldIndexSQL
2015/8/31 18:04:28 : ExecuteBatch
2015/8/31 18:04:28 : AnalyzeDspCloumn
2015/8/31 18:04:28 : AfterCreateTempTable
2015/8/31 18:04:28 : GetSummaryColumnInfo
2015/8/31 18:04:28 : GetSummaryColumsSQL
2015/8/31 18:04:28 : GetTableName
2015/8/31 18:04:28 : GetTableName
2015/8/31 18:04:29 : ExecuteBatch
2015/8/31 18:04:29 : GetIdentityFieldIndexSQL
2015/8/31 18:04:29 : ExecuteBatch
2015/8/31 18:04:29 : CreateGroupSummaryData
2015/8/31 18:04:29 : GetListData
2015/8/31 18:04:30 : GetReportData
2015/8/31 18:04:30 : GetRowsCount
2015/8/31 18:04:30 : GetListData
*/
///
/// 初始化事件:在此事件中,设置报表基本属性
public override void Initialize()
{
base.Initialize();
// 简单账表类型:普通、树形、分页
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
// 报表名称
this.ReportProperty.ReportName = new LocaleValue("日采购报表", base.Context.UserLocale.LCID);
//
this.IsCreateTempTableByPlugin = true;
//
this.ReportProperty.IsUIDesignerColumns = false;
//
this.ReportProperty.IsGroupSummary = true;
//
this.ReportProperty.SimpleAllCols = false;
// 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示
//this.ReportProperty.PrimaryKeyFieldName = "FID";
//
this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
}
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
// 拼接过滤条件 : filter
DynamicObject dyFilter = filter.FilterParameter.CustomFilter;//快捷页签过滤条件
var strMingCheng = ObjectUtils.Object2String(dyFilter["F_XLJR_Text"]);
// 默认排序字段:需要从filter中取用户设置的排序字段
string seqFld = string.Format(base.KSQL_SEQ, " m.fmaterialid ");
string sql= string.Format(@"/*dialect*/
select distinct
m.fmaterialid ,
ml.fname ,
{0}
into {1}
FROM
t_bd_material m,
t_bd_material_l ml
WHERE
m.fmaterialid = ml.fmaterialid and
ml.fname like '%{2}%'", seqFld, tableName, strMingCheng);
DBUtils.ExecuteDynamicObject(this.Context, sql);
}
public override ReportHeader GetReportHeaders(IRptParams filter)
{
ReportHeader header = new ReportHeader();
var status = header.AddChild("fmaterialid", new LocaleValue("idid"));
status.ColIndex = 0;
var billNo = header.AddChild("fname", new LocaleValue("ming"));
billNo.ColIndex = 1;
return header;
}
public override ReportTitles GetReportTitles(IRptParams filter)
{
var result = base.GetReportTitles(filter);
DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
if (dyFilter != null)
{
if (result == null)
{
result = new ReportTitles();
}
//result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
result.AddTitle("F_JD_Date", "2022-12-12");
}
return result;
}
/*
public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
{
var result = base.GetSummaryColumnInfo(filter);
result.Add(new SummaryField("FQty", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("FALLAMOUNT", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
return result;
}
*/
}
}
```
# 三、复制DLL、注册DLL、重启IIS
### 1复制DLL到bin文件夹

### 2、注册DLL


### 3、重启IIS

发布到主控台略
# 四、运行看效果


