2

我们正在 AL 中创建一个扩展来导入订单。对于这个问题,我们简化了扩展来解释我们面临的挑战。

我们想要做的是在 Dynamics 365 Business Central 中导入标题 + 行。

为了实现这一点,我们有: - 创建了一个表格(标题) - 创建了一个表格(行) - 创建了一个 API 类型的页面(文档) - 创建了一个列表部分(SalesLine)

方案 1

我们已发布页面 DOC 并正在尝试对此 odata url 进行发布请求。

POST https://api.businesscentral.dynamics.com/v1.0/{tennant}/Sandbox/ODataV4/Company('CRONUS%20NL')/Doc/ HTTP/1.1
Content-Type: application/json
Authorization: Basic {{username}} {{password}}

{
  "name": "Description",
  "SalesLines" : [{"lineno" : 1000}]
}

响应:

{
  "error": {
    "code": "BadRequest",
    "message": "Does not support untyped value in non-open type."
  }
}

方案 2

当我们发布:

POST https://api.businesscentral.dynamics.com/v1.0/3{tennant}/Sandbox/ODataV4/Company('CRONUS%20NL')/Doc/ HTTP/1.1
Content-Type: application/json
Authorization: Basic {{username}} {{password}}

{
  "name": "Description"
}

我们得到以下响应:

{
  "@odata.context": "https://api.businesscentral.dynamics.com/v1.0/3ddcca3d-d343-4a06-95f9-f32dbf645199/Sandbox/ODataV4/$metadata#Company('CRONUS%20NL')/Doc/$entity",
  "@odata.etag": "W/\"JzQ0O3BKUzExSUMrQUl4UXFQc2R6V1J1ellvZEttRTJoa2xhanNtV0M0K3Ezajg9MTswMDsn\"",
  "id": 4,
  "name": "Description",
  "DateTime": "2019-05-20T19:33:13.73Z"
}

我已经在GitHub 上发布了我们的扩展, 帮助将得到应用。

4

1 回答 1

1

我研究了一个类似的解决方案,发现它需要以下内容才能工作:

  1. 包含你的part行必须放在repeater你的 header内Page
  2. 您必须将您的 和 设置为与EntityName实际页面上相同的值。EntitySetNamepart
  3. 调用 API 时,您必须附加参数,$expand=[EntitySetName of your lines part]例如$expand=orderLines.
  4. 在 JSON 正文中,包含行的数组的属性名称必须与行的属性名称EntitySetName匹配part

如果上述说明还不够,我可以提供一些示例。

于 2019-11-18T10:58:04.590 回答