You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SuiteScript 2.0的createFilter方法中添加带括号的过滤条件

SuiteScript 2.0 使用createFilter实现带括号分组过滤条件的方案

实现原理

在SuiteScript 2.0中,带括号的过滤条件本质是逻辑分组优先级,通过嵌套数组的结构即可实现,不需要额外的特殊方法,search.createFilter可配合分组逻辑共同使用。

具体实现步骤

以下用实现(类型 = 销售订单 AND 状态 = 已批准) OR (类型 = 发票 AND 状态 = 已付款)的带括号逻辑为例:

  • 步骤1:定义每个括号内的分组过滤条件
require(['N/search'], function(search) {
  // 第一组括号内的条件
  const group1 = [
    search.createFilter({
      name: 'type',
      operator: search.Operator.ANYOF,
      values: ['SalesOrd']
    }),
    'AND',
    search.createFilter({
      name: 'status',
      operator: search.Operator.ANYOF,
      values: ['SalesOrd:A']
    })
  ];

  // 第二组括号内的条件
  const group2 = [
    search.createFilter({
      name: 'type',
      operator: search.Operator.ANYOF,
      values: ['CustInvc']
    }),
    'AND',
    search.createFilter({
      name: 'status',
      operator: search.Operator.ANYOF,
      values: ['CustInvc:B']
    })
  ];
  • 步骤2:拼接分组条件传入搜索
// 最终过滤条件等价于 (group1) OR (group2),数组嵌套结构会被自动识别为括号优先级
  const finalFilters = [group1, 'OR', group2];

  // 创建搜索时直接传入即可生效
  const transactionSearch = search.create({
    type: search.Type.TRANSACTION,
    filters: finalFilters,
    columns: ['tranid', 'trandate', 'amount']
  });
});

注意事项

  • 支持多层嵌套实现多层级括号逻辑,例如((A AND B) OR (C AND D)) AND E只要对应做多层数组嵌套即可
  • 逻辑运算符AND/OR需大写,放置在两个条件/分组之间
  • 不需要额外添加括号标识,数组的嵌套结构会被NetSuite自动解析为带优先级的分组过滤

内容的提问来源于stack exchange,提问作者Kory Conley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:06:02