展开 Acumatica REST 中的多个字段 API 端点

Expand Multiple Fields in Acumatica REST API Endpoint

如何扩展 Acumatica REST API 调用中的多个字段?

/entity/Default/17.200.001/Customer?$expand=Contacts

有效,

/entity/Default/17.200.001/Customer?$expand=Salespersons

有效,但是

/entity/Default/17.200.001/Customer?$expand=Contacts,Salespersons

没有,它们都没有展开。

根据 Acumatica 文档:

集成->使用基于契约的 REST API->检索记录的参数->$expand

他们说他们遵循 OData 约定 (https://www.odata.org/documentation/odata-version-3-0/url-conventions/)

我相信此请求符合要求。

我已就此行为询问过一位同事。假设是使用 OData 语法扩展多个查询是可行的,但它不能扩展超过 1 个实体数组。我说假设是因为在尝试扩展 2 个实体数组时返回的 Web 服务错误过于笼统,无法将其确定为问题所在。

当前发布的文档似乎没有涉及该限制,但它应该很快会与更新的 Web 服务文档一起发布。请注意,这仅适用于获取所有实体时。如果您要 select 单个实体(例如:select 1 个 ID 客户),那么您可以扩展超过 1 个数组。对单个实体的限制较少,因为不需要优化 1 vs X 实体的性能。

您可以展开多个单个实体和一个数组:

$expand=Contacts,MainContact,BillingContact

但不能展开多个数组:

$expand=Contacts,Salespersons

在 Web 服务端点屏幕左侧窗格树视图中,数组实体具有数组符号 [](下图中以红色突出显示),而单个实体没有 []:

可能的解决方法:

1) 如果需要所有客户和所有字段的扩展列表

a) Write a Generic Inquiry
b) Make multiple calls, expanding only one list each time

2) 如果客户数量很少

a) Use the /Customer/{id}?$expand=... for each customers {id}

(2a) 的好处是支持 BQL 委托,因为 (1b) 可能会出现 "View Answers has BQL delegate" 错误。 (1a) 可能需要最多的工作。