深入理解WebAPI工作原理及示例分析
1. WebAPI的工作原理
WebAPI的核心在于模拟录单过程。通过传入的Json数据包,逐一填充对应字段值,触发相关事件、实体服务和插件逻辑。构造完成后调用Save接口(提交、审核),并执行相应的操作校验和逻辑。
参考链接:
2. WebAPI示例与自测
登录Cloud系统,导航至基础管理 -> 动态服务定义 -> WebAPI 或直接搜索WebAPI关键字。
3. 特殊参数及常见问题
常见问题1:Json字段值保存失败
分析:
- 字段值不合法。测试方法:手动录入Json中的值。
- 字段顺序不正确导致覆盖。调整顺序即可。
- 插件或其他逻辑影响字段值。使用插件调试DataChange事件和保存事件。
常见问题2:销售套件业务仅第一行成功
原因:参数IsEntryBatchFill需设置为False,因为套件父项物料依赖前置字段产品类型,不适用批量填充。
常见问题3:负库存提示
原因:由于WebAPI无法支持交互弹出界面,需要设置参数InterationFlags为"STK_InvCheckResult"。
其他可能的交互校验忽略标识:
预计可发量检查: Sal_ExpectQtyCheckDetail
最低限价检查: SAL_DOWNPRICECHECK
允许负库存: STK_InvCheckResult
价格来源检查: SAL_CHECKPRICESOURCEFB
常见问题4:自动建立上下游关联关系
解决方案:WebAPI保存接口实现上下游关联
常见问题5:未购买模块提示
原因分析:某些单据需要购买相关模块才能使用。解决方案是根据已购买模块设置SubSystemId参数。例如,销售管理子系统ID为23。
常见问题6:物料不合法导致分录行缺失
原因分析: 未启用IsVerifyBaseDataField参数导致不会校验基础资料合法性。开启该参数可以进行校验,但会影响性能。此外,由于大部分单据BOS设置分录属性为关键字段,因此物料未录入时会被自动删除。
常见问题7:修改保存单据Json构造
修改保存单据无需构造复杂字段,只需提供FID和FEntryId以及需要修改的字段:
{
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "True",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "True",
"Model": {
"FID": "188888",
"FSaleOrderEntry": [
{"FEntryId": "255555", "FQty": "3"}
]
}
}
4. WebAPI对接性能优化建议
优化点1: 精简Json构造,仅保留必要字段,例如单位、计价单位、税率等自动携带的字段无需构造。
优化点2: 避免触发取价服务和取折扣服务。如果Json中已有价格,则无需触发这些耗时操作。
5. 超高性能大数据量对接方案与建议
大数据量对接建议步骤:
- 将第三方数据对接到ERP中间表,中间表仅包含简单字段及状态字段。
- 数据分批通过执行计划对接,通过ERP执行计划插件进行少量多次处理。