金蝶-分页账表-账表增加字段

详细说明操作步骤 步骤:
在BOSIDE中找到你需要处理的报表:
1. 对原报表做一下扩展!

 


2、添加报表字段在扩展后的报表元数据中添加字段,注意添加的字段名,需要与代码中的字段名保持一致


3、注册插件扩展后,添加注册二次开发的插件,并把原报表服务插件取消启用

 


4. 扩展报表过滤条件(这里借用网上图片,自已没有截图。一样的)

 

 

 

 


继承标准产品的报表插件代码(集成服务插件的方法:SubLedgerService【查找方法在上3的服务插件原方法】):
```csharp
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Util;
using Kingdee.K3.FIN.GL.App.Report;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS;

namespace Halo.K3.GL.ServicePlugIn
{
[Kingdee.BOS.Util.HotUpdate]
[Description("明细分类账-自定义业务日期")]
public class CustomReportService : SubLedgerService
{
private string[] customRetTempTableNames;
/// <summary>
/// 重写GetReportHeaders方法
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportHeader GetReportHeaders(Kingdee.BOS.Core.Report.IRptParams filter)
{
//构建报表上显示的列
ReportHeader header = base.GetReportHeaders(filter);
header.AddChild("FBUSDATE", new LocaleValue("业务日期"));
return header;
}

/// <summary>
/// 构建数据
/// </summary>
/// <param name="filter">数据列</param>
/// <param name="tableName">临时表</param>
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
//创建临时表。用于存放自已的数据
IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();
customRetTempTableNames = dbservice.CreateTemporaryTableName(this.Context, 1);
string strTable = customRetTempTableNames[0]; //得到临时表
base.BuilderReportSqlAndTempTable(filter, strTable);

//对初步的查询结果进行处理,然后写回基类默认的存放查询结果的临时表
StringBuilder sb = new StringBuilder();
string strSql = "/*dialect*/ SELECT t1.* ,(case when ISNULL(a3.FBUSDATE,'')<>'' then a3.FBUSDATE else NULL end ) FBUSDATE "
+ " into {0} "
+ " FROM {1} t1 "
+ " LEFT JOIN T_GL_VOUCHER a3 ON t1.FVOUCHERID=a3.FVOUCHERID ";
sb.AppendFormat(strSql, tableName, strTable);
DBUtils.Execute(this.Context, sb.ToString());

}

/// <summary>
/// 刷新报表,删除临时表
/// </summary>
public override void CloseReport()
{
//删除临时表
if (customRetTempTableNames.IsNullOrEmptyOrWhiteSpace())
{
return;
}
IDBService dbService = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();
dbService.DeleteTemporaryTableName(this.Context, customRetTempTableNames);//使用完后的临时表要删除
base.CloseReport();

}
}

}

```

posted @   小麦东仔  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示