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

如何在SuiteScript 2.1中获取NetSuite字段的引用记录类型?

在SuiteScript 2.1中获取字段的引用记录类型

要获取NetSuite记录字段对应的引用记录类型(比如销售订单entity字段对应的entity类型),可以通过N/metadata模块实现,这是最直接的动态获取方式,无需依赖具体记录ID。

核心方法:使用N/metadata模块

该模块允许你加载记录类型的元数据,从中提取字段的引用类型信息。需要注意的是,脚本需要具备SuiteScript Metadata Permission权限才能使用此模块。

示例代码

/**
 * @NApiVersion 2.1
 */
define(['N/metadata', 'N/record'], (metadata, record) => {
    // 获取指定记录类型下某个字段的引用记录类型
    function getFieldReferenceType(targetRecordType, fieldId) {
        // 加载目标记录类型的元数据
        const recordMeta = metadata.load({
            type: metadata.Type.RECORD,
            id: targetRecordType
        });
        
        // 查找目标字段的定义
        const targetField = recordMeta.fields.find(field => field.id === fieldId);
        if (!targetField) return null;
        
        // 根据字段类型返回对应的引用记录类型
        switch(targetField.type) {
            case metadata.FieldType.SELECT:
                return targetField.selectRecordType;
            case metadata.FieldType.MULTISELECT:
                return targetField.multiSelectRecordType;
            default:
                // 非引用类型字段返回null
                return null;
        }
    }

    // 调用示例:获取销售订单entity字段的引用类型
    const refType = getFieldReferenceType(record.Type.SALES_ORDER, 'entity');
    log.debug('引用记录类型', refType); // 输出:entity
});

在用户事件脚本中动态使用

如果是在用户事件脚本中,可直接从上下文获取当前记录类型,无需硬编码:

/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */
define(['N/metadata'], (metadata) => {
    const beforeSubmit = (context) => {
        const currentRecord = context.newRecord;
        const targetFieldId = 'entity';
        
        // 获取当前记录的类型
        const recordType = currentRecord.type;
        
        const recordMeta = metadata.load({
            type: metadata.Type.RECORD,
            id: recordType
        });
        
        const targetField = recordMeta.fields.find(field => field.id === targetFieldId);
        if (targetField?.type === metadata.FieldType.SELECT) {
            const refRecordType = targetField.selectRecordType;
            // 后续可使用该类型执行查询、加载记录等操作
            log.debug('当前字段引用的记录类型', refRecordType);
        }
    };

    return { beforeSubmit };
});

注意事项

  • 对于标准字段(如entity),返回的是父记录类型(如entity);如果是自定义字段直接引用子类型(如customer),则返回具体的子类型ID。
  • 非引用类型字段(如string、integer)会返回null,需提前做类型判断。
  • 确保脚本已分配SuiteScript Metadata Permission权限,否则会抛出权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:06:16