金蝶-分页账表-账表增加字段
详细说明操作步骤 步骤:
在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();
}
}
}
```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通