SuiteScript:如何删除 nlapiSearchRecord 的结果?
SuiteScript: How do you delete the result of nlapiSearchRecord?
我只想删除满足特定条件的销售订单的履行请求。
这是我试过的。我知道我做错了,但我还没有找到很多关于如何实际使用搜索结果的例子。任何帮助将不胜感激。
var frId = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('createdfrom', null, 'is', nlapiGetRecordId()),
new nlobjSearchFilter('mainline', null, 'is', 'T')
], id);
nlapiDeleteRecord('fulfillmentrequest', frId);
这就是我的目标,不幸的是它实际上并没有起作用,我相信我将不得不切换到一个预定的事件,因为显然在脚本运行之前状态不会更新到 "Closed"即使在提交功能之后。
function frDelete() {
if (nlapiGetFieldValue('Status') == "Closed"){
var results = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('createdfrom', null, 'is', nlapiGetRecordId()),
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('status', null, 'noneof', 'FftReq:F')
]);
nlapiDeleteRecord('fulfillmentrequest', results[0].getId());
nlapiDeleteRecord('fulfillmentrequest', results[1].getId());
nlapiDeleteRecord('fulfillmentrequest', results[2].getId());
nlapiDeleteRecord('fulfillmentrequest', results[3].getId());
nlapiDeleteRecord('fulfillmentrequest', results[4].getId());
nlapiDeleteRecord('fulfillmentrequest', results[5].getId());
nlapiDeleteRecord('fulfillmentrequest', results[6].getId());
}
}
nlapiSearchRecord
returns nlobjSearchResult
个对象的数组,而 nlapiDeleteRecord
需要 id 参数的整数。
您可以通过以下方式从搜索结果中检索 ID:
var searchResults = nlapiSearchRecord(....);
if(searchResults.length) {
var frId = searchResults[0].getId();
nlapiDeleteRecord('fulfillmentrequest', frId);
} else {
// handle no results..
}
nlapiSearchRecord 将 return 对象。
nlapiDeleteRecord 需要记录的类型和内部 ID 作为参数。
var sFilters = [];
sFilters.push(new nlobjSearchFilter('isinactive', null, 'is', 'F')); // you can add more filters.
var sColumns = [];
sColumns.push(new nlobjSearchColumn('id')); // you can add more columns.
var sResults = nlapiSearchRecord('fulfillmentrequest', null, sFilters, sColumns);
var recordId;
if (sResults.length) {
for (i = 0; i < sResults.length; i++) {
recordId = sResults[i].getId();
nlapiDeleteRecord('fulfillmentrequest', recordId);
}
}
希望这会有所帮助。
这是我的最终解决方案。这是一个预定的 suitescript,它将删除所有 New 或 In Progress 的 Fulfillment Requests 如果创建它们的销售订单是 已关闭、待结算、已结算或已取消。 None 这些状态可以有剩余的行要完成,所以这对我来说很有意义。如果没有我在这里得到的帮助,我不可能做到这一点。
function frDelete() {
var results = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('status', null, 'anyof', 'FftReq:A','FftReq:B'),
new nlobjSearchFilter('status', 'createdfrom', 'anyof', 'SalesOrd:H','SalesOrd:C','SalesOrd:G','SalesOrd:F')
]);
var recordId;
if (results.length) {
for (i = 0; i < results.length; i++) {
recordId = results[i].getId();
nlapiDeleteRecord('fulfillmentrequest', recordId);
}
}}
我只想删除满足特定条件的销售订单的履行请求。
这是我试过的。我知道我做错了,但我还没有找到很多关于如何实际使用搜索结果的例子。任何帮助将不胜感激。
var frId = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('createdfrom', null, 'is', nlapiGetRecordId()),
new nlobjSearchFilter('mainline', null, 'is', 'T')
], id);
nlapiDeleteRecord('fulfillmentrequest', frId);
这就是我的目标,不幸的是它实际上并没有起作用,我相信我将不得不切换到一个预定的事件,因为显然在脚本运行之前状态不会更新到 "Closed"即使在提交功能之后。
function frDelete() {
if (nlapiGetFieldValue('Status') == "Closed"){
var results = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('createdfrom', null, 'is', nlapiGetRecordId()),
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('status', null, 'noneof', 'FftReq:F')
]);
nlapiDeleteRecord('fulfillmentrequest', results[0].getId());
nlapiDeleteRecord('fulfillmentrequest', results[1].getId());
nlapiDeleteRecord('fulfillmentrequest', results[2].getId());
nlapiDeleteRecord('fulfillmentrequest', results[3].getId());
nlapiDeleteRecord('fulfillmentrequest', results[4].getId());
nlapiDeleteRecord('fulfillmentrequest', results[5].getId());
nlapiDeleteRecord('fulfillmentrequest', results[6].getId());
}
}
nlapiSearchRecord
returns nlobjSearchResult
个对象的数组,而 nlapiDeleteRecord
需要 id 参数的整数。
您可以通过以下方式从搜索结果中检索 ID:
var searchResults = nlapiSearchRecord(....);
if(searchResults.length) {
var frId = searchResults[0].getId();
nlapiDeleteRecord('fulfillmentrequest', frId);
} else {
// handle no results..
}
nlapiSearchRecord 将 return 对象。 nlapiDeleteRecord 需要记录的类型和内部 ID 作为参数。
var sFilters = [];
sFilters.push(new nlobjSearchFilter('isinactive', null, 'is', 'F')); // you can add more filters.
var sColumns = [];
sColumns.push(new nlobjSearchColumn('id')); // you can add more columns.
var sResults = nlapiSearchRecord('fulfillmentrequest', null, sFilters, sColumns);
var recordId;
if (sResults.length) {
for (i = 0; i < sResults.length; i++) {
recordId = sResults[i].getId();
nlapiDeleteRecord('fulfillmentrequest', recordId);
}
}
希望这会有所帮助。
这是我的最终解决方案。这是一个预定的 suitescript,它将删除所有 New 或 In Progress 的 Fulfillment Requests 如果创建它们的销售订单是 已关闭、待结算、已结算或已取消。 None 这些状态可以有剩余的行要完成,所以这对我来说很有意义。如果没有我在这里得到的帮助,我不可能做到这一点。
function frDelete() {
var results = nlapiSearchRecord('fulfillmentrequest', null, [
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('status', null, 'anyof', 'FftReq:A','FftReq:B'),
new nlobjSearchFilter('status', 'createdfrom', 'anyof', 'SalesOrd:H','SalesOrd:C','SalesOrd:G','SalesOrd:F')
]);
var recordId;
if (results.length) {
for (i = 0; i < results.length; i++) {
recordId = results[i].getId();
nlapiDeleteRecord('fulfillmentrequest', recordId);
}
}}