本文介绍了金蝶云星空WebApi中的保存(新增和修改)功能,包括组件调用与非组件调用的区别、请求地址、请求参数及返回参数。详细说明了Data参数中的多个关键字段如NeedReturnFields、NeedUpDateFields等的用途,以及ValidateFlag和IsVerifyBaseDataField对基础资料验证的影响。同时,阐述了Model在模拟ERP录入字段信息过程中的重要性,以及Model字段的传递原则。此外,还介绍了批量保存功能及其与单条保存的区别,以及批量保存返回参数的具体内容。
金蝶云星空WebApi详解系列(一)保存
组件调用与非组件调用区别
引用组件调用时
组件:Kingdee.BOS.WebApi.Client.dll
地址为:
http://IP/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save
语言:C#,vb.net调用
不引用组件调用时
地址为:
http://IP/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
语言:不限
不引用组件与引用组件调用,地址后面多了.common.kdsvc
保存(新增和修改)
请求地址:
http://IP/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save
参数
Data参数信息
Dim json As New JObject()
Dim arrayNeed As New JArray()
Dim arrayReturn As New JArray()
arrayReturn.Add("FBillNo")
arrayReturn.Add("FEntity.ID,FEntity.FSeq")
arrayReturn.Add("FEntity.FMaterialId")
'需返回的字段 格式[key,entitykey.key,...]
json.Add("NeedReturnFields", arrayReturn)
'需要更新的字段(修改常用) 格式[key,entitykey.key,...]
json.Add("NeedUpDateFields", arrayNeed)
'是否删除已存在的分录【修改时控制分录是否删除】
'修改时必传单据ID,明细ID 默认true
json.Add("IsDeleteEntry", "true")
'是否验证标记 '默认true
'【为true时会验证表单必录和操作上的校验】
json.Add("ValidateFlag", "true")
'是否验证所有基础资料有效性 '默认false
'验证基础资料存在性(禁用也是不存在)
json.Add("IsVerifyBaseDataField", "false")
'是否批量填充分录 '默认true
json.Add("IsEntryBatchFill", "true")
'是否用编码搜索基础资料 '默认true
json.Add("NumberSearch", "true")
'是否自动调整json字段顺序 '默认false
json.Add("IsAutoAdjustField", "false")
'是否自动提交审核 '默认false
json.Add("IsAutoSubmitAndAudit", "true")
'子系统
json.Add("SubSystemId", "")
'交互标志
json.Add("InterationFlags", "")
'是否充许忽略交互 '默认true
json.Add("IgnoreInterationFlag", "true")
'单据
Dim BillModel As New JObject()
json.Add("Model", BillModel)
BillModel…省略
Dim para As Object() = {"FormId", json.ToString()}
result = client.Execute(Of String)("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save", para)
IsDeleteEntry:
在更新单据时,没有明细Id则会视为删除行,
没有明细Id的数据会视为新增,
有明细主键的视为更新
ValidateFlag和IsVerifyBaseDataField参数
Validate Flag 是否验证标记 | IsVerifyBase DataField 所有基础资料有效性 |
基础资料(属性必录) |
基础资料 传值情况 |
接口调用结果 |
成功与否影响参数 |
true | true |
必录 | 值不存在 | 失败(该基础资料值必有效才成功) |
二者 |
true | false | 值不存在 | 失败(该基础资料值必有效才成功) | ||
false | true | 值不存在 | 失败(该基础资料值必有效才成功) | ||
false | false | 值不存在 | 成功(该基础资料值为空) | ||
true | true |
非必录 | 值不存在 | 失败(该基础资料值必有效才成功) |
IsVerifyBase DataField
|
true | false | 值不存在 | 成功(该基础资料值为空) | ||
false | true | 值不存在 | 失败(该基础资料值必有效才成功) | ||
false | false | 值不存在 | 成功(该基础资料值为空) |
总结:
上述除Model外的参数,如果都不传,则系统取参数默认值
Model拼接是模拟在ERP录入字段信息的过程,
Model中的字段先后顺序是影响字段赋值成功的关键
Model中的字段不必全都传,只传必录且关心的字段即可
有默认值的字段可以不传,除非默认值不是你需要的值
如果必录字段有默认值或是通过另一必录字段值更新得来,该字段也可不传
保存返回参数(新增和修改)
成功json
失败json
ResponseStatus.IsSuccess:成功标识
ResponseStatus.Id:单据内码(成功才有值)
ResponseStatus.Number:单据编号(成功才有值)
ResponseStatus.MsgCode: MsgCode代码说明
0:默认(成功时为默认)
1:上下文丢失
2:没有权限
3:操作标识为空
4:异常
5:单据标识为空
6:数据库操作失败
7:许可错误
8:参数错误
9:指定字段/值不存在
10:未找到对应数据
11:验证失败
12:不可操作
13:网控冲突
Errors参数:失败数据包
1、 DIndex:传入单据的顺序号(此处始终是0,因为是单个保存)
2、 FieldName:具体错误字段名
3、 Message:具体错误信息
SuccessEntitys参数:成功数据包
1、DIndex:传入单据顺序号(此处始终是0,因为是单个保存)
2、ID:单据内码
3、FBillNo:单据编号
NeedReturnData返回的字段信息取决于传参时NeedReturnFields指定的字段
批量保存(新增和修改)
请求地址:
http://IP/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave
与保存参数区别
1、 多个BatchCount参数:服务端开启的线程数,整型(非必录)
注(数据包数应大于此值,否则无效)
2、 Model与保存参数不同在于,批量Model是数组
Dim json As New JObject()
………
Dim billArray As New JArray()
json.Add("Model", billArray)
For index = 1 To 2
'单据
Dim BillModel As New JObject()
billArray.Add(BillModel)
BillModel…省略
Next
批量保存返回参数(新增和修改)
ResponseStatus.IsSuccess:只要有一单错误,返回的IsSuccess就为False
Errors参数:
1、 DIndex:传入单据的顺序号(Model中数组序号)
2、 FieldName:具体错误字段名
3、Message:具体错误信息
SuccessEntitys参数:
1、DIndex:也是传入单据顺序号
2、ID:单据内码
3、FBillNo:单据编号
扫码关注,更多内容
系列文章-插件开发
https://vip.kingdee.com/article/435130016238639872?productLineId=1