我的项目是导入客户和销售订单。我从外部程序中获取一个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格式检索整个数据记录的方法。有点像:“获取-全选-全部展开”,这样我就可以以正确设置的JSON格式查看记录中的所有数据?
3)知道为什么礼物消息和公共评论显示为“订单摘要”,但不像“说明”那样更新吗?
4)为什么有些事情“不可展开”?例如,我无法展开“销售订单中的付款”。我收到一个错误:
1)我怎么知道JSON结构应该是什么样子
最简单的方法是执行GET请求。字段名称等效于DisplayName
属性,其中除去了空格。因此,如果在屏幕上将该字段标记为Order Type
,则请求中的字段名称将为OrderType
。
要发出GET请求,URL格式为/Entity/Keys
。
例如,实体SalesOrder
有两个键:OrderType
和OrderNbr
。
要获取类型为SalesOrder
并具有数字SO
的实体SO005051
,URL将以/SalesOrder/SO/SO005051
结尾。
2)是否有一种方法可以检索其JSON中的整个数据记录格式。有点像:“获取-全选-全部展开”,这样我就可以看到记录中的所有数据都采用正确设置的JSON格式?
如果需要所有详细信息,则需要在GET查询的expand子句中全部指定它们:$expand=Contacts,MainContact,BillingContact
详细信息数组的名称可以在Web Service Endpoint屏幕SM207060中查找。它们是带有空数组[]
后缀的树视图元素。
3)任何想法,为什么礼物消息和公共评论显示为“订单摘要”,但不像“说明”那样更新吗?
这些是自定义字段。您需要扩展端点以添加这些自定义字段,否则它们将被忽略。如果自定义端点没有问题,则该字段可能未绑定到数据库。
但是它们在端点中未显示为“用户定义”字段。
如果按User Defined
表示您是使用向导添加这些字段(无需编程),则这可能是它们在Web服务中不起作用的原因。您需要添加带有DAC扩展名的自定义字段,该扩展名需要进行编程,而不是“用户定义”字段。