Acumatica REST API-从Contact / ContactUserInfo

我正在尝试获取分配给特定角色的联系人列表。如果我的联系人具有用户角色“ 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

到目前为止我已经尝试过:

  1. 根据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.


  1. 所以我调查了这个BQL委托问题。根据{{​​3}}(滚动到底部,“合同版本3的端点的使用说明”),有两种解决方案:

    2a。不要使用这些字段(不是选项

    2b。一对一检索有问题的字段。但是我不能这样做,因为contactuserInfo或ContactRole端点都不是顶级实体,这意味着即使我有它们的ID,我也无法向这些端点发出HTTP请求,


  1. 所以我想也许可以将Roles数组链接到Contact实体而不是contactuserInfo实体。我遵循了“将链接的实体或详细信息的实体添加到另一个实体” 下的步骤Acumatica wiki,但是当我进入步骤4时,“插入”按钮被禁用,无法继续进行。

  1. 我在某个地方看到一个线程,该线程表明,如果我一个接一个而不是一个列表地获取联系人,则优化过程将更加容易,并且Roles数组将可见。因此,我获取了一个联系人ID,并修改了我的请求以获取一个联系人而不是列表:

    {{site}}/entity/Default/18.200.001/Contact/7e87d8fc-6d18-4g95-8334-e54b69e2803t?$expand=UserInfo

    但是由于某种原因,UserInfo的值为null。其余字段与该联系人在列表中时的字段相同,因此肯定可以获取正确的数据,但是现在UserInfo字段为null?

谢谢

希望我的尝试之一是正确的。很高兴根据要求提供其他详细信息。

wuchun198799 回答:Acumatica REST API-从Contact / ContactUserInfo

如果您需要获取屏幕上不可用的特定数据(例如您遇到的问题),则可以在Acumatica中建立一个通用查询并通过Web服务公开它。

我能够建立一个连接PX.Objects.CR.Contact,PX.SM.Users和PX.SM.UsersInRoles的GI,然后通过RoleName等于Sales Reps进行过滤(如果您从架构中检查,可以浏览到该角色)。接下来,将所需的所有列添加到Web服务上所需的GI。确保在通用查询的UI中选中“可见”复选框,并通过访问创建的GI测试数据。

从那里,您可以关注Diane Cawley的博客,了解如何通过Web服务公开GI。

https://www.acumatica.com/blog/contract-based-apis-in-generic-inquiries/

本文链接:https://www.f2er.com/3164158.html

大家都在问