【发布时间】:2019-11-06 01:00:19
【问题描述】:
我正在尝试获取分配给特定角色的联系人列表。如果我的联系人具有用户角色“销售代表”,那么我想要获取所有“销售代表”是其角色的联系人。
对于上下文,联系人模型如下所示:
{
id: "7e87d8fc-6d18-4g95-8334-e54b69e2803t",
... // additional fields
UserInfo: { // <-- ContactUserInfo entity
id: "da1b408e-571c-4896-be61-a02c5f99b1ec",
... // additional fields,
Roles: [] // <-- Roles are stored here as ContactRole entities
}
}
Screenshot of Contact Model in API Docs
到目前为止我所做的尝试:
-
根据Integration Development Guide (pg 65),必须在 expand 参数中明确指定链接实体和详细实体,这样就可以得到以下信息:
{{site}}/entity/Default/18.200.001/Contact?$expand=UserInfo/Roles但是,这给了我错误:
Optimization cannot be performed.The following fields cause the error: UserInfo.Roles.RoleDescription: View Roles has BQL delegate.
-
所以我调查了这个 BQL 代表问题。根据Acumatica wiki(滚动到底部,“合约版本3的端点使用说明”),有两种解决方案:
2a。不要使用这些字段(不是一个选项)
2b。逐一检索有问题的字段。但我不能这样做,因为 ContactUserInfo 或 ContactRole 端点都不是顶级实体,这意味着即使我有它们的 id,我也无法向这些端点发出 HTTP 请求,
- 所以我想也许我可以将 Roles 数组链接到 Contact 实体而不是 ContactUserInfo 实体。我按照 “将链接或详细信息实体添加到另一个实体” 下的步骤 outlined here 进行操作,但是当我进入第 4 步时,我的“插入”按钮被禁用,无法继续。
-
我在某处看到一个线程,表明如果我一个一个地获取联系人而不是列表,优化过程会更容易并且角色数组将可见。所以我抓住了一个联系人 ID 并修改了我的请求以获取一个联系人而不是列表:
{{site}}/entity/Default/18.200.001/Contact/7e87d8fc-6d18-4g95-8334-e54b69e2803t?$expand=UserInfo但现在,出于某种原因,
UserInfo的值是null。其余字段与此联系人在列表中时相同,因此肯定获取了正确的数据,但现在 UserInfo 字段为空?
谢谢
希望我的尝试之一是在正确的轨道上。很高兴根据要求提供任何其他详细信息。
【问题讨论】: