在Dynamics Business Central中更新销售订单行项目

问题描述

我有一个使用商务中心API创建的销售订单。销售订单只有一个订单项。我想更新订单项的数量。以下是我到目前为止所尝试的。

端点:https://api.businesscentral.dynamics.com/v1.0/domain.com/api/v1.0/companies(company_id)/salesOrders(sales_order_ide)/salesOrderLines(sales_order_line_id)

其中销售订单行ID的格式为e86d3aa1-f2f8-ea11-aa61-0022481e3b8c-10000document中所述,当发出PATCH请求时,出现以下异常:

')'或','预期在第9位 “(sale-order-line-item-id)”。

当我只是尝试获取订单项时,也会发生上述异常,但是当我更改URL并采用以下格式时,该异常已得到解决

端点:

https://api.businesscentral.dynamics.com/v1.0/rante.com/api/v1.0/companies(b4a4beb2-2d42-40dc-9229-5b5c371be4e3)/salesOrders(e86d3aa1-f2f8-ea11-aa61-0022481e3b8c)/salesOrderLines?filter=sequence eq 10000

当我尝试通过发布获取订单项时,此端点返回正确的响应 GET个请求。但是,当我使用相同的端点(例如简单的请求正文)发出PATCH请求时,

{"quantity" : 2.0}

它引发异常:

对EdmType'Collection'的'salesOrderLines'的'PATCH'请求不是 可以在Dynamics 365商业中心OData Web服务中使用。

我还指定了if-Match标头以及包含该订单项的etag值但无济于事的请求,并且发生了相同的异常。我想念什么吗?任何帮助将不胜感激。

解决方法

对于那些以后可能会问这个问题的人,经过邮递员的多次尝试之后,我终于找到了问题所在。在我的情况下,基本上是if-Match的{​​{1}}标头对于该订单项来说就可以了。问题出在API URL,特别是我们指定订单项ID的方式。我们必须在单引号中指定它,以便API调用的URL变为: https://api.businesscentral.dynamics.com/v1.0/domain.com/api/v1.0/companies(company_id)/salesOrders(sales_order_ide)/salesOrderLines('sales_order_line_id')

您会注意到,我们没有在单引号中指定Etagcompany_id,原因是这两个参数a的类型均为sales_order_id,而GUID的类型根据元数据文档sales_order_line_id