首页 > 解决方案 > 根据端点和屏幕名称(客户和销售订单)确定 REST API 的正确 JSON 字段 - Acumatica

问题描述

我的项目是导入客户和销售订单。我从外部程序中获取一个 CSV 文件,并将它们逐个字段地导入到销售订单和客户中。

我的挑战是确定正确的字段名称以使 REST API 正常工作。

我有以下字段:

客户屏幕

我希望包括三个字段:描述、礼品信息和公众评论。我检查了这个元素,这没有给我任何有用的信息。(即没有一个值映射到我将在 JSON 中使用的字段名称。)

当我转到客户端点时,描述已经存在:

显示描述字段的端点

因此,此 JSON 记录在 ADD 或 UPDATE 中成功:

{
    "OrderNbr"  : {"value": "SO003525"},
    "Description"  : {"value": "This is the Description"},
}

我扩展了默认客户(版本 18.200.001),并找到并添加了“礼品说明”和“公众评论”——它们被列为“订单摘要”的一部分——这正是说明所在的位置。

礼物和公众意见

但是,此 JSON 数据确实向 Gift 或 Public 添加了任何内容:

{
    "OrderNbr"  : {"value": "SO003525"},
    "Description"  : {"value": "This is the Description"},
    "PublicComment"  : {"value": "This is the Public Comment"},
    "GiftMessage": { "value": "This is the Gift Message"},
}

在与设置屏幕的(内部)开发人员交谈时,他告诉我添加了“礼物消息”和“公共评论”字段。但它们没有在端点中显示为“用户定义”字段。

问题:

1) 我怎么知道 JSON 结构应该是什么样子?是否有某种映射文档或显示 JSON 到端点数据的打印输出?我的意思是有时我需要使用子对象来引用 JSON 中的数据,例如,如果我想更新“主要联系人”信息,我会这样做:

{
 "CustomerClass":{"value":"INDIVIDUAL"},
 "CustomerID":{"value":"78577"},
 "CustomerName":{"value":"TEST CUSTOMER "},
 "MainContact":
   {
     "CompanyName":{"value":"TEST CUSTOMER COMPANY"},  
     "DisplayName":{"value": "TEST CUSTOMER DISPLAY"}, 
   }
}

我怎么知道这样做?(我知道只是因为我在添加记录时返回的数据中看到了它......这带来了第二个问题:

2) 有没有办法以 JSON 格式检索整个数据记录。有点像:“GET - SELECT ALL - EXPAND ALL”,所以我可以以正确设置的 JSON 格式查看记录中的所有数据?

3) 知道为什么礼物消息和公众评论显示为“订单摘要”但没有像描述那样更新吗?

4) 为什么有些东西是“不可扩展的”?例如,我无法展开销售订单中的付款。我收到一个错误:

捕获付款扩展错误

标签: restacumaticaacumatica-kb

解决方案


1) 我怎么知道 JSON 结构应该是什么样子

最简单的方法是执行 GET 请求。字段名称等同于DisplayName去掉空格的属性。因此,如果在屏幕上字段被标记Order Type,字段名称将OrderType在请求中。

要发出 GET 请求,URL 格式为/Entity/Keys.

例如实体SalesOrder有两个键:OrderTypeOrderNbr

要获取实体SalesOrder类型SO和编号SO005051,URL 将以: 结尾/SalesOrder/SO/SO005051

2) 有没有办法以 JSON 格式检索整个数据记录。有点像:“GET - SELECT ALL - EXPAND ALL”,所以我可以以正确设置的 JSON 格式查看记录中的所有数据?

如果您想要所有详细信息,则需要在 GET 查询的扩展子句中指定它们:$expand=Contacts,MainContact,BillingContact

可以在 Web Service Endpoint 屏幕 SM207060 中查找详细信息数组的名称。它们是具有空数组[]后缀的树视图元素。

在此处输入图像描述

3) 知道为什么礼物消息和公众评论显示为“订单摘要”但没有像描述那样更新吗?

这些是自定义字段。您需要扩展端点以添加这些自定义字段,否则它们将被忽略。如果自定义端点没有问题,则该字段可能未绑定到数据库。

但它们没有在端点中显示为“用户定义”字段。

如果User Defined您的意思是这些字段是通过向导(没有编程)添加的,那么这可能是它们在 Web 服务中不起作用的原因。您需要添加带有 DAC 扩展的自定义字段,这需要编程而不是用户定义字段。


推荐阅读