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() 存在一个错误,导致此功能无法正常工作。

他们现在已经提交了一个缺陷。仅供感兴趣的其他人参考。