通过Business Central API创建带计量单位的采购发票行失败
采购发票行添加计量单位报错问题
我尝试创建如下采购发票行:
{ "itemId":"be04fb82-fdaa-ee11-a568-0022489c7d90", "quantity":152.0, "expectedReceiptDate":"0001-01-01", "description":"External number Solgt af Firstname Lastname", "unitOfMeasureId":"01e0edc8-2022-ed11-90eb-000d3ade9914" }
使用的计量单位来自GET请求,信息如下:
{ "@odata.etag": "W/\"JzIwOzEyOTI4MTAyNzc4MjEyNDI3MDQwMTswMDsn\"", "id": "01e0edc8-2022-ed11-90eb-000d3ade9914", "code": "KG", "displayName": "Kilo", "internationalStandardCode": "KGM", "symbol": "", "lastModifiedDateTime": "2022-08-22T13:47:22.113Z" }
不带unitOfMeasureId时可成功创建,但添加该字段、设置unitOfMeasureCode为KG(或同时设置两者)时,会收到404响应及如下错误信息:
{ "error": { "code": "Internal_InvalidTableRelation", "message": "The field Unit of Measure Code of table Purch. Inv. Line Aggregate contains a value (KG) that cannot be found in the related table (Item Unit of Measure). CorrelationId: 9feff4b3-9595-4a2e-847d-9f314a0bec35." } }
无论是否设置unitOfMeasureCode,或仅设置unitOfMeasureCode,错误信息均一致。请问是否必须使用物料的baseUnitOfMeasure?
解答
错误原因很明确:你使用的计量单位KG未被配置为当前物料允许使用的计量单位。系统中的计量单位是全局存在的,但每个物料需要单独维护可使用的计量单位列表(对应Item Unit of Measure表),即便KG是全局有效的计量单位,只要没给目标物料配置这个单位,就无法在该物料的采购发票行中使用。
不是必须使用物料的baseUnitOfMeasure,但你选用的计量单位必须是该物料已经配置过的(能在Item Unit of Measure表中找到对应条目)。
解决方案
- 先查询目标物料(itemId:
be04fb82-fdaa-ee11-a568-0022489c7d90)的Item Unit of Measure列表,确认KG是否在其中 - 如果不在,需要先给该物料添加KG作为允许使用的计量单位,之后再提交发票行创建请求
- 或者直接改用该物料已配置好的计量单位(包括baseUnitOfMeasure)
内容的提问来源于stack exchange,提问作者Ja Da
相关产品推荐
相关产品推荐

