如何通过Dynamics Business Central API创建含位置代码的物料?
在Business Central API中创建带位置编码的物料
可以通过API创建关联位置编码的物料,但位置信息不属于物料主数据的直接字段,需要通过关联的itemLocations实体来绑定,下面是具体解决方法:
方案1:先创建物料,再关联位置
- 用你提供的JSON先成功创建物料实体,确保物料已存在于系统中。
- 调用
itemLocations端点,为该物料绑定位置编码,请求体示例:
{ "itemId": "物料的UUID", "locationCode": "你的目标位置编码(比如WHSE01)", "quantity": 0 // 初始库存可设为0,后续按需调整 }
请求URL格式:
https://api.businesscentral.dynamics.com/v2.0/[租户ID]/[环境名称]/api/v2.0/companies/[公司ID]/items/[物料ID]/itemLocations
方案2:创建物料时同时关联位置(一步完成)
利用BC API的OData深度插入(Deep Insert)功能,在创建物料的JSON中嵌套itemLocations数组,一次性完成物料创建与位置绑定:
{ "number": "1896-S", "displayName": "ATHENS Desk", "type": "Inventory", "itemCategoryId": "e21a6a90-44e3-ea11-bb43-000d3a2feca1", "itemCategoryCode": "TABLE", "blocked": false, "gtin": "", "unitPrice": 1000.8, "priceIncludesTax": false, "unitCost": 780.7, "taxGroupId": "9f196a90-44e3-ea11-bb43-000d3a2feca1", "taxGroupCode": "FURNITURE", "baseUnitOfMeasureId": "5ca6738a-44e3-ea11-bb43-000d3a2feca1", "baseUnitOfMeasureCode": "PCS", "itemLocations": [ { "locationCode": "WHSE01", "quantity": 0 } ] }
注意:该功能需要API版本在v2.0及以上,且你的权限需覆盖物料和位置关联实体的操作。
关于添加库存时的报错说明
你之前添加库存时提示“location code is required”,是因为库存记录(如itemLedgerEntries)必须关联具体位置,而此时物料还未绑定任何位置。解决方式有两种:
- 先按上述方案绑定位置,再添加库存;
- 添加库存时直接在请求体中指定
locationCode或locationId,示例:
{ "itemId": "物料UUID", "locationCode": "WHSE01", "quantity": 10, "entryType": "Purchase" }
内容的提问来源于stack exchange,提问作者Adrian Santos
相关产品推荐
相关产品推荐

