在 Acumatica 中使用 REST API 将数据提供程序和场景替换为代码
Replace Data Provider and Scenario with Code using REST API in Acumatica
我的任务是用使用 REST API 的自动化程序替换 Acumatica 中的手动程序。我已经阅读了集成指南,但我不知道如何确定与我要替换的手动过程相匹配的端点。这是非常基础的,但我在通读的文档中找不到任何答案。
这是手动过程:
(这个过程有两个方面,导入同步和导出同步——但我现在只关注导出。)
1) 进入集成下的 "Export Scenario" 选项,然后选择 "Available Inventory" 方案 -- 然后 select "Prepare and Export."
2) 转到数据提供者并选择 "AvailableInventory" 提供者。然后 select 从“同步”选项卡导出。
最终结果是一个 CSV 文件,我将其带到 POS 系统并将其导入那里。
因此,从 API 的角度来看,我需要通过端点进入清单,select 所有清单都基于日期标准,然后将其写入 CSV 文件。
但是我如何知道要使用哪个端点,以及如何确保我在 C# 代码中收集了我们在手动过程中使用数据提供程序和数据场景获取的所有数据?
我查看了文档,但似乎找不到这个。
首先,您需要为 Export By Scenario 页面创建一个 Endpoint。
转到 Web 服务端点 (SM207060) 页面并扩展任何现有端点。
添加一个新端点并将其映射到“按场景导出”页面。
添加场景的名称和状态作为参数。
Prepare and Export 正在开始长时间操作,为了获取正确的文件,您需要执行获取请求并检查 Status 是否已完成。
在端点下添加动作并将其映射到图形的 prepareExport 动作。
添加场景的名称作为操作的参数。
现在是采取行动的时候了。
下面是如何在“Export AP Vendors”导出场景中调用我们的操作的示例代码。
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/ExportByScenarios/prepareExport");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n\t\"entity\":{\n\t\t\"Name\" : {\"value\":\"Export AP Vendors\"}\n\t},\n\t\"parameters\":{\n\t\t\n\t}\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
因此,如果一切都已正确处理,您将获得 202 响应代码。
现在我们需要检查场景是否有效以及文件是否正在导出。
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/ExportByScenarios/Export AP Vendors");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
作为对此请求的响应,您将获得场景记录,如下所示:
{
"id": "730d3b2c-d87f-e411-beca-00b56d0561c2",
"rowNumber": 1,
"note": "",
"Name": {
"value": "Export AP Vendors"
},
"Status": {
"value": "Processed"
},
"custom": {},
"files": [
{
"id": "9479c468-1cfa-4fb5-b8bd-30c10535e525",
"filename": "Data Providers (Export AP Vendors)\AP Export Vendor Template.xlsx",
"href": "/ACU19200/entity/DefaultExt/18.200.001/files/9479c468-1cfa-4fb5-b8bd-30c10535e525"
}
]
}
现在您需要从文件部分获取“id”并获取该文件
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/files/9479c468-1cfa-4fb5-b8bd-30c10535e525");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
因此,您将获得文件 application/octet-stream。
我的任务是用使用 REST API 的自动化程序替换 Acumatica 中的手动程序。我已经阅读了集成指南,但我不知道如何确定与我要替换的手动过程相匹配的端点。这是非常基础的,但我在通读的文档中找不到任何答案。
这是手动过程:
(这个过程有两个方面,导入同步和导出同步——但我现在只关注导出。)
1) 进入集成下的 "Export Scenario" 选项,然后选择 "Available Inventory" 方案 -- 然后 select "Prepare and Export." 2) 转到数据提供者并选择 "AvailableInventory" 提供者。然后 select 从“同步”选项卡导出。
最终结果是一个 CSV 文件,我将其带到 POS 系统并将其导入那里。
因此,从 API 的角度来看,我需要通过端点进入清单,select 所有清单都基于日期标准,然后将其写入 CSV 文件。
但是我如何知道要使用哪个端点,以及如何确保我在 C# 代码中收集了我们在手动过程中使用数据提供程序和数据场景获取的所有数据?
我查看了文档,但似乎找不到这个。
首先,您需要为 Export By Scenario 页面创建一个 Endpoint。
转到 Web 服务端点 (SM207060) 页面并扩展任何现有端点。
添加一个新端点并将其映射到“按场景导出”页面。
添加场景的名称和状态作为参数。
Prepare and Export 正在开始长时间操作,为了获取正确的文件,您需要执行获取请求并检查 Status 是否已完成。
在端点下添加动作并将其映射到图形的 prepareExport 动作。
添加场景的名称作为操作的参数。
现在是采取行动的时候了。 下面是如何在“Export AP Vendors”导出场景中调用我们的操作的示例代码。
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/ExportByScenarios/prepareExport");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n\t\"entity\":{\n\t\t\"Name\" : {\"value\":\"Export AP Vendors\"}\n\t},\n\t\"parameters\":{\n\t\t\n\t}\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
因此,如果一切都已正确处理,您将获得 202 响应代码。
现在我们需要检查场景是否有效以及文件是否正在导出。
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/ExportByScenarios/Export AP Vendors");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
作为对此请求的响应,您将获得场景记录,如下所示:
{
"id": "730d3b2c-d87f-e411-beca-00b56d0561c2",
"rowNumber": 1,
"note": "",
"Name": {
"value": "Export AP Vendors"
},
"Status": {
"value": "Processed"
},
"custom": {},
"files": [
{
"id": "9479c468-1cfa-4fb5-b8bd-30c10535e525",
"filename": "Data Providers (Export AP Vendors)\AP Export Vendor Template.xlsx",
"href": "/ACU19200/entity/DefaultExt/18.200.001/files/9479c468-1cfa-4fb5-b8bd-30c10535e525"
}
]
}
现在您需要从文件部分获取“id”并获取该文件
var client = new RestClient("http://localhost/ACU19200/entity/DefaultExt/18.200.001/files/9479c468-1cfa-4fb5-b8bd-30c10535e525");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
因此,您将获得文件 application/octet-stream。