NetSuite创建交易时调用getText报错,编辑时正常问题咨询
NetSuite 交易记录创建时getText调用报错问题解析
问题原因
不是创建记录时完全不能用getText,而是针对tranid这类系统自动生成的交易编号字段,在CREATE事件的afterSubmit阶段,NetSuite还未完成该字段文本表示的初始化流程:
- 创建交易时,
tranid是系统在保存后期才生成的,此时记录虽已持久化,但字段的文本元数据尚未同步到当前newRecord对象中,仅原始值(raw value)已就绪,所以getValue能正常获取,调用getText会触发API使用错误。 - 编辑记录时,记录已完全存在于系统中,所有字段的文本值与原始值都已完成关联,因此
getText可以正常调用。
解决方案
针对tranid这类字段,无需区分文本与原始值(两者结果一致),可以统一使用getValue获取,避免场景差异导致的报错;如果确实需要针对不同场景处理,可分支判断:
if (scriptContext.type === scriptContext.UserEventType.CREATE || scriptContext.type === scriptContext.UserEventType.EDIT) { var bill = scriptContext.newRecord; var refno; // 创建场景用getValue,编辑场景可按需选择getText或getValue if (scriptContext.type === scriptContext.UserEventType.CREATE) { refno = bill.getValue({ fieldId: 'tranid' }); } else { refno = bill.getText({ fieldId: 'tranid' }); } }
补充说明
对于自定义字段或手动输入的字段,创建时getText通常可以正常使用,该问题仅针对部分系统自动生成、且文本元数据初始化滞后的字段(如tranid、部分系统自动填充的关联字段)。
内容的提问来源于stack exchange,提问作者accountdev253
相关产品推荐
相关产品推荐

