DOCID:KDSP_T_V4.0第1页共37页K3CloudWebAPI接口说明书_V3.0修改记录Ver.No发版日期编制人批准人修改的章节号V1.02016/8/9刘兵赖碧云初始版本V2.02017/1/19刘兵赖碧云附录6V3.02017/7/31张黎明DOCID:KDSP_T_V4.0第2页共37页目录1.概述..31.1.目的..31.2.范围..31.3.适用对象..31.4.参考资料..32.问题与解决策略..33.目标和约束..44.WebAPI架构.44.1.采用的技术..44.1.1.Kingdee.BOS.WebApi.FormService.dll.44.1.2.Kingdee.BOS.WebApi.ServicesStub.dll.44.1.3.Kingdee.BOS.WebApi.Client.dll..44.1.4.开发工具..45.WebAPI接口详细描述.55.1.1.登陆验证接口..55.1.2.查看表单数据接口..85.1.3.保存表单数据接口..95.1.4.批量保存表单数据接口..125.1.5.提交表单数据接口..155.1.6.审核表单数据接口..165.1.7.反审核表单数据接口..175.1.8.删除表单数据接口..185.1.9.表单数据查询接口..205.1.10.自定义WebAPI接口.215.1.11.登录验证接口带踢人.255.1.12.暂存接口..265.1.13.分配接口..265.1.14.下推接口..275.1.15.分组保存接口-------------------------------------------------------------------------------------285.1.16弹性域保存接口-----------------------------------------------------------------------------------305.1.17发送消息接口-------------------------------------------------------------------------------------325.1.18登出接口---------------------------------------------------------------------------------------336.附录(集成相关知识分享)..30DOCID:KDSP_T_V4.0第3页共37页DOCID:KDSP_T_V4.0第4页共37页1.概述1.1.目的为异构系统访问K/3Cloud系统数据提供通用的接口。当企业规模逐渐增大时,作为支撑业务运营的IT建设也变得越来越重要,不过往往企业的IT建设过程中会发现某一家软件供应商基本不能完全覆盖企业所有的业务运营流程,这样的结果就是,企业上的IT系统很多很全,从ERP到HR、CRM、PDM、OA等,貌似所有的业务都覆盖到了,但实际上因为这些系统的不集成,而形成了企业很多新的信息孤岛,非常不利于企业的后续的管理和战略发展。K/3Cloud从现今和往后的发展趋势来看,也不可避免会遇到上述问题,毕竟企业经营的多样化,并不是所有的业务都能在K/3Cloud中完成,所以我们必须在产品架构上支持更好的与外部系统进行协同。1.2.范围适用版本:V5.0和后续版本1.3.适用对象本文档适用于:开发工程师:参考,对系统集成的实现获取全局性的设计指导。1.4.参考资料2.问题与解决策略愿景关注点描述与示例DOCID:KDSP_T_V4.0第5页共37页3.目标和约束目标:提供对K/3Cloud单据和基础信息的查看、保存、提交、审核、反审核和删除等功能;提供对K/3Cloud单据和基础信息的查询功能;约束:数据操作接口仅支持以基础资料编码、单据编号或直接以表单主键去操作数据;支持对某一具体单据的数据查询,但多单关联查询需要二开接口实现。4.WebAPI架构4.1.采用的技术K/3CloudWebAPI是一种轻量级的、可维护的、可伸缩的Web服务。采用HTTP+JSON,也就是用RESTful的方式来开发。使用.NETFramework4.0为开发平台,源代码使用C#编写。整个框架由三个组装件组成。4.1.1.Kingdee.BOS.WebApi.FormService.dll此组装件包含WebAPI主要接口的功能实现。部署在应用层服务器。4.1.2.Kingdee.BOS.WebApi.ServicesStub.dll此组装件主要包含WebAPI接口定义,扩展接口定义以及登陆验证接口。部署在应用层服务器。4.1.3.Kingdee.BOS.WebApi.Client.dll此组装件为WebAPI的客户端组件,封装了一些在异构系统客户端访问WebAPI的方法,适用于C#程序调用。由于它应用于异构系统客户端,所以此组装件需要拷贝到异构系统客户端环境中。非C#程序调用可以不用拷贝。4.1.4.开发工具.NetFrameWork4.0MicrosoftVisualStudio2012DOCID:KDSP_T_V4.0第6页共37页5.WebAPI接口详细描述5.1.1.登陆验证接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc接口参数:参数列表参数含义备注acctID账套Id,从管理中心数据库查询获得参考查询:selectFDATACENTERIDfromT_BAS_DATACENTER必须username用户登陆名必须password密码必须lcid语言id,选择哪种语言访问,参考:中文2052,英文1033,繁体3076非必须,引用SDK组件辅助类调用则必须返回参数:参数列表参数含义备注LoginResultType//激活Activation=-7,//云通行证未绑定Cloud账号EntryCloudUnBind=-6,//需要表单处理DealWithForm=-5,//登录警告Wanning=-4,//密码验证不通过(强制的)PWInvalid_Required=-3,//密码验证不通过(可选的)PWInvalid_Optional=-2,//登录失败Failure=-1,//用户或密码错误PWError=0,//登录成功Success=1管理员登陆可能出现返回-5的情况,这种情况在api验证时也可认为是允许的,具体可以根据实际情况来定。varresult=JObject.Parse(ret)[-LoginResultType-].Value<int>();if(result==1||result==-5){returntrue;}DOCID:KDSP_T_V4.0第7页共37页调用参考:1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll):说明:下文中出现的client都为此处进行过登陆验证的ApiClient实例。ApiClientclient=newApiClient(-http://192.168.66.60/k3cloud/-);stringdbId=-5756960b27b1aa-;//AotuTest117boolbLogin=client.Login(dbId,-demo-,-888888-,2052);if(bLogin){//todo:登陆成功处理业务}2)无引用组件示例(不引用金蝶的组件):说明:以下HttpClient为自定义客户端调用辅助类,下文中所指HttpClient都表示这个类。usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Net;usingSystem.Text;usingNewtonsoft.Json.Linq;usingNewtonsoft.Json;publicclassHttpClient{///<summary>///SeiviceURL///</summary>publicstringUrl{get;set;}///<summary>///内容///</summary>publicstringContent{get;set;}///<summary>///Cookie,保证登录后,所有访问持有一个Cookie;///</summary>staticCookieContainerCookie=newCookieContainer();///<summary>///HTTP访问///</summary>publicstringAsyncRequest(){HttpWebRequesthttpRequest=HttpWebRequest.Create(Url)asDOCID:KDSP_T_V4.0第8页共37页HttpWebRequest;httpRequest.Method=-POST-;httpRequest.ContentType=-application/json-;httpRequest.CookieContainer=Cookie;httpRequest.Timeout=1000*60*10;//10minusing(StreamreqStream=httpRequest.GetRequestStream()){JObjectjObj=newJObject();jObj.Add(-format-,1);jObj.Add(-useragent-,-ApiClient-);jObj.Add(-rid-,Guid.NewGuid().ToString().GetHashCode().ToString());jObj.Add(-parameters-,Content);jObj.Add(-timestamp-,DateTime.Now);jObj.Add(-v-,-1.0-);stringsContent=jObj.ToString();varbytes=UnicodeEncoding.UTF8.GetBytes(sContent);reqStream.Write(bytes,0,bytes.Length);reqStream.Flush();}using(varrepStream=httpRequest.GetResponse().GetResponseStream()){using(varreader=newStreamReader(repStream)){returnValidateResult(reader.ReadToEnd());}}}privatestaticstringValidateResult(stringresponseText){if(responseText.StartsWith(-response_error:-)){returnresponseText.TrimStart(-response_error:-.ToCharArray());}returnresponseText;}}登陆验证参考:HttpClienthttpClient=newHttpClient();httpClient.Url=DOCID:KDSP_T_V4.0第9页共37页-http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc-;List<object>Parameters=newList<object>();Parameters.Add(-558cbb01bfc79b-);//帐套IdParameters.Add(-Administrator-);//用户名Parameters.Add(-888888-);//密码Parameters.Add(2052);httpClient.Content=JsonConvert.SerializeObject(Parameters);variResult=JObject.Parse(httpClient.AsyncRequest())[-LoginResultType-].Value<int>();if(iResult==1){//todo:验证成功,处理业务}5.1.2.查看表单数据接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc接口参数:参数列表参数含义备注formid表单Id,格式参考:-IV_SALESIC-//表示发票必须data数据包,Number表示单据编号或者基础资料编码,Id为主键,CreateOrgId为创建组织Id。格式参考:-{\-CreateOrgId\-:0,\-Id\-:0,\-Number\-:\-SVINV00000003\-}-CreateOrgId:非必须Id和Number:任选一个返回参数:参数列表参数含义备注ResponseStatus操作状态操作是否成功,如果失败,具体失败原因Result单据数据包单据完整数据内容调用参考:1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll):stringsJson=-{\-Number\-:\-SVINV00000003\-}-;varresult=client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View-,newobject[]{-IV_SALESIC-,sJson});DOCID:KDSP_T_V4.0第10页共37页2)无引用组件示例(不引用金蝶的组件):HttpClienthttpClient=newHttpClient();httpClient.Url=-http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc-;List<object>Parameters=newList<object>();//业务对象IdStringformid=-IV_SALESIC-;//发票Parameters.Add(formid);//Json字串stringdata=-{\-Number\-:\-SVINV00000003\-}-;Parameters.Add(data);httpClient.Content=JsonConvert.SerializeObject(Parameters);varresult=httpClient.AsyncRequest();5.1.3.保存表单数据接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc接口参数:参数列表参数含义备注formid表单Id,格式参考:-BD_Currency-//表示币别必须data数据包,数据格式参考以币别为例:-{\-Creator\-:\-\-,\-NeedUpDateFields\-:[\-\-],\-IsDeleteEntry\-:\-false\-,\-NeedReturnFields\-:\-\-,\-IsVerifyBaseDataField\-:\-false\-,\-IsEntryBatchFill\-:\-false\-,\-Model\-:{\-FNumber\-:\-PRENB001\-,\-FName\-:\-牛Creator:非必须NeedUpDateFields:非必须,如果是更新单据而不是新增一个单据,可以设置这个数据集合,内容为字段标识,使用逗号分隔,如果需要更新表体数据,则需要填写表体的标识。一般情况下,如果Model中只填写了需要更新的字段信息,没有其他冗余的字段,那么这个参数不需要设置,否则其他冗余字段会覆盖ERP中的源单数据。IsDeleteEntry:非必须,在修改单据时是否需要删除已经存在的分录。NeedReturnFields:非必须,需要返回的所有字段。IsVerifyBaseDataField:非必须,是否需要验证基础资料。IsEntryBatchFill:非必须,是否需要批量填充分录。Model:必须,Model数据格式说明:所有字段和实体都是用元素的标识来识别。单据头字段直接填写字段标识和数据,子单据头字段需要先申明是子单据头信息,然后再填写其字段信息,例如\-SubHeadEntity\-:{\-FBARCODE\-:\-20305\-}如果是单据体字段则需要申明为集合,例如:\-EntryDetail\-:[{第1条明细},{第N条DOCID:KDSP_T_V4.0第11页共37页币\-,\-FCODE\-:\-CNYY\-,\-FPRICEDIGITS\-:6,\-FAMOUNTDIGITS\-:2,\-FPRIORITY\-:0,\-FIsShowCSymbol\-:true}}-明细}],需要用中括号括起来。另外要注意的是更新单据时,表体信息必须填写明细表体的主键,如果不填写,将会删除源单的表体,而没有主键的数据会视为新增,有明细主键的视为更新。返回参数:参数列表参数含义备注ResponseStatus操作状态{-ResponseStatus-:{-ErrorCode-:--,-IsSuccess-:false,-Errors-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-SuccessEntitys-:[{-Id-:--,-Number-:--,-DIndex-:0}],-SuccessMessages-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-MsgCode-:0}IsSuccess:操作是否成功,Errors:如果失败,具体失败原因DIndex:原始数据行号,MsgCode:等于1,会话丢失,重新登录;等于0,其他情况调用参考:1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll)://业务对象IdstringsFormId=-SAL_OUTSTOCK-;//销售出库单//Model字串stringsContent=-{\-Creator\-:\-\-,\-NeedUpDateFields\-:[],\-Model\-:-+-{\-FID\-:\-0\-,\-FStockOrgId\-:{\-FNumber\-:\-210\-},\-FBillTypeID\-:{\-FNumber\-:\-XSCKD01_SYS\-},\-FBillNo\-:\-CSDGBC21002\-,\-FCustomerID\-:{\-FNumber\-:\-CUST0073\-},\-SubHeadEntity\-:{\-FExchangeRate\-:6.51},\-FEntity\-:[{\-FEntryID\-:\-0\-,\-FMATERIALID\-:{\-FNumber\-:\-03.001\-},\-FStockID\-:{\-FNumber\-:\-CK002\-},\-FRealQty\-:324,\-FBaseUnitQty\-:324},{\-FEntryID\-:\-0\-,\-FMATERIALID\-:{\-FNumber\-:\-03.001\-},\-FStockID\-:{\-FNumber\-:\-CK004\-},\-FRealQty\-:220,\-FBaseUnitQty\-:220}]]}}-;object[]saveInfo=newobject[]{sFormId,sContent};//调用保存接口varret=DOCID:KDSP_T_V4.0第12页共37页client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save-,saveInfo);以下示例说明如何更新单据的表体信息:更新内码为100017的单据,新增两行表体数据,原有100024和100025行数据保留,如果源单中还有其他分录则删除。stringsFormId=-STK_MISCELLANEOUS-;//其他入库单stringsContent=-{\-Creator\-:\-\-,\-NeedUpDateFields\-:[],\-Model\-:{\-FID\-:\-100017\-,\-FEntity\-:[{\-FEntryID\-:\-100024\-},{\-FEntryID\-:\-100025\-},-+-{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480933\-},\-FUnitID\-:{\-FNumber\-:\-03\-},\-FSTOCKID\-:{\-FNumber\-:\-PRTSH\-},\-FQty\-:\-200\-,\-FBASEQTY\-:\-200\-,\-FPlanAmount\-:\-132856\-,\-FBASEUNITID\-:{\-FNumber\-:\-03\-},\-FEntryNOTE\-:\-2015-7-29\-,\-FAmount\-:\-132856\-,\-FPRICE\-:\-664.28\-,\-FEntrySelfA9725\-:\-2015072802\-,\-FEntrySelfA9733\-:\-19881\-,\-FEntrySelfA9734\-:\-2015-6-3\-,\-FEntrySelfA9737\-:\-200\-,\-FEntrySelfA9740\-:\-0\-,\-FEntrySelfA9738\-:\-1\-,\-FEntrySelfA9739\-:\-2\-,\-FEntrySelfA9735\-:\-664.28\-},-+-{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480933-},\-FUnitID\-:{\-FNumber\-:\-03\-},\-FSTOCKID\-:{\-FNumber\-:\-PRTSH\-},\-FQty\-:\-200\-,\-FBASEQTY\-:\-200\-,\-FPlanAmount\-:\-132856\-,\-FBASEUNITID\-:{\-FNumber\-:\-03\-},\-FEntryNOTE\-:\-2015-7-29\-,\-FAmount\-:\-132856\-,\-FPRICE\-:\-664.28\-,\-FEntrySelfA9725\-:\-2015072802\-,\-FEntrySelfA9733\-:\-19881\-,\-FEntrySelfA9734\-:\-2015-6-3\-,\-FEntrySelfA9737\-:\-200\-,\-FEntrySelfA9740\-:\-0\-,\-FEntrySelfA9738\-:\-1\-,\-FEntrySelfA9739\-:\-2\-,\-FEntrySelfA9735\-:\-664.28\-}]}}-;object[]saveInfo=newobject[]{sFormId,sContent};//调用保存接口varret=client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save-,saveInfo);2)无引用组件示例(不引用金蝶的组件):HttpClienthttpClient=newHttpClient();httpClient.Url=-http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc-;List<object>Parameters=newList<object>();//业务对象IdStringformid=-SAL_OUTSTOCK-;//销售出库为例Parameters.Add(formid);DOCID:KDSP_T_V4.0第13页共37页//Json字串stringdata=-{\-Creator\-:\-\-,\-NeedUpDateFields\-:[],\-Model\-:-+-{\-FID\-:\-0\-,\-FStockOrgId\-:{\-FNumber\-:\-210\-},\-FBillTypeID\-:{\-FNumber\-:\-XSCKD01_SYS\-},\-FBillNo\-:\-CSDGBC21002\-,\-FCustomerID\-:{\-FNumber\-:\-CUST0073\-},\-SubHeadEntity\-:{\-FExchangeRate\-:6.51},\-FEntity\-:[{\-FEntryID\-:\-0\-,\-FMATERIALID\-:{\-FNumber\-:\-03.001\-},\-FStockID\-:{\-FNumber\-:\-CK002\-},\-FRealQty\-:324,\-FBaseUnitQty\-:324},{\-FEntryID\-:\-0\-,\-FMATERIALID\-:{\-FNumber\-:\-03.001\-},\-FStockID\-:{\-FNumber\-:\-CK004\-},\-FRealQty\-:220,\-FBaseUnitQty\-:220}]]}}-;Parameters.Add(data);httpClient.Content=JsonConvert.SerializeObject(Parameters);varresult=httpClient.AsyncRequest();5.1.4.批量保存表单数据接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave.common.kdsvc接口参数:参数列表参数含义备注formid表单Id,格式参考:-SAL_SaleOrder-//表示销售订单必须data数据包,格式参考以销售订单为例:-{\-NeedUpDateFields\-:[],\-BatchCount\-:\-2\-,\-Model\-:[{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:BatchCount:非必须。此参数主要用于优化性能,当传入的单据数据量较大时,可以设定此参数的并行分批执行次数。例如传入100张单据数据,此参数设定为10,则表示在k3cloud系统中,以10个单据为一批,分10批,同时并发保存,提升效率。数据包参数格式和Save接口的类似,主要差别在于批量保存是传入多张单DOCID:KDSP_T_V4.0第14页共37页{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]}]}-据的数据,Modle数据用[]括起来,而Save仅传入一张单据数据。再一个区别是批量保存多了一个参数BatchCount。返回参数:参数列表参数含义备注ResponseStatus操作状态{-ResponseStatus-:{-ErrorCode-:--,-IsSuccess-:false,-Errors-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-SuccessEntitys-:[{-Id-:--,-Number-:--,-DIndex-:0}],-SuccessMessages-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-MsgCode-:0}IsSuccess:操作是否成功,Errors:如果失败,具体失败原因DIndex:原始数据行号,如果接口参数启用了BatchCount,则DIndex返回的顺序不是所有数据的顺序,而是每批次中MsgCode:等于1,会话丢失,重新登录;等于0,其他情况的顺序。调用参考:1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll):stringsFormId=-SAL_SaleOrder-;//销售订单为例stringsContent=-{\-NeedUpDateFields\-:[],\-BatchCount\-:\-2\-,\-Model\-:[{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:DOCID:KDSP_T_V4.0第15页共37页{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]}]}-;object[]saveInfo=newobject[]{sFormId,sContent};varret=client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave-,saveInfo);2)无引用组件示例(不引用金蝶的组件):HttpClienthttpClient=newHttpClient();httpClient.Url=-http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave.common.kdsvc-;List<object>Parameters=newList<object>();//业务对象IdDOCID:KDSP_T_V4.0第16页共37页Stringformid=-SAL_SaleOrder-;//销售订单为例Parameters.Add(formid);//Json字串stringdata=-{\-NeedUpDateFields\-:[],\-BatchCount\-:\-2\-,\-Model\-:[{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]},{\-FID\-:\-0\-,\-FBILLTYPEID\-:{\-FNumber\-:\-XSDD01_SYS\-},\-FSaleOrgId\-:{\-FNumber\-:\-NCIC\-},\-FSaleDeptId\-:{\-FNumber\-:\-01.A13\-},\-FCustId\-:{\-FNumber\-:\-500\-},\-FDATE\-:\-2016/2/23\-,\-FSettleCurrId\-:{\-FNumber\-:\-RMB\-},\-FSalerId\-:{\-FNumber\-:\-B027\-},\-FBusinessType\-:\-NORMAL\-,\-FSaleOrderFinance\-:{\-FEXCHANGETYPE\-:{\-FNumber\-:\-NCIC\-},\-FExchangeRate\-:\-1\-},\-FSaleOrderEntry\-:[{\-FMATERIALID\-:{\-FNumber\-:\-A.0060480931\-},\-FUNITID\-:{\-FNumber\-:\-03\-},\-FQty\-:\-1\-,\-FTaxPrice\-:\-100\-,\-FEntryTaxRate\-:\-17.00\-}]}]}-;Parameters.Add(data);httpClient.Content=JsonConvert.SerializeObject(Parameters);varresult=httpClient.AsyncRequest();5.1.5.提交表单数据接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvcDOCID:KDSP_T_V4.0第17页共37页接口参数:参数列表参数含义备注formid表单Id,格式参考:-BD_Currency-//表示币别必须data数据包,Number表示单据编号或者基础资料编码,Id为主键,CreateOrgId为创建组织Id。数据格式参考以币别为例:-{\-CreateOrgId\-:0,\-UseOrgId\-:0,\-Numbers\-:[\-PRE002\-,\-PRE006\-]}-CreateOrgId:创建组织Id,非必须UseOrgId:使用组织Id,非必须Numbers:必须返回参数:参数列表参数含义备注ResponseStatus操作状态{-ResponseStatus-:{-ErrorCode-:--,-IsSuccess-:false,-Errors-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-SuccessEntitys-:[{-Id-:--,-Number-:--,-DIndex-:0}],-SuccessMessages-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],”MsgCode”:0}IsSuccess:操作是否成功,Errors:如果失败,具体失败原因DIndex:原始数据行号,MsgCode:等于1,会话丢失,重新登录;等于0,其他情况调用参考:1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll):stringsJson=-{\-CreateOrgId\-:0,\-Numbers\-:[\-PRE002\-,\-PRE006\-]}-;varresult=client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit-,newobject[]{-BD_Currency-,sJson});2)无引用组件示例(不引用金蝶的组件):HttpClienthttpClient=newHttpClient();httpClient.Url=-http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc-;List<object>Parameters=newList<object>();//业务对象IdDOCID:KDSP_T_V4.0第18页共37页Stringformid=-BD_Currency-;//币别为例Parameters.Add(formid);//Json字串stringdata=-{\-CreateOrgId\-:0,\-Numbers\-:[\-PRE002\-,\-PRE006\-]}-;Parameters.Add(data);httpClient.Content=JsonConvert.SerializeObject(Parameters);varresult=httpClient.AsyncRequest();5.1.6.审核表单数据接口服务地址:http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc接口参数:参数列表参数含义备注formid表单Id,格式参考:-BD_Currency-//表示币别必须data数据包,Number表示单据编号或者基础资料编码,Id为主键,CreateOrgId为创建组织Id。数据格式参考以币别为例:-{\-CreateOrgId\-:0,\-UseOrgId\-:0,\-Numbers\-:[\-PRE002\-,\-PRE006\-]}-CreateOrgId:创建组织Id,非必须UseOrgId:使用组织Id,非必须Numbers:必须返回参数:参数列表参数含义备注ResponseStatus操作状态{-ResponseStatus-:{-ErrorCode-:--,-IsSuccess-:false,-Errors-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],-SuccessEntitys-:[{-Id-:--,-Number-:--,-DIndex-:0}],-SuccessMessages-:[{-FieldName-:--,-Message-:--,-DIndex-:0}],“MsgCode”:0}IsSuccess:操作是否成功,Errors:如果失败,具体失败原因DIndex:原始数据行号,MsgCode:等于1,会话丢失,重新登录;等于0,其他情况DOCID:KDSP_T_V4.0第19页共37页1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll):stringsJson=-{\-CreateOrgId\-:0,\-Numbers\-:[\-PRE002\-,\-PRE006\-]}-;varresult=client.Execute<string>(-Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit-,newobject[]{-BD_Currency-,sJson});3)无引用组件示例(不引用金蝶的组件):HttpClienthttpClient=newHttpClient();httpClient.Url=-http://192.