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

如何在Suitelet脚本中创建规范的自定义筛选字段?

在Suitelet中创建规范的自定义筛选字段组及字段

要在Suitelet中实现符合NetSuite标准的筛选字段组,不要用普通的select类型字段,应该使用Suitelet表单的FilterGroup和Filter对象来创建,这类组件是专门为数据筛选设计的,能提供和原生筛选一致的交互效果(比如操作符选择、动态选项联动等)。

实现步骤与代码示例

以下是完整的Suitelet脚本示例,演示如何创建筛选组并添加不同类型的筛选字段:

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/ui/serverWidget'], function(serverWidget) {
    function onRequest(context) {
        if (context.request.method === 'GET') {
            // 创建Suitelet表单
            const form = serverWidget.createForm({
                title: '自定义筛选示例'
            });

            // 1. 创建筛选字段组
            const filterGroup = form.addFilterGroup({
                id: 'custpage_filter_group',
                label: '数据筛选条件'
            });

            // 2. 向筛选组添加各类筛选字段
            // 文本筛选(支持包含、等于等操作符)
            filterGroup.addFilter({
                id: 'custpage_filter_text',
                label: '客户名称',
                type: serverWidget.FieldType.TEXT,
                operator: serverWidget.Operator.CONTAINS // 默认操作符
            });

            // 日期范围筛选(自动提供开始/结束日期输入框)
            filterGroup.addFilter({
                id: 'custpage_filter_date',
                label: '交易日期',
                type: serverWidget.FieldType.DATE,
                operator: serverWidget.Operator.WITHIN
            });

            // 列表筛选(关联自定义记录或系统记录,自动加载选项)
            filterGroup.addFilter({
                id: 'custpage_filter_status',
                label: '订单状态',
                type: serverWidget.FieldType.SELECT,
                source: 'salesorderstatus', // 系统状态记录类型
                operator: serverWidget.Operator.EQUALTO
            });

            // 添加提交按钮
            form.addSubmitButton({
                label: '应用筛选'
            });

            // 输出表单
            context.response.writePage(form);
        } else {
            // 处理筛选提交后的逻辑(获取筛选值)
            const requestParams = context.request.parameters;
            const customerName = requestParams.custpage_filter_text;
            const dateRange = requestParams.custpage_filter_date;
            const orderStatus = requestParams.custpage_filter_status;

            // 这里可以结合Saved Search或自定义逻辑处理筛选后的数据
            context.response.write(`筛选条件:客户名称=${customerName},交易日期=${dateRange},订单状态=${orderStatus}`);
        }
    }

    return {
        onRequest: onRequest
    };
});

关键说明

  • 筛选组与普通字段的区别:FilterGroup是专门的筛选容器,里面的Filter字段会自动继承NetSuite原生筛选的交互(比如点击字段旁的操作符下拉选择匹配规则),而普通select字段只是单一的下拉输入,没有筛选特有的操作逻辑。
  • 操作符设置:通过operator参数可以指定默认的匹配规则,比如EQUALTO(等于)、CONTAINS(包含)、WITHIN(范围)等,完整的操作符列表可参考NetSuite的serverWidget.Operator枚举。
  • 联动数据源:如果筛选字段需要关联系统或自定义记录的选项,设置source为对应的记录ID即可,无需手动添加选项,会自动同步记录数据。
  • 获取筛选值:在POST请求中,通过context.request.parameters可以获取每个筛选字段的提交值,后续可用于过滤Saved Search结果或自定义数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:09