第三方通过API对接星空系统传递凭证问题释疑(2)
第三方通过API对接星空系统传递凭证问题释疑(2)
PS:更多更详细内容请参考网址:API中心 (kingdee.com)或金蝶社区搜索“凭证 API”。
相关文章:第三方通过API对接星空系统传递凭证问题释疑(1) (kingdee.com)
l Json数据包中data对象字段解释及推荐值
1.NeedUpDateFields:需要更新的字段,数组类型,格式:[key1,key2,...] (非必录)注(更新字段时Model数据包中必须设置内码,若更新单据体字段还需设置分录内码,如果要新增凭证,一定不要指定内码,否则会视为更新,会自动替换掉该内码对应的凭证,造成原凭证丢失)
2.NeedReturnFields:需返回结果的字段集合,数组类型,格式:[key,entitykey.key,...](非必录) 注(返回单据体字段格式:entitykey.key,返回单据体内码:FENTITY_FENTRYID)
3.IsDeleteEntry:是否删除已存在的分录,布尔类型,默认true(非必录)
4.SubSystemId:表单所在的子系统内码,字符串类型(非必录),可以指定为“GL”
5.IsVerifyBaseDataField:是否验证所有的基础资料有效性,布尔类,默认false(非必录),推荐值为true,尤其是项目开发阶段时一定要开启验证,否则可能的异常问题未暴露出来,会造成其它古怪的问题,很难排查原因。后期项目稳定了,出于性能考虑,可以设置为false。
6.IsEntryBatchFill:是否批量填充分录,默认true(非必录)
7.ValidateFlag:是否验证数据合法性标志,布尔类型,默认true(非必录)注(设为false时不对数据合法性进行校验),凭证保存一定不要设置为false,这样会跳过保存校验,造成数据问题。
8.NumberSearch:是否用编码搜索基础资料,布尔类型,默认true(非必录)
9.IsAutoAdjustField:是否自动调整JSON字段顺序,布尔类型,默认false(非必录)
10.InterationFlags:交互标志集合,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录) 例如(允许负库存标识:STK_InvCheckResult)
11.IgnoreInterationFlag:是否允许忽略交互,布尔类型,默认true(非必录)
12.IsControlPrecision:是否控制精度,为true时对金额、单价和数量字段进行精度验证,默认false(非必录)
13.ValidateRepeatJson:校验Json数据包是否重复传入,一旦重复传入,接口调用失败,默认false(非必录)
l 系统返回失败信息:汇率类型,币别等是必填项,不能为空
原因分析:明明传递了上述字段的值,却提示未录入,原因很可能是录入的值未通过系统的校验,导致并未真正赋值成功。而未通过的校验常见的有:
1,当前API的登录用户没有相关基础资料的使用权限,可用相同用户手工录入相同内容的凭证测试是否是权限问题。
2,相关基础资料已反审核或禁用,导致不可用,可检查相关基础资料或辅助资料是否为正常状态。
3,科目为分配型且当前组织未分配此科目,如果科目赋值失败,将导致本行分录后面的字段全部赋值失败。如果遇到一行分录中多个基础资料均报“是必填项”时,很可能是科目未正常赋值引起。请检查科目编码是否存在,是否已分配给当前组织使用,是否是细明科目等。也可手工录入相同凭证内容来检验。
解决办法:在json的data包中,指定IsVerifyBaseDataField为True,请系统提前检查基础资料字段的合法性,这样,系统会直接提示出具体基础资料的问题,便于排错。注意:这个检查会影响API性能。
l 系统返回失败信息:某个核算维度为必录维度未录入或不可用
可能原因:
1,科目挂了某个必录维度,但json中没有指定值;
2,指定的维度值不可用(被禁用或反审核了,或未分配给当前组织)
3,维度编码有误,注意前后空格或特殊字符
l 系统返回失败信息:借贷不平
原因:明明传入的json借贷是平的,还提示借贷不平,原因很可能是某行分录的科目未正常赋值成功,导致整行分录数据被系统判为无效分录而自动清除,导致借贷不平。
解决办法:找出具体行的不正确科目,具体方法为:在json的data包中,指定IsVerifyBaseDataField为True,请系统提前检查基础资料字段的合法性,这样,系统会直接提示出具体基础资料的问题。也可手工录入相同凭证,遇到录入异常的科目时,系统会有明显提示。
l 非共享型基础资料发生了串组织的情况,如传入的是A组织的部门,但生成的却是B组织的同编码的部门
原因:其实是因为上面的情况未对基础资料做组织隔离引起的。面引起组织隔离失效的原因很可能是API使用了Administrator做为登录用户,由于该用户只有管理职能,没有业务能力,自然也没有指定归属组织,因此,无法对该用户判断组织属性,导致用该用户做业务时组织隔离功能失败。
解决办法:改用有业务职能的普通用户登录API传递凭证。
强调:一定不要用Administrator登录Web API进行业务操作,否则很可能造成数据问题。
l API中核算维度标识如何获得?
大家都知道核算维度的json格式像这样标识:
"FDetailID": { "FDETAILID__FFLEX6": { "FNumber": "007" }, "FDETAILID__FFLEX7": { "FNumber": "201801001" } }
即用“FDETAILID__”+核算维度标识的方式来表示具体的维度。但很多新开发者不知道某个核算维度的标识到底是多少。通常情况下,官方预置的核算维度标识是固定不变的,用户自定义的维度维度的标识不确定,需要查询得到。
官方预置的核算维度及标识如下(注意:因数据存在人为改动的可能,以下仅供参考):
供应商 BD_Supplier FFLEX4
部门 BD_Department FFLEX5
客户 BD_Customer FFLEX6
员工 BD_Empinfo FFLEX7
物料 BD_MATERIAL FFLEX8
费用项目 BD_Expense FFLEX9
资产类别 FA_ASSETTYPE FFLEX10
组织机构 ORG_Organizations FFLEX11
物料分组 AMB_MaterialGroup FFLEX12
客户分组 AMB_CustomerGroup FFLEX13
银行 BD_BANK FFLEX14
银行账户 CN_BANKCNT FFLEX15
其他往来单位 FIN_OTHERS FFLEX16
查询核算维度标识的方法:打开【核算维度】界面,默认不显示维度列标识,可以点【过滤】打开过滤界面的【显示隐藏列】,勾选【单据头-维度列标识】,确定。如下图所示:
第三方通过API对接星空系统传递凭证问题释疑(2)
本文2024-09-16 18:22:12发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21691.html