如何使用SuiteScript 2获取NetSuite记录类型的字段ID与名称?
使用SuiteScript 2获取记录类型的所有字段ID与名称
完全可以通过SuiteScript 2.x实现这个需求,下面针对你提到的自定义记录保存后获取关联客户记录的所有字段ID和名称场景,提供两种实用方案:
方案1:基于N/record模块(需加载具体记录)
这种方式需要先加载目标客户记录,通过getFields()获取所有字段ID,再逐个调用getLabel()获取字段名称,适合需要结合具体记录数据的场景。
示例代码(自定义记录的afterSubmit脚本):
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/record'], function(record) { function afterSubmit(context) { if (context.type !== context.UserEventType.CREATE && context.type !== context.UserEventType.EDIT) { return; } // 获取当前自定义记录 const customRec = context.newRecord; // 替换为你的自定义客户字段ID const customerId = customRec.getValue({ fieldId: 'custrecord_customer_link' }); if (!customerId) return; // 加载客户记录 const customerRec = record.load({ type: record.Type.CUSTOMER, id: customerId, isDynamic: false }); // 获取所有字段ID const fieldIds = customerRec.getFields(); const fieldMap = []; // 循环获取每个字段的名称并整理 fieldIds.forEach(fieldId => { const fieldLabel = customerRec.getLabel({ fieldId: fieldId }); fieldMap.push({ fieldId: fieldId, fieldName: fieldLabel }); }); // 输出结果(可根据需求存入日志、自定义记录或其他操作) log.debug('客户字段列表', fieldMap); } return { afterSubmit: afterSubmit }; });
方案2:基于N/metadata模块(无需加载具体记录)
如果只需要获取客户记录类型本身的所有字段元数据(不需要具体记录的数据),可以使用N/metadata模块直接获取记录类型的字段定义,效率更高。
示例代码:
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/metadata', 'N/log'], function(metadata, log) { function afterSubmit(context) { if (context.type !== context.UserEventType.CREATE && context.type !== context.UserEventType.EDIT) { return; } // 获取客户记录类型的元数据 const customerMetadata = metadata.get({ type: metadata.Type.CUSTOMER }); const fieldMap = []; // 遍历所有字段定义 customerMetadata.fields.forEach(field => { fieldMap.push({ fieldId: field.id, fieldName: field.label }); }); // 输出结果 log.debug('客户记录类型所有字段', fieldMap); } return { afterSubmit: afterSubmit }; });
注意事项
- 替换代码中的自定义字段ID(
custrecord_customer_link)为你实际使用的字段ID; - 部分系统字段可能没有显示名称,
getLabel()会返回字段ID本身; - 权限控制:确保脚本的执行角色拥有客户记录的查看权限,以及
N/metadata模块的使用权限(如需方案2)。
内容的提问来源于stack exchange,提问作者Ashish Patil
相关产品推荐
相关产品推荐

