我在采购订单记录上有一个按钮,它对当前记录执行保存的搜索查询,然后使用HTTP模块通过一个日志将数据发送到一个URL。然后,该URL发送回作为成功确认的一部分的数据。保存搜索的想法是创建一个javascript对象,该对象包含我想要从采购订单(主记录和带有子记录的项目子列表)中获取的所有数据,然后使用
JSON.stringify
为HTTP POST创建JSON负载。我不能用
currentRecord
因为如果您检查它,它只包含内部ID。这也将防止我不得不花大量的时间编写代码,以便从
当前记录
.
不幸的是,我并不真正理解如何在动态创建的保存搜索中指定列名。有时,在我看来,列名是来自NetSuite记录浏览器的,而在其他时候,如果我使用来自NetSuite记录浏览器的列名(例如,列未找到),脚本会给出错误信息
currencysymbol
)
我也不知道如何指定出现在子列表中的列或子列表中的子记录。我试着用
item.itemtype
但这给了我一个列找不到错误。只是
item
成功完成,但我不确定这是否真的成功,因为在
JSON
(它增加了很多反斜杠)。使用
console.log
(出于某种原因,我无法使用NetSuite取回任何东西
log.audit
)这也相当困难,尽管看起来它返回的是一个具有5行的数组。所以使用
项目
可能会成功。我这样说是因为我有3个项目行,它返回5个数组行。
因此,基本上我想知道在哪里可以找到要在NetSuite中用于保存搜索的列的名称;以及如何在保存的搜索中指定子列表列名称和子列表子记录列名称。
/**
* @NApiVersion 2.0
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/ui/dialog', 'N/currentRecord', 'N/record', 'N/url', 'N/http', 'N/search'], function (dialog, rec, record, url, http, s) {
function pageInit(context) {
// All client scripts need at least one dummy function.
} // pageInit
function onButtonClick() {
var currentRecord = rec.get();
// Create a saved search dynamically.
var rs = s.create({
type: s.Type.PURCHASE_ORDER,
filters: [
["mainline", s.Operator.IS, "F"], "and",
["internalid", s.Operator.IS, currentRecord.id]
],
columns: [
"internalid",
"currency",
{
name: "item",
sort: s.Sort.ASC // DESC
}
]
});
var myPostDataObj = rs.run().getRange(0, 1000);
console.log(myPostDataObj);
var headers = {
'Content-Type': 'application/json; charset=utf-8',
};
http.post.promise({
url: 'http://httpbin.org:80/post',
body: JSON.stringify(myPostDataObj),
headers: headers
})
.then(function(response){
console.log('SUCCESS: ' + JSON.stringify(response));
})
.catch(function onRejected(reason) {
console.log('ERROR: ' + JSON.stringify(reason));
})
}
return {
pageInit: pageInit,
onButtonClick: onButtonClick
};
}); // Define