阅读工具:星空系统二次开拓新手需求场景:利用星空系统WebAPI修正单据信息(包括单据头和单据体)
在前面发布的“金蝶云星空插件实战开拓-新手保姆级入门教程-自定义WebAPI”这篇文章中提到过,星空系统与第三方异构系统对接紧张是通过WebAPI,同时,险些所有的单据的API都是由以下根本的API接口封装而来:
在星空官方文档里,没有明确解释修正单据的接口,那么如果我们要修正单据的信息,那该怎么办呢?

首先,利用WebAPI修正单据,肯定是可以的。
其次,修正单据利用的是Save(保存)接口。
由于官方文档没有解释,本文也算是对官方文档的一个补充,如有错漏之处,请大家批评示正。
我们以采购订单为例来就行解释,目的是修正一条已存在的采购订单的数据。
对付采购订单WebAPI保存接口,官方文档为:金蝶云星空开放平台。紧张参数如下图所示:
要求参数解释:1.formid:业务工具表单Id,字符串类型(必录)2.data:JSON格式数据(详情参考JSON格式数据)(必录)2.1.NeedUpDateFields:须要更新的字段,数组类型,格式:[key1,key2,...] (非必录)注(更新单据体字段得加上单据体key)2.2.NeedReturnFields:需返回结果的字段凑集,数组类型,格式:[key,entitykey.key,...](非必录) 注(返回单据体字段格式:entitykey.key)2.3.IsDeleteEntry:是否删除已存在的分录,布尔类型,默认true(非必录)2.4.SubSystemId:表单所在的子系统内码,字符串类型(非必录)2.5.IsVerifyBaseDataField:是否验证所有的根本资料有效性,布尔类,默认false(非必录)2.6.IsEntryBatchFill:是否批量添补足录,默认true(非必录)2.7.ValidateFlag:是否验证标志,布尔类型,默认true(非必录)2.8.NumberSearch:是否用编码搜索根本资料,布尔类型,默认true(非必录)2.9.InterationFlags:交互标志凑集,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录) 例如(许可负库存标识:STK_InvCheckResult)2.10.Model:表单数据包,JSON类型(必录)
备注:1.示例Model数据包中字段顺序不建议改变,否则可能会有相互影响,如果涌现字段值被覆盖或丢失,则可以考试测验把字段顺序向后调度一下。2.示例Model数据包默认包含许可引入的字段,实际按需构建既可。3.如需创建关联关系,可参考http://club.kingdee.com/forum.php?mod=viewthread&tid=1394265 。
利用保存修正单据的内容,有以下几个关键点:
单据内码(FID)和单据体内码(FEntryID)为必填。如果没有这两个内码,则系统会剖断为创建操作。NeedUpDateFields参数必须配置。这个要求参数见告系统须要修正的字段名。{ "NeedUpDateFields": [], "NeedReturnFields": [], "IsDeleteEntry": "false", "SubSystemId": "", "IsVerifyBaseDataField": "false", "IsEntryBatchFill": "true", "ValidateFlag": "true", "NumberSearch": "true", "InterationFlags": "", "Model": { "FID": 110537, "FBillTypeID": { "FNUMBER": "CGDD01_SYS" }, "FDate": "2021-11-04 00:00:00", "FIsModificationOperator": false, "FChangeStatus": "A", "FACCTYPE": "Q", "FPOOrderEntry": [ { "FEntryID": 101954, "FProductType": "1", "FDeliveryDate": "2021-11-04 15:35:00", "FRequireOrgId": { "FNumber": "102" }, "FReceiveOrgId": { "FNumber": "102" }, "FEntrySettleOrgId": { "FNumber": "102" }, "FGiveAway": false, "FDeliveryControl": false, "FTimeControl": false, "FDeliveryEarlyDate": "2021-11-04 00:00:00", "FDeliveryLastDate": "2021-11-04 00:00:00", "FPriceCoefficient": 1.0, "FPlanConfirm": true } ] }}
上面这个截图中,FID 110537这个ID是单据的内码,FEntryID 101954为单据体内码。
如果单据体有两条分录,则两条分录内码都须要填写。例如:
{ "NeedUpDateFields": [], "NeedReturnFields": [], "IsDeleteEntry": "true", "SubSystemId": "", "IsVerifyBaseDataField": "false", "IsEntryBatchFill": "true", "ValidateFlag": "true", "NumberSearch": "true", "InterationFlags": "", "Model": { "FID": 110537, "FBillTypeID": { "FNUMBER": "CGDD01_SYS" }, "FDate": "2021-11-04 00:00:00", "FIsModificationOperator": false, "FChangeStatus": "A", "FACCTYPE": "Q", "FPOOrderEntry": [ { "FEntryID": 101954, "FProductType": "1", "FDeliveryDate": "2021-11-04 15:35:00", "FRequireOrgId": { "FNumber": "102" }, "FReceiveOrgId": { "FNumber": "102" }, "FEntrySettleOrgId": { "FNumber": "102" }, "FGiveAway": false, "FDeliveryControl": false, "FTimeControl": false, "FDeliveryEarlyDate": "2021-11-04 00:00:00", "FDeliveryLastDate": "2021-11-04 00:00:00", "FPriceCoefficient": 1.0, "FPlanConfirm": true }, { "FEntryID": 101955, "FProductType": "1", "FDeliveryDate": "2021-11-04 15:35:00", "FRequireOrgId": { "FNumber": "102" }, "FReceiveOrgId": { "FNumber": "102" }, "FEntrySettleOrgId": { "FNumber": "102" }, "FGiveAway": false, "FDeliveryControl": false, "FTimeControl": false, "FDeliveryEarlyDate": "2021-11-04 00:00:00", "FDeliveryLastDate": "2021-11-04 00:00:00", "FPriceCoefficient": 1.0, "FPlanConfirm": true }, ] }}
接下来便是NeedUpDateFields参数的配置。
NeedUpDateFields参数为数组类型的参数。
接管的只是单据所属的字段名。
一样平常会把单据头字段写在前面,单据体字段写在后面。
例如,我们须要修正单据头的采购日期FDate字段和单据体采购组织FRequireOrgId字段,则可以做如下配置:
"NeedUpDateFields": ["FDate", "FPOOrderEntry", "FRequireOrgId"]
配置好保存接口要求参数之后,就可以测试一下,看看实行的结果。
新手在刚学习星空系统开拓时,会碰着各种问题和困难,大家不要灰心,多考试测验,一定会成功。加油!
更多精彩内容发布于公众年夜众号:代码乾坤 (CoderLand)