
## WebAPI自定义接口获取报表数据
### 一、提问:
想要开发自定义物料收发明细报表接口,供第三方调用,难点:1、需要知道报表数据抓取的范例或者逻辑?2、后台找不到物料收发明细表的表名,应该怎么取呢?3、想查询具体条件如组织、物料的报表数据,这个物料收发明细的数据如何取?
通过多个论坛文章参考:
1、在插件中获取分页账表数据:https://wenku.my7c.com/article/98475029272558848?productLineId=1&isKnowledge=2
2、WebAPI自定义接口调用报表数据:https://wenku.my7c.com/article/25709?productLineId=1
3、分页账表封装自定义WebApi接口供第三方系统调用示例:https://wenku.my7c.com/article/273824919174636288?productLineId=1
最后结合自己实际开发接口后,实现如下:
### 二、实现
```
var ctx = this.KDContext.Session.AppContext;
//库存组织
string FStockOrgId = jObject["FStockOrgId"].ToString();
//起始日期 2022-6-15
string FBeginDate = jObject["FBeginDate"].ToString();
//结束日期 2022-6-15
string FEndDate = jObject["FEndDate"].ToString();
//是否包含禁用物料
bool FShowForbidMaterial = Convert.ToBoolean(jObject["FShowForbidMaterial"].ToString());
//库存状态是否包含在途
bool FStockStatus = Convert.ToBoolean(jObject["FStockStatus"].ToString());
ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(ctx);
var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);//加载字段比较条件元数据。
var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "STK_StockDetailRpt");//加载报表
var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "STK_StockDetailFilter");//加载报表过滤条件元数据。
var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider();
var model = new SysReportFilterModel();
model.SetContext(ctx, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider);
model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
model.FilterObject.FilterMetaData = filterMetadata;
model.InitFieldList(reportMetadata, reportFilterMetadata);
model.GetSchemeList();
//查询默认过滤方案id
string Sql = "SELECT fschemeid FROM T_BAS_FILTERSCHEME where fformid='STK_StockDetailRpt' and fschemename='Default Scheme'";
string fschemeid = "";
using (IDataReader reader = DBServiceHelper.ExecuteReader(ctx, Sql))
{
if (reader.Read())
{
fschemeid = reader["fschemeid"].ToString();
}
}
if (string.IsNullOrEmpty(fschemeid))
{
return "过滤方案为空,请配置物料收发存明细表的过滤方案!";
}
//过滤方案的主键值,可通过该SQL语句查询得到:SELECT * FROM T_BAS_FILTERSCHEME
//var entity = model.Load("62a859a944add8");
var entity = model.Load(fschemeid);
//查询