基于端点和屏幕名称(客户和销售订单)-Acumatica确定REST API的正确JSON字段

问题描述 投票:0回答:1

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

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

我有以下字段:

Customer Screen

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

当我转到客户终端时,说明已经存在:

Endpoint Showing Description Field

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

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

我扩展了默认客户(版本18.200.001),然后找到并添加了“礼物说明”和“公共评论”,它们被列为“订单摘要”的一部分-这正是说明原为。

Gift and Public Comment

但是,此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格式检索整个数据记录的方法。有点像:“获取-全选-全部展开”,这样我就可以以正确设置的JSON格式查看记录中的所有数据?

3)知道为什么礼物消息和公共评论显示为“订单摘要”,但不像“说明”那样更新吗?

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

Capture of Payments Expand Error

rest acumatica acumatica-kb
1个回答
0
投票

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

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

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

例如,实体SalesOrder有两个键:OrderTypeOrderNbr

要获取类型为SalesOrder并具有数字SO的实体SO005051,URL将以/SalesOrder/SO/SO005051结尾。

2)是否有一种方法可以检索其JSON中的整个数据记录格式。有点像:“获取-全选-全部展开”,这样我就可以看到记录中的所有数据都采用正确设置的JSON格式?

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

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

enter image description here

3)任何想法,为什么礼物消息和公共评论显示为“订单摘要”,但不像“说明”那样更新吗?

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

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

如果按User Defined表示您是使用向导添加这些字段(无需编程),则这可能是它们在Web服务中不起作用的原因。您需要添加带有DAC扩展名的自定义字段,该扩展名需要进行编程,而不是“用户定义”字段。

© www.soinside.com 2019 - 2024. All rights reserved.