如何解决SuiteScript 更新搜索结果字段
我在 SuiteScript 2.0 中进行了一个搜索,它运行良好。但是对于搜索返回的每条记录,我想更新一个特定字段(我在其他地方使用它来确定该记录已被检查)。它可能是一个非常大的结果集,因此我必须对其进行分页。这是我的代码:
var sResult = mySearch.runPaged({pageSize: 10});
for (var pageIndex = 0; pageIndex < sResult.pageRanges.length; pageIndex++)
{
var searchPage = sResult.fetch({ index: pageRange.index });
searchPage.data.forEach(function (result)
{
var name = result.getValue({ name: "altname"})
result.setValue({
name: 'tracker',value: new Date()
})
});
}
您可以看到我在何处调用了 result.setValue()
,这是一个不存在的函数。但它显示了我想要更新“跟踪器”字段的位置以及我想要使用的数据。
我是不是完全在这里吠错了树?如何为返回的每个结果更新字段?
解决方法
正如 Simon 所说,您不能直接更新搜索结果,但可以使用 submitFields 方法。
此示例来自 NetSuite 文档:
var otherId = record.submitFields({
type: 'customrecord_book',//record Type
id: '4',// record Id
values: {
'custrecord_rating': '2'
}
});
与加载和保存记录相比,这种方法将节省更多的治理。
,AFAIK 不能直接更新搜索结果并将值写回记录,需要先加载记录。该代码段没有说明您正在搜索或想要加载的记录类型,但总体思路是(代替您的 result.setValue 行):
var loadedRecord = Record.load({type:'myrecordtype',id:result.id});
loadedRecord.setValue( {fieldId:'tracker',value: new Date() });
loadedRecord.save();
牢记 SuiteScript 管理和您修改的记录数量。加载和保存过多,您的脚本将比您预期的更早终止。
,糟糕的设计:不是在迭代中使用 result.setValue,而是将它们推送到“更新”数组,然后在 data.forEach 之后有另一个函数循环遍历更新数组并在那里处理它们使用 record.submitFields()
小心治理....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。