二开-系统标准报表数据存档落地原创
金蝶云社区-海Tony
海Tony
6人赞赏了该文章 486次浏览 未经作者许可,禁止转载编辑于2023年10月09日 16:10:12

        前面《二开-通过报表引擎获取系统标准报表数据》文章(https://vip.kingdee.com/article/499241311581250816?fromAction=POST_ARTICLE&productLineId=1),已经介绍了如何通过报表引擎获取系统标准报表数据。现在新建一个单据用来保存存档数据,新建一个动态表单供用户选择入参:核算组织编码、截止会计年度、截止会计期间。

1、新建单据保存系统标准报表存档数据:

1696838019957.png

2、打开《销售订单成本跟踪表存档数据》,点击菜单“存档报表数据”,弹出动态表单《保存销售订单成本跟踪表存档数据》:

1696838300868.png

3、根据用户输入的核算组织编码、截止会计年度、截止会计期间和过滤方案Id,获取系统标准报表数据,覆盖对应核算组织和会计年度期间的数据保存到《销售订单成本跟踪表存档数据》单据。

           ISysReportService sysReportService = ServiceFactory.GetSysReportService(ctx);
            
            string formId = "CB_OrderCostTrack";
            var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId);

            IRptParams p = new RptParams();

            string schemeId = KDConfiguration.Current.GetAppSettingItemValue("CB_OrderCostTrack_CD_SCHEMEID");

            if (string.IsNullOrWhiteSpace(schemeId))
            {
                throw new KDException("OrderCostTrackService_Schedule", "销售订单成本跟踪表不存在专用的过滤方案,请联系相关人员设置!");
            }
            p = p.CreateFromSysReportFilterScheme(ctx, reportMetadata, schemeId);

            var customFilterObj = p.FilterParameter.CustomFilter;

            //获取用户在动态表单输入的截止会计年度、截止会计期间和核算组织

            int year = this.View.Model.DataObject.GetPropertyValue<int>("F_QWZE_EndYear");
            int month = this.View.Model.DataObject.GetPropertyValue<int>("F_QWZE_EndPeriod");
            DynamicObject acctgOrgObj = this.View.Model.DataObject.GetPropertyValue<DynamicObject>("F_QWZE_ACCTGORGID");
            long acctgOrgId = acctgOrgObj.GetPropertyValue<long>("Id");

            //更新过滤方案的查询参数
            customFilterObj["FEndYear"] = year;
            customFilterObj["FEndPeriod"] = month;
            customFilterObj["ACCTGORGID"] = acctgOrgObj;
            customFilterObj["ACCTGORGID_Id"] = acctgOrgId;

            //分页大小
            int pageSize = 90000000;         

            p.StartRow = 1;
            p.EndRow = pageSize;


             using (DataTable dt = sysReportService.GetData(ctx, reportMetadata.BusinessInfo, p))
             {

                 //针对获取的标准报表数据dt做后续的处理,保存数据到单据(略)……

             }


赞 6