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

SuiteScript 2.0开发求助:根据表头字段返回自定义记录值

解决SuiteScript 2.0自定义表单查询自定义记录的方案

你想用自定义按钮触发客户端脚本的思路完全可行,核心要做好表头字段值获取和自定义记录精准查询这两步,我给你拆解成具体实现步骤,附可直接参考的代码示例:

一、客户端脚本核心逻辑

写一个客户端脚本绑定到自定义表单,实现两个关键功能:从表头取三个字段值,再根据值查询对应自定义记录并处理结果(比如弹窗展示或填充到表单字段)。

示例代码

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/search', 'N/ui/dialog', 'N/currentRecord'], function(search, dialog, currentRecord) {
    // 自定义按钮触发的查询函数
    function fetchTargetCustomRecords() {
        // 1. 获取表头三个字段的值(注意替换成你实际的字段ID)
        var locationId = currentRecord.get().getFieldValue({ fieldId: 'location' });
        var weekNumber = currentRecord.get().getFieldValue({ fieldId: 'custpage_week_number' });
        var subsidiaryId = currentRecord.get().getFieldValue({ fieldId: 'subsidiary' });

        // 校验必填字段是否完整
        if (!locationId || !weekNumber || !subsidiaryId) {
            dialog.alert({
                title: '提示',
                message: '请先填写完整location、week number和subsidiary三个字段!'
            });
            return;
        }

        // 2. 创建自定义记录搜索器(替换成你的自定义记录类型和对应字段ID)
        var customRecordSearch = search.create({
            type: 'customrecord_your_target_record',
            filters: [
                ['custrecord_link_location', 'anyof', locationId],
                'AND',
                ['custrecord_link_weeknum', 'equalto', weekNumber],
                'AND',
                ['custrecord_link_subsidiary', 'anyof', subsidiaryId]
            ],
            columns: [
                search.createColumn({ name: 'name' }),
                search.createColumn({ name: 'custrecord_key_field1' })
            ]
        });

        // 执行搜索并处理结果
        var searchResults = customRecordSearch.run().getRange({ start: 0, end: 100 });
        if (searchResults.length === 0) {
            dialog.alert({
                title: '查询结果',
                message: '未找到匹配的自定义记录!'
            });
            return;
        }

        // 拼接结果信息(可改成填充表单字段等其他展示方式)
        var resultContent = '找到匹配记录:\n';
        searchResults.forEach(function(item, index) {
            var recordName = item.getValue({ name: 'name' });
            var fieldVal = item.getValue({ name: 'custrecord_key_field1' });
            resultContent += `${index+1}. 记录名称:${recordName} | 字段值:${fieldVal}\n`;
        });

        dialog.alert({
            title: '查询完成',
            message: resultContent
        });
    }

    // 页面初始化函数(可选,用于初始化表单状态)
    function pageInit(context) {
        // 可在这里设置字段默认值等操作
    }

    return {
        pageInit: pageInit,
        fetchTargetCustomRecords: fetchTargetCustomRecords // 暴露给按钮调用的函数名
    };
});

二、脚本与表单绑定步骤

  1. 将上述脚本保存为客户端脚本,部署时选择对应的自定义表单;
  2. 在自定义表单的按钮设置中,添加一个自定义按钮,把按钮的脚本函数名设置为fetchTargetCustomRecords(即代码中暴露的函数名)。

三、关键注意事项

  • 所有字段ID(表单表头字段、自定义记录关联字段)必须替换成你系统中的实际ID,不要直接用示例值;
  • 如果需要把查询结果填充到表单其他字段,可替换弹窗逻辑为currentRecord.get().setFieldValue({ fieldId: 'xxx', value: 'xxx' });
  • 若数据量较大,建议使用分页搜索(runPaged())避免性能问题;
  • 务必给脚本配置正确的权限,确保能访问目标自定义记录和相关字段。

要是你现有代码有具体报错或细节问题,可以补充说明,我再帮你细化调整~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:01:28