我们正在AL中创建一个扩展名以导入订单。 对于这个问题,我们简化了扩展程序,以解释我们面临的挑战。
我们要做的是在Dynamics 365商业中心中导入标题和行。
要实现这一点,我们有: -创建了一个表(标题) -创建了一个表格(行) -创建了Type API(Doc)页面 -创建了一个listPart(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上发布了扩展程序 需要帮助。
答案 0 :(得分:1)
我已经研究了类似的解决方案,发现要使其正常工作需要以下条件:
part
必须放在标题repeater
的{{1}}内。Page
上的EntityName
和EntitySetName
设置为与实际页面上相同的值。part
,例如$expand=[EntitySetName of your lines part]
。$expand=orderLines
行中的EntitySetName
相匹配。如果上面的说明不足够,我可以提供一些示例。