前面《二开-通过报表引擎获取系统标准报表数据》文章(https://vip.kingdee.com/article/499241311581250816?fromAction=POST_ARTICLE&productLineId=1),已经介绍了如何通过报表引擎获取系统标准报表数据。现在新建一个单据用来保存存档数据,新建一个动态表单供用户选择入参:核算组织编码、截止会计年度、截止会计期间。
1、新建单据保存系统标准报表存档数据:
2、打开《销售订单成本跟踪表存档数据》,点击菜单“存档报表数据”,弹出动态表单《保存销售订单成本跟踪表存档数据》:
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做后续的处理,保存数据到单据(略)……
}
推荐阅读