繁体   English   中英

Netsuite搜索过滤器以获取项目列表

[英]Netsuite search filter for list of items

我正在尝试在搜索条件中添加过滤器。

我面临的问题是,当我使用内部标识符和int 1111时,它工作正常。 但是,如果我用字符串替换其他列,则无法正常工作。 它在客户搜索行中引发错误。 有人可以建议吗?

        var custSearch = search.create({
        type : record.Type.CUSTOMER,
        columns : searchColumn,           
        filters: [
                 'email', 'ANYOF', ["abanks@acera.com","3m@3m.com"]]
                 //'internalid', 'ANYOF', ["1397","1251"]] // Works fine

        });
        custSearch.run().each(function(result) { // throw errors
            log.debug("Found !",result);
            return true;
        });

电子邮件字段与ANYOF运算符不兼容。 请尝试以下任一方法:

  • 任何
  • 是空的
  • 以。。开始
  • 包含
  • 不是
  • 脾气暴躁
  • 不开始
  • 不含

如果您需要按多封电子邮件进行过滤,则可以使用表达式添加“ OR”。 建议您使用Chrome扩展程序Netsuite:“搜索导出”,简化操作。

function stringFieldAnyOf(fieldId, listOfValues) { var result = []; if (listOfValues.length > 0) { for (var i = 0; i < listOfValues.length; i++) { result.push([fieldId, 'startswith', listOfValues[i]]); result.push('or'); } result.pop(); // remove the last 'or' } return result; } // usage: (two more filters added just to illustrate how to combine with other filters) var custSearch = search.create({ type: record.Type.CUSTOMER, columns: searchColumn, filters: [ ['companyname', 'startswith', 'A'], 'and', stringFieldAnyOf('email', ['abanks@acera.com', '3m@3m.com']), 'and', ['companyname', 'contains', 'b'] ] });

您正在使用的options.filters可能是:

  • 一个search.Filter对象
  • search.Filter对象的数组
  • 搜索过滤器表达式
  • 搜索过滤器表达式的数组

在您的示例中,您将创建2个过滤器对象(filterscust1和filterscust2)。 之后,您尝试创建一个搜索过滤器表达式,将两个过滤器对象与内部的“或”字符串组合在一起。 但这是不正确的:

搜索过滤器表达式是一个包含零个或多个元素的JavaScript 字符串数组 每个元素都是以下之一:

  • 运算符-“ NOT”,“ AND”或“ OR”
  • 过滤条件
  • 嵌套搜索过滤器表达式

因此,等效代码应为:

filterscust1 = ['email', 'contains', '3m@3m.com'];

filterscust2 = ['email', 'contains', 'abanks@acera.com'];

var filtersExp = [ filterscust1, 'or', filterscust2 ];

var custSearch = search.create({
  type: record.Type.CUSTOMER,
  columns: searchColumn,
  filters: [filtersExp]

});

或直接:

var custSearch = search.create({
  type: record.Type.CUSTOMER,
  columns: searchColumn,
  filters: [ ['email', 'contains', '3m@3m.com'], 'or', 
             ['email', 'contains', 'abanks@acera.com']
           ]

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM