【问题标题】:Acumatica REST API - Get Roles Array from Contact/ContactUserInfoAcumatica REST API - 从 Contact/ContactUserInfo 获取角色数组
【发布时间】: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

到目前为止我所做的尝试:

  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 代表问题。根据Acumatica wiki(滚动到底部,“合约版本3的端点使用说明”),有两种解决方案:

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

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


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

  1. 我在某处看到一个线程,表明如果我一个一个地获取联系人而不是列表,优化过程会更容易并且角色数组将可见。所以我抓住了一个联系人 ID 并修改了我的请求以获取一个联系人而不是列表:

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

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

谢谢

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

【问题讨论】:

    标签: rest acumatica


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 2019-12-02
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多