Acumatica通过REST API运行通用查询

时间:2018-01-24 17:06:44

标签: acumatica

如何运行我通过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中针对扩展端点的设置: enter image description here

我尝试过设置请求主体但没有成功:

{
    "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 - 查询结构

以下是查询的结构: enter image description here

以下是Acumatica用户界面中的结果: enter image description here

更新4

扩展的GetAvailableInventory节点: enter image description here

2 个答案:

答案 0 :(得分:0)

这是我在Web服务端点中构造通用查询的方式。

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

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

ENDPOINT的字段是过滤器(单击“ PUPULATE”->“过滤器”)。上面的示例似乎没有任何过滤器,这很好,因此此FIELDS应该为空。

要从通用查询中获取数据,请添加“详细信息”实体

  • 点击常规查询
  • 单击“ +插入”
  • 使用FieldName ='GetAvailableInventoryResults',ObjectName ='GetAvailableInventoryResults',ObjectType = Detail的形式填写
  • 保存

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

要访问ENDPOINT,请执行PUT操作

   .../GetAvailableInventory?$expand=GetAvailableInventoryResults

身体为

{}

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

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

答案 1 :(得分:-2)

使用GET而不是PUT。您的要求属于here。我认为通用查询<>调查表。因此,GET与PUT之间的结果不同。