K3CLOUD WEBAPI BatchSave方法进行单据保存报错
金蝶云社区-向总555
向总555
0人赞赏了该文章 1,003次浏览 未经作者许可,禁止转载编辑于2018年08月24日 10:04:56

版本: K3 cloud 7.1.703.7 (打了PT122668补丁之后的版本号),
问题:
在调用 K3CLOUD WEBAPI 的BatchSave方法进行单据保存时,提示 “Object reference not set to an instance of an object , at Kingdee.BOS.WebApi.FormService.BatchSaveService.SaveBills(String data) ”错误,之前的版本使用该方法能正常工作。

调用保存接口进行单据保存的例子:
result = _ApiClient.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave", saveInfo, null, 3600);

JObject jo = new JObject();
jo = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
string aa = jo["Result"].ToString();
JObject jsonObj = JObject.Parse(aa);
Boolean str = Convert.ToBoolean(jsonObj["ResponseStatus"]["IsSuccess"].ToString());

//获取保存成功的单据的原始单据唯一标识,用于更新源头单据的状态。
JArray _NeedReturnData = new JArray();
_NeedReturnData = (Newtonsoft.Json.Linq.JArray)jsonObj["NeedReturnData"];
foreach (JObject jsonObjreturndata in _NeedReturnData)
{
DotNet.RawDataModel.ReturnDataModel _ReturnDataModel = new DotNet.RawDataModel.ReturnDataModel();
_ReturnDataModel.FID = jsonObjreturndata["FID"].ToString();
_ReturnDataModel.FOriginalBillID = jsonObjreturndata["FOriginalBillID"].ToString();
_ReturnDataModel.FOriginalBillNo = jsonObjreturndata["FOriginalBillNo"].ToString();
_ReturnDataModel.FBillNo = jsonObjreturndata["FBillNo"].ToString();
ReturnDataModelList.Add(_ReturnDataModel);

}

JArray _SuccessEntitys = new JArray();
_SuccessEntitys = (Newtonsoft.Json.Linq.JArray)jsonObj["ResponseStatus"]["SuccessEntitys"];

JArray _Errors = new JArray();
_Errors = (Newtonsoft.Json.Linq.JArray)jsonObj["ResponseStatus"]["Errors"];

同时存在的问题是,调用接口返回的JSON字符串中,不包含 NeedReturnData相关项。