NetSuite SuiteScript 2.0向加载的已保存搜索添加附加筛选器时出错,\u参数\u类型错误
我在Suitelet中有以下SuiteScript 2.0代码,我想在加载的已保存搜索(库存项目子列表和库存调整记录的主记录)中添加一个附加过滤器: 但是,代码在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. "
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;
}
注意:这是我从另一个不同的收集到的经过编辑的版本,谢谢你,伙计,你是个救命恩人!谢谢你,伙计,你是个救命恩人!