如果 Netsuite 中为空则限制过滤器

问题描述 投票:0回答:1

编辑-不确定我是否清楚地表达了自己,所以想总结一下:

我使用变量作为已保存搜索过滤器的值,但是这些变量不一定总是有值,在这些情况下,我希望忽略该过滤器。

谢谢你

感谢 BK Knights 的精彩帖子,我正在使用客户端脚本将值从 suitelet 表单传递到另一个 suitelet

客户端脚本片段:

var output = url.resolveScript({
      scriptId: 'customscript1691',
      deploymentId: 'customdeploy1',
      params : {
                    customscript1691_theItem : itemId, 
                    customscript1691_manufacturer : manufacturer,
                    customscript1691_category : category,
                }

接收套件片段

var passedItem = request.parameters.customscript1691_theItem;
var passedManufacturer = request.parameters.customscript1691_manufacturer;
var passedCategory = request.parameters.customscript1691_category;

一切正常,我可以看到日志中的值。我遇到的问题是我需要使用这些值作为我正在接收套件上加载的另一个已保存搜索的过滤器。

无论我尝试什么配置的过滤器,它都不会起作用。

如果项目字段中没有项目,但我选择了制造商,则搜索将返回空白,因为它正在寻找空白项目。

如何配置它,以便如果传递的字段中没有任何内容,则过滤器无效,并且仅使用包含内容的过滤器?

我在下面尝试过的一些代码:

               search.createFilter({
                    name:'name',
                    operator: search.Operator.ANYOF,
                    values:[checkedpassedItem]
                }),
                search.createFilter({
                    name:'custitem_pro_manf',
                    operator: search.Operator.IS,
                    values:[checkedpassedManufacturer]
                }),
                
                search.createFilter({
                    name:'inventorylocation',
                    operator: search.Operator.IS,
                    values:[14]
                }),

我尝试对传递的字段执行 IF 检查,如果它们为空,则不输入任何内容,但这也不会返回任何内容。

非常感谢任何帮助。

谢谢你

javascript netsuite suitescript
1个回答
1
投票

首先创建搜索,无需使用与您传递的参数相匹配的过滤器。

var theSearch = search.create({
    type: {searchType},
    columns: [
        {columm1},
        {column2},
        {etc}
    ]
});

然后根据相应参数中的值或缺少值,有条件地为参数创建过滤器。

var itemFilter;
if (passedItem) {
    itemFilter = search.createFilter({
        name:'name',
        operator: search.Operator.ANYOF,
        values:[checkedpassedItem]
    });
} else {
    itemFilter = search.createFilter({
        name:'name',
        operator: search.Operator.ANY
    });
}

然后将过滤器添加到您的搜索中。

theSearch.filters.push(itemFilter);

您还可以采取另一种方法,仅在存在值时创建并添加过滤器。 (使用带有

ANY
运算符的过滤器和不使用过滤器的效果应该是相同的,但是您可能使用的搜索在初始搜索定义中包含“默认”过滤器,或者从加载的现有搜索您的帐户,在这种情况下,您需要考虑是否在脚本中覆盖它)。

if (passedItem) {
    theSearch.filters.push(
        search.createFilter({
            name:'name',
            operator: search.Operator.ANYOF,
            values:[checkedpassedItem]
        })
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.