标准报表新增字段(二开)原创
金蝶云社区-HN_楊華
HN_楊華
9人赞赏了该文章 136次浏览 未经作者许可,禁止转载编辑于2024年10月19日 13:21:30

近期处理一个小功能'标准报表扩展(新增字段)-->产品维度利润分析表新增存货类别字段',特此留痕,如可借鉴记得点赞收藏(比心比心)

效果:

image.png


image.png

-----代码示例
--Bos取消报表原有插件,绑定新插件,代码方法继承原有插件方法
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Util;
using Kingdee.K3.FIN.CB.App.Report;
using System.Text;
 
namespace XXXX_RPT_XXX_Plugin
{
    [System.ComponentModel.Description("产品维度利润分析表扩展")]
    public class Rpt_CB_PROSALEPROFITRPT : ProDimProfitRpt
    {
        private string[] customRptTempTableName;
        public override ReportHeader GetReportHeaders(IRptParams filter)
        {
            ReportHeader header = base.GetReportHeaders(filter); //返回base的字段在加
            header.AddChild("FCHLBName", new LocaleValue("存货类别", this.Context.UserLocale.LCID), 4).Width = 120;
            return header;
        }
 
        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();
            customRptTempTableName = dbservice.CreateTemporaryTableName(this.Context, 1);
            string strTable = customRptTempTableName[0];
            base.BuilderReportSqlAndTempTable(filter, strTable);
 
            StringBuilder sb = new StringBuilder();
            //物料.基本(子单据头),存货类别,存货类别多语言
            string strSql = string.Format(@"/*dialect*/select distinct t1.*,t8l.FNAME as FCHLBName into {0} from {1} t1                
                left join t_BD_MaterialBase t7 on t1.fproductid=t7.FMATERIALID 
                left join T_BD_MATERIALCATEGORY_L t8l on t7.FCATEGORYID =t8l.FCATEGORYID and t8l.FLOCALEID=2052 
                ", tableName, strTable);
            sb.AppendFormat(strSql, tableName, strTable);
            DBUtils.Execute(this.Context, sb.ToString());
        }
 
        public override void CloseReport()
        {
            if (customRptTempTableName.IsNullOrEmptyOrWhiteSpace())
            {
                return;
            }
            IDBService dbService = Kingdee.BOS.App.ServiceHelper.GetService<Kingdee.BOS.Contracts.IDBService>();
            dbService.DeleteTemporaryTableName(this.Context, customRptTempTableName);
            base.CloseReport();
        }
    }
}



图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!