【问题标题】:Acumatica run Generic Inquiry via REST APIAcumatica 通过 REST API 运行通用查询
【发布时间】:2018-07-03 19:46:58
【问题描述】:

如何运行通过 Acumatica 的 REST API 创建的通用查询?我之前使用过库存汇总查询,但它没有返回我需要的所有数据,因此我们创建了一个通用查询来返回所有库存项目的装运数量。但是我找不到如何通过 API 从此报告中获取数据。

更新:

我已尝试创建扩展端点服务并按照 I210 文档中的说明为报告添加端点,然后通过 REST API(I210 中未显示)进行访问。我将所有结果字段添加到我需要返回的端点的字段选项卡中。

以下是我使用的详细信息:

Extended Endpoint Name: MyInventoryAvailable
Endpoint version: 6.00.001
Endpoint: GetAvailableInventory
URL: https://mycompany.acumatica.com/entity/MyInventoryAvailable/6.00.001/GetAvailableInventory?$expand=Results

当我使用上述详细信息发出 PUT 请求时,我得到的响应是:

{
    "message": "The request is invalid.",
    "modelState": {
        "": [
            "The request body should not be empty."
        ]
    }
}

更新 2

这是 Acumatica 中扩展端点的设置:

我尝试设置请求正文但没有成功:

{
    "InventoryID": {
        "Value": "AB-CL-60"
    },
    "Description": {
        "Value": ""
    },
    "Location": {
        "Value": ""
    },
    "QtyHardAvailable":{
        "Value": 0.0
    },
    "QtyOnHand":{
        "Value": 0.0
    },
    "Warehouse":{
        "Value": 0.0
    }
}

发送任何请求正文时,无论内容如何,​​我都会收到此错误:

"exceptionMessage": "The given key was not present in the dictionary.",
"exceptionType": "System.Collections.Generic.KeyNotFoundException",

更新 3 - 查询结构

这是查询的结构:

以下是 Acumatica 用户界面中的结果:

更新 4

扩展的 GetAvailableInventory 节点:

【问题讨论】:

  • 您尝试过什么但失败了?查询操作在I210培训和帮助中有描述。
  • I210 没有描述如何通过 REST API 做到这一点。
  • 请参阅@SergRogovtsev 上方的更新问题
  • 因此,错误清楚地说明了您做错了什么:显然,没有发送任何正文。你送的是什么尸体?
  • @big_water,你不应该使用“GET”而不是“PUT”吗?你在使用 Postman 来测试你的 API 吗?

标签: acumatica


【解决方案1】:

这就是我在 Web-Service-Endpoints 中构建通用查询的方式。

虽然其他端点包含任意数量的映射对象,但通用查询端点只有

Enter-Keys, Filter, Result, and Values-for-Update

ENDPOINT 的字段是过滤器(单击填充 -> 过滤器)。上面的例子似乎没有任何过滤器,这很好,所以这个FIELDS应该是空的。

为了从通用查询中获取数据,添加了一个“详细信息”实体

  • 点击通用查询
  • 点击“+插入”
  • 用 FieldName='GetAvailableInventoryResults', ObjectName='GetAvailableInventoryResults', ObjectType=Detail 填写表格
  • 保存

现在,通过单击“GetAvailableInventoryResults”添加所需的结果,然后单击 FIELDS(打开一个弹出窗口)。在弹出窗口中,选择“结果”并添加所需的所有字段。不要选择“行号”和“已选择”,因为它们不是必需的,可能会导致错误。保存。

要访问 ENDPOINT,请执行 PUT 到

   .../GetAvailableInventory?$expand=GetAvailableInventoryResults

主体为

{}

因为这个 ENDPOINT 没有定义任何过滤器,但是一个 PUT 要求它存在。

为什么要使用“GetAvailableInventoryResults”?好吧,因为我遇到了多个通用查询端点具有相同名称的详细信息的问题,所以我确保它们都是唯一的。

【讨论】:

    【解决方案2】:

    使用 GET 而不是 PUT。您的要求属于this。我想通用查询查询表。因此 GET 与 PUT 之间的结果不同。

    【讨论】:

    • GET 请求不适用于通用查询。
    • 你在说什么@SergRogovtsev?我有许多基于通用查询的端点,它们在 GET 上都可以正常工作。
    • @SergRogovtsev,仅仅因为 无法提供解决方案,因为您的软件无法按预期运行,因此没有理由对答案投反对票并将其称为无效解决方案,因为它确实确实有效。这将是公认的答案,直到您可以修复您的软件和/或提供基于您预期方法的解决方案。请停止对有效的问题和答案投反对票。您阻止公众在公共论坛上帮助支持您的软件!
    • @Rick,我很高兴知道你已经找到了一种方法来实现适合你的东西,但我必须告诉你,不幸的是,这不是它应该的方式工作,所以它可能会意外中断。
    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2021-02-08
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多