如何通过SuiteScript在NetSuite中创建自定义record type?
问题解答
是否可以通过SuiteScript创建自定义记录类型
可以直接通过SuiteScript实现自定义记录类型的创建,无需手动在UI端操作。你提到的UI路径自定义 > 列表、记录和字段 > 记录类型 > 新建类型的所有操作都可以通过代码实现。
实现方案
前置要求
- 支持SuiteScript 2.0/2.1版本,需使用
N/record服务器端模块 - 脚本部署的角色必须拥有「自定义记录类型」的创建、编辑权限
- 自定义记录的脚本ID必须以
customrecord_为前缀,且全局唯一
示例代码(SuiteScript 2.1)
/** * @NApiVersion 2.1 * @NScriptType ScheduledScript */ define(['N/record'], (record) => { const execute = (context) => { // 初始化自定义记录类型实例 const customRecord = record.create({ type: record.Type.CUSTOM_RECORD_TYPE, isDynamic: true }); // 配置自定义记录基础属性 customRecord.setValue({ fieldId: 'name', value: '我的自定义记录' }); customRecord.setValue({ fieldId: 'scriptid', value: 'customrecord_my_test_record' }); customRecord.setValue({ fieldId: 'isinactive', value: false }); customRecord.setValue({ fieldId: 'showname', value: true }); customRecord.setValue({ fieldId: 'namefieldlabel', value: '记录名称' }); customRecord.setValue({ fieldId: 'includeinsearch', value: true }); customRecord.setValue({ fieldId: 'allowattachments', value: true }); // 可选:添加自定义字段到该记录类型 customRecord.selectNewLine({ sublistId: 'customfields' }); customRecord.setCurrentSublistValue({ sublistId: 'customfields', fieldId: 'label', value: '关联客户' }); customRecord.setCurrentSublistValue({ sublistId: 'customfields', fieldId: 'type', value: 'SELECT' }); customRecord.setCurrentSublistValue({ sublistId: 'customfields', fieldId: 'scriptid', value: 'custrecord_my_test_customer' }); customRecord.setCurrentSublistValue({ sublistId: 'customfields', fieldId: 'recordtype', value: 'customer' }); customRecord.commitLine({ sublistId: 'customfields' }); // 保存自定义记录类型 const newRecordId = customRecord.save(); log.debug('自定义记录创建成功', '记录ID:' + newRecordId); }; return { execute }; });
注意事项
- 仅支持服务器端脚本(计划脚本、RESTlet、用户事件脚本、Map/Reduce脚本均可),客户端脚本无法执行该操作
- 重复的
scriptid会导致创建失败,创建前可先搜索确认目标ID是否已被占用 - 可通过修改上述代码中的字段值,自定义记录的权限配置、搜索可见性、子列表关联等属性,和UI端配置效果完全一致
内容的提问来源于stack exchange,提问作者spencer741
相关产品推荐
相关产品推荐

