Netsuite SSv2 如何更新已保存搜索的过滤器
Netsuite SSv2 How to Update Filters of a Saved Search
我正在尝试了解如何更新组保存搜索的过滤器。
我从通用保存的搜索中保存过滤器:
var searchGen = search.load({
id: 'customsearch_ca_export_detail_search__38'
});
var filter = searchGen.filters;
然后我使用循环将过滤器插入搜索:
for (var i = 0; i<selectedMarkets.length; i++){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = search.load({id:selectedSearchId});
var filters = searchObj.filters;
filters = filter;
searchObj.save();
}
我所有的变量都包含正确的信息。但是将数据从通用保存的搜索推送到我想更新的搜索不起作用:
filters = filter;
有什么帮助吗?
超近距离,试试:
searchObj.filters = filter;
searchObj.save();
正如所写,您只是将 'local' 变量 filters
设置为过滤,而不是实际的搜索对象参数。
这是一个非常糟糕的答案,建议 极端 谨慎,但如果您确实需要在 SS2 中执行此操作,则可能适合您的目的。您可以重新创建整个搜索,删除原来的,然后保存重新创建的搜索:
var searchObj = search.load({
id: 'customsearch_test'
});
log.debug('first search', searchObj.filterExpression);
var otherSearch = search.load({
id: 'customsearch_test_2'
});
log.debug('second search', otherSearch.filterExpression);
var newSearch = search.create({
type: otherSearch.searchType,
filters: searchObj.filters, //everything is unchanged but the filters
columns: otherSearch.columns,
title: otherSearch.title || "testy test", //apparently the title doesn't come through in search.load()?!?
id: otherSearch.id,
isPublic: otherSearch.isPublic
});
search.delete({
id: 'customsearch_test_2'
});
var id = newSearch.save();
log.debug('result', id);
var otherSearchAgain = search.load({
id: 'customsearch_test_2'
});
log.debug('second search, after save', otherSearchAgain.filterExpression);
尝试解构过滤器并重建它们:
for (var i in selectedMarkets){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = SEARCHMODULE.load({id:selectedSearchId});
var oldFilters = searchObj.filters;
var newFilters = [];
for (var k in oldFilters) {
var oldFilter = oldFilters[k];
var filter = {};
filter.name = oldFilter.name;
filter.operator = oldFilter.operator;
filter.values = oldFilter.values;
filter.join = oldFilter.join;
if (typeof(oldFilter.formula) !== 'undefined'){
filter.formula = oldFilter.formula;
}
newFilters.push(SEARCHMODULE.createFilter(filter));
}
searchObj.filters = newFilters;
searchObj.save();
}
注意:您需要调整代码以适用于摘要过滤器。
所以我花了几周时间与 NetSuite 代表来回交流,他们已经确认 search.save()
存在一个错误,导致此功能无法正常工作。
他们现在已经提交了一个缺陷。仅供感兴趣的其他人参考。
我正在尝试了解如何更新组保存搜索的过滤器。
我从通用保存的搜索中保存过滤器:
var searchGen = search.load({
id: 'customsearch_ca_export_detail_search__38'
});
var filter = searchGen.filters;
然后我使用循环将过滤器插入搜索:
for (var i = 0; i<selectedMarkets.length; i++){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = search.load({id:selectedSearchId});
var filters = searchObj.filters;
filters = filter;
searchObj.save();
}
我所有的变量都包含正确的信息。但是将数据从通用保存的搜索推送到我想更新的搜索不起作用:
filters = filter;
有什么帮助吗?
超近距离,试试:
searchObj.filters = filter;
searchObj.save();
正如所写,您只是将 'local' 变量 filters
设置为过滤,而不是实际的搜索对象参数。
这是一个非常糟糕的答案,建议 极端 谨慎,但如果您确实需要在 SS2 中执行此操作,则可能适合您的目的。您可以重新创建整个搜索,删除原来的,然后保存重新创建的搜索:
var searchObj = search.load({
id: 'customsearch_test'
});
log.debug('first search', searchObj.filterExpression);
var otherSearch = search.load({
id: 'customsearch_test_2'
});
log.debug('second search', otherSearch.filterExpression);
var newSearch = search.create({
type: otherSearch.searchType,
filters: searchObj.filters, //everything is unchanged but the filters
columns: otherSearch.columns,
title: otherSearch.title || "testy test", //apparently the title doesn't come through in search.load()?!?
id: otherSearch.id,
isPublic: otherSearch.isPublic
});
search.delete({
id: 'customsearch_test_2'
});
var id = newSearch.save();
log.debug('result', id);
var otherSearchAgain = search.load({
id: 'customsearch_test_2'
});
log.debug('second search, after save', otherSearchAgain.filterExpression);
尝试解构过滤器并重建它们:
for (var i in selectedMarkets){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = SEARCHMODULE.load({id:selectedSearchId});
var oldFilters = searchObj.filters;
var newFilters = [];
for (var k in oldFilters) {
var oldFilter = oldFilters[k];
var filter = {};
filter.name = oldFilter.name;
filter.operator = oldFilter.operator;
filter.values = oldFilter.values;
filter.join = oldFilter.join;
if (typeof(oldFilter.formula) !== 'undefined'){
filter.formula = oldFilter.formula;
}
newFilters.push(SEARCHMODULE.createFilter(filter));
}
searchObj.filters = newFilters;
searchObj.save();
}
注意:您需要调整代码以适用于摘要过滤器。
所以我花了几周时间与 NetSuite 代表来回交流,他们已经确认 search.save()
存在一个错误,导致此功能无法正常工作。
他们现在已经提交了一个缺陷。仅供感兴趣的其他人参考。