NetSuite SuiteScript 2.0向加载的已保存搜索添加附加筛选器时出错,\u参数\u类型错误

NetSuite SuiteScript 2.0向加载的已保存搜索添加附加筛选器时出错,\u参数\u类型错误,netsuite,suitescript2.0,Netsuite,Suitescript2.0,我在Suitelet中有以下SuiteScript 2.0代码,我想在加载的已保存搜索(库存项目子列表和库存调整记录的主记录)中添加一个附加过滤器: 但是,代码在rs.filters=defaultFilters行上不断失败中出现错误: {"type":"error.SuiteScriptError","name":"WRONG_PARAMETER_TYPE","message":"Wrong parameter type: filters[2] is expected as Filter. "

我在Suitelet中有以下SuiteScript 2.0代码,我想在加载的已保存搜索(库存项目子列表和库存调整记录的主记录)中添加一个附加过滤器:

但是,代码在
rs.filters=defaultFilters行上不断失败中出现错误:

{"type":"error.SuiteScriptError","name":"WRONG_PARAMETER_TYPE","message":"Wrong parameter type: filters[2] is expected as Filter. ","stack":["createError(N/error)","onRequest(/SuiteScripts/sui_custom_pdf_report.js:308)","createError(N/error)"],"cause":{"name":"WRONG_PARAMETER_TYPE","message":"Wrong parameter type: filters[2] is expected as Filter. "},"id":"","notifyOff":false,"userFacing":true}
我没有使用
request.parameters.custscript\u report\u context.toString()
而是尝试了
981、“981”和[“981”]
,但没有成功

custscript\u report\u context
的类型为integer,它可以通过
N\record
加载记录

我在保存的搜索中以列的形式返回
internalid


有人知道我做错了什么吗?

你不能在搜索过滤器中推送数组,只能过滤对象。如果使用过滤表达式,则需要数组

请尝试以下代码

var rs = s.load({
  id: "customsearch_inv_adj_item_search"
});

// Copy the filters from rs into defaultFilters.
var defaultFilters = rs.filters;

// Push the customFilters into defaultFilters.

defaultFilters.push(s.createFilter({
  name: "internalid",
  operator: s.Operator.IS,
  values: request.parameters.custscript_report_context.toString()
}));
// Copy the modified defaultFilters back into rs
rs.filters = defaultFilters;

var results = rs.run().getRange(0, 1000);

不能在搜索筛选器中推送数组,只能筛选对象。如果使用过滤表达式,则需要数组

请尝试以下代码

var rs = s.load({
  id: "customsearch_inv_adj_item_search"
});

// Copy the filters from rs into defaultFilters.
var defaultFilters = rs.filters;

// Push the customFilters into defaultFilters.

defaultFilters.push(s.createFilter({
  name: "internalid",
  operator: s.Operator.IS,
  values: request.parameters.custscript_report_context.toString()
}));
// Copy the modified defaultFilters back into rs
rs.filters = defaultFilters;

var results = rs.run().getRange(0, 1000);

与其他答案类似……虽然你不能像@Avi的答案中提到的那样推送一个数组,但你可以将数组本身连接起来,这样就不需要循环。这是一种拉长,只是为了展示概念:

 var additionalFilters = new Array();;
                 additionalFilters.push(search.createFilter({name: 'account', operator: search.Operator.ANYOF, values: mainArgs.
                 additionalFilters.push(search.createFilter({name: 'postingperiod', operator: search.Operator.IS, values:[mainArgs.param_posting_period]}));

                 var mySearch = search.load({id: searchID});
                 if(additionalFilters){

                     //Copy the filters from mySearch into defaultFilters
                     var defaultFilters = mySearch.filters;

                     //We will add the new filter in customFilters
                     var customFilters = [];
                     customFilters = additionalFilters;

                     //We will concatenate the customFilters and defaultFilters, thereby creating a new array called allFilters
                     var allFilters = defaultFilters.concat(customFilters);

                     //We will assign the allFilters array back into mySearch
                     mySearch.filters = allFilters;

                 }

注意:这是我从不同的

中收集到的编辑版本,与其他答案类似……虽然你不能像@Avi的答案中提到的那样推送数组,但你可以将数组连接起来,这样就不需要循环。这是一种拉长,只是为了展示概念:

 var additionalFilters = new Array();;
                 additionalFilters.push(search.createFilter({name: 'account', operator: search.Operator.ANYOF, values: mainArgs.
                 additionalFilters.push(search.createFilter({name: 'postingperiod', operator: search.Operator.IS, values:[mainArgs.param_posting_period]}));

                 var mySearch = search.load({id: searchID});
                 if(additionalFilters){

                     //Copy the filters from mySearch into defaultFilters
                     var defaultFilters = mySearch.filters;

                     //We will add the new filter in customFilters
                     var customFilters = [];
                     customFilters = additionalFilters;

                     //We will concatenate the customFilters and defaultFilters, thereby creating a new array called allFilters
                     var allFilters = defaultFilters.concat(customFilters);

                     //We will assign the allFilters array back into mySearch
                     mySearch.filters = allFilters;

                 }

注意:这是我从另一个不同的

收集到的经过编辑的版本,谢谢你,伙计,你是个救命恩人!谢谢你,伙计,你是个救命恩人!