我正在尝试获取分配给特定角色的联系人列表。如果我的联系人具有用户角色“ Sales Rep”,那么我想让所有具有“ Sales Rep”角色的联系人参与其中。
对于上下文,联系模型如下所示:
{
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委托问题。根据{{3}}(滚动到底部,“合同版本3的端点的使用说明”),有两种解决方案:
2a。不要使用这些字段(不是选项)
2b。一对一检索有问题的字段。但是我不能这样做,因为contactuserInfo或ContactRole端点都不是顶级实体,这意味着即使我有它们的ID,我也无法向这些端点发出HTTP请求,
- 所以我想也许可以将Roles数组链接到Contact实体而不是contactuserInfo实体。我遵循了“将链接的实体或详细信息的实体添加到另一个实体” 下的步骤Acumatica wiki,但是当我进入步骤4时,“插入”按钮被禁用,无法继续进行。
-
我在某个地方看到一个线程,该线程表明,如果我一个接一个而不是一个列表地获取联系人,则优化过程将更加容易,并且Roles数组将可见。因此,我获取了一个联系人ID,并修改了我的请求以获取一个联系人而不是列表:
{{site}}/entity/Default/18.200.001/Contact/7e87d8fc-6d18-4g95-8334-e54b69e2803t?$expand=UserInfo
但是由于某种原因,
UserInfo
的值为null
。其余字段与该联系人在列表中时的字段相同,因此肯定可以获取正确的数据,但是现在UserInfo字段为null?
谢谢
希望我的尝试之一是正确的。很高兴根据要求提供其他详细信息。