集成服务云调用星空企业版科目余额表的查询报表数据接口案例原创
金蝶云社区-杨发
杨发
2人赞赏了该文章 374次浏览 未经作者许可,禁止转载编辑于2024年01月12日 17:54:04

采用数据结构+API实现数据集成方案的方式

https://developer.kingdee.com/school/detail/171921047992997888?productLineId=29&isKnowledge=2


 

接口的参数为 账簿编码,年份,开始月,结束月 

首先新建一个集成方案,源对象任意选一个结构的集成对象(数据源需要是星空企业版) 

集成方案定义4个参数

booknumber  账簿编码 

year  年份 

startmonth  开始月 

endmonth   结束月 

在来源数据获取,来源数据查询脚本里的脚本内容如下所示 

var booknumber=params.booknumber;
var year=params.year;
var startmonth=params.startmonth;
var endmonth=params.endmonth;


// 将结果转换为流式读取,并实现自动翻页以返回全部结果
var begin = 1;
var count = 2000;//每次调用最多获取1000行,必须与参数一致
var $result = invoke_xkapi($service,begin,count,booknumber,year,startmonth,endmonth);
var index = -1;
//借助Streaming 函数返回一个流对象,每读取一条数据,执行一遍Streaming函数里面的脚本
return Streaming({
    var item = $result[++index];
    indexid=indexid+1;
    if(item) return castdata(item,booknumber,year,startmonth,endmonth); //返回当前行

    if($result.length < count) return null;//最后一页没满,没有更多结果了

    begin += count;
    $result = invoke_xkapi($service,begin,count,booknumber,year,startmonth,endmonth);//查询下一页

    item = $result[index = 0];//返回下一页的第一行
    return (item ? castdata(item,booknumber,year,startmonth,endmonth) : null);
});
function castdata(item,booknumber,year,startmonth,endmonth) {
//["1002","银行存款","01.流动资产","人民币",null,null]
  var fieldkeys="FBALANCEID,FBALANCENAME,FACCTTYPE,FCyName,FDEBITLOCAL,FCREDITLOCAL";//和invoke_xkapi的保持一致
  var map={};
  map.booknumber=booknumber;
   map.year=year;
   map.startmonth=startmonth;
   map.endmonth=endmonth; 
  map.indexid=indexid;
  var fieldList=fieldkeys.split(",");
  for(var i=0; i<fieldList.length; ++i){
    var keystr=fieldList[i];
    map[keystr]=item[i];
  }
  return map;
}
function invoke_xkapi(src_service,begin,count,booknumber,year,startmonth,endmonth){
  var action="Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.GetSysReportData.common.kdsvc";
var data={"#data":[
  "GL_RPT_AccountBalance",
  {
    "FieldKeys": "FBALANCEID,FBALANCENAME,FACCTTYPE,FCyName,FDEBITLOCAL,FCREDITLOCAL",
    "SchemeId": "",
    "StartRow": begin,
    "Limit": count,
    "IsVerifyBaseDataField": "true",
    "FilterString": [],
    "Model": {
        "FACCTBOOKID": {
            "FNumber": booknumber
        },
        "FCURRENCY": "1",
        "FSTARTYEAR": year,
        "FSTARTPERIOD": startmonth,
        "FENDYEAR": year,
        "FBALANCELEVEL": "4",
        "FENDPERIOD": endmonth,
        "FSHOWDETAIL": false,
        "FFORBIDBALANCE": true,
        "FNOTPOSTVOUCHER": false,
        "FDEBITORCREDIT": false,
        "FBALANCEZERO": true,
        "FNOBUSINESS": false,
        "FPERIODNOBALANCE": true,
        "FYEARNOBALANCE": true,
        "FSHOWFULLNAME": false,
        "FDETAILSHOWACCT": false,
        "FSHOWDETAILONLY": false,
        "FEXCLUDEADJUSTVCH": false,
        "FFLEXDEBITORCREDIT": false,
        "FSHOWFLEXBYCOL": false
    }
}


]};
var  res= src_service(action, data).result;//来源是星空
return res.Result.Rows;
}



注意点:fieldkeys是查询的字段,在invoke_xkapi和castdata需要一致,需要,分割,中间无空格 

 通过这个脚本可以查到科目余额表的数据

测试的时候可以选择集成云的基础资料demo2 可以在转换脚本里 throw src;

 拿到最新fieldkeys的json数据后,通过数据集的json导入功能,

定义为结构类型 数据源为星空企业版,发布成结构的集成对象

,在集成方案重新选择发布后的集成对象,

这样在字段映射的源字段双击或者单击 可以直接选择字段。 


 此方案是单个账簿,某年 某月到某月的。 

 如果需要多个账簿,可以使用服务流程,定义好多个账簿的集合,

循环后通过数据集成节点 参数调用启动方案 传入账簿编码 年 开始月 结束月。

(调用前可能还需要使用脚本节点truncate 目标表)



赞 2