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 // 暴露给按钮调用的函数名 }; });
二、脚本与表单绑定步骤
- 将上述脚本保存为客户端脚本,部署时选择对应的自定义表单;
- 在自定义表单的按钮设置中,添加一个自定义按钮,把按钮的脚本函数名设置为
fetchTargetCustomRecords(即代码中暴露的函数名)。
三、关键注意事项
- 所有字段ID(表单表头字段、自定义记录关联字段)必须替换成你系统中的实际ID,不要直接用示例值;
- 如果需要把查询结果填充到表单其他字段,可替换弹窗逻辑为
currentRecord.get().setFieldValue({ fieldId: 'xxx', value: 'xxx' }); - 若数据量较大,建议使用分页搜索(
runPaged())避免性能问题; - 务必给脚本配置正确的权限,确保能访问目标自定义记录和相关字段。
要是你现有代码有具体报错或细节问题,可以补充说明,我再帮你细化调整~
内容的提问来源于stack exchange,提问作者Jorryt Nijholt
相关产品推荐
相关产品推荐

