新建Sales Order时如何获取自动生成的SO编号?
NetSuite销售订单编号获取问题解决方法
核心原因
NetSuite中销售订单的自动编号是在记录提交完成后由系统异步生成的,标准After Submit UserEvent脚本执行时,系统还未完成编号写入,直接获取字段值会返回null。
可行解决方案
1. After Submit脚本中重新加载记录
修改UserEvent脚本,在After Submit阶段重新加载刚创建的销售订单记录,再读取SO编号:
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/record'], function(record) { function afterSubmit(context) { if (context.type === context.UserEventType.CREATE) { // 重新加载目标销售订单 var loadedSO = record.load({ type: record.Type.SALES_ORDER, id: context.newRecord.id, isDynamic: false }); // 获取SO编号字段值 var soNumber = loadedSO.getValue({fieldId: 'tranid'}); // 此处添加编号后续处理逻辑(如写入关联记录、日志输出等) log.debug('获取到的SO编号', soNumber); } } return { afterSubmit: afterSubmit }; });
2. 用计划脚本延迟执行
若重新加载仍无法获取,可通过UserEvent触发计划脚本,给系统足够时间生成编号后再读取:
- 第一步:编写计划脚本
/** * @NApiVersion 2.x * @NScriptType ScheduledScript */ define(['N/record', 'N/log'], function(record, log) { function execute(context) { var soId = context.script.getParameter({name: 'custscript_so_id'}); if (soId) { var soRecord = record.load({ type: record.Type.SALES_ORDER, id: soId }); var soNumber = soRecord.getValue({fieldId: 'tranid'}); log.debug('延迟获取的SO编号', soNumber); // 后续业务逻辑处理 } } return { execute: execute }; });
- 第二步:在UserEvent脚本中触发计划脚本
/** * @NApiVersion 2.x * @NScriptType UserEventScript */ define(['N/task', 'N/record'], function(task, record) { function afterSubmit(context) { if (context.type === context.UserEventType.CREATE) { var scheduledTask = task.create({ taskType: task.TaskType.SCHEDULED_SCRIPT, scriptId: 'customscript_your_scheduled_script_id', // 替换为你的计划脚本ID deploymentId: 'customdeploy_your_deployment_id', // 替换为你的部署ID params: { custscript_so_id: context.newRecord.id } }); var taskId = scheduledTask.submit(); log.debug('触发的计划脚本ID', taskId); } } return { afterSubmit: afterSubmit }; });
3. 工作流替代脚本方案
若无需编写代码,可创建NetSuite工作流:
- 触发条件:销售订单创建完成
- 添加「等待」动作,设置10秒左右等待时长,给系统留足编号生成时间
- 等待完成后添加动作,读取SO编号并执行后续业务操作
注意事项
- 确保脚本拥有销售订单
tranid字段的读取权限 - 沙盒环境测试时,确认自动编号规则与生产环境一致
- 计划脚本触发存在一定延迟,适合非实时需求的业务场景
内容的提问来源于stack exchange,提问作者Chedder183
相关产品推荐
相关产品推荐

