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

NetSuite定时脚本创建Invoice记录失败,无记录生成求助

问题分析与解决方案

核心问题是你创建了发票记录对象,但从未调用保存方法,所以记录只停留在内存中,没有写入NetSuite数据库,自然不会生成实际交易记录;tranid显示'To be generated'是因为记录还未被持久化,系统还未分配正式的交易编号。

修改后的完整代码

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
*/

define(['N/runtime', 'N/record'], function(runtime, record) {
    return {
        execute: function(context) {
          var objRecord = record.create({
              type: record.Type.INVOICE, 
              isDynamic: true,
              defaultValues: {
                  entity: 3413
              }
          });
          
          objRecord.setValue({
              fieldId: 'location',
              value: 1
          });
          
          objRecord.selectNewLine({
              sublistId: 'item'
          });
          objRecord.setCurrentSublistValue({
              sublistId: 'item',
              fieldId: 'item',
              value: 190
          });
          objRecord.setCurrentSublistValue({
              sublistId: 'item',
              fieldId: 'quantity',
              value: 2
          });
          objRecord.setCurrentSublistValue({
              sublistId: 'item',
              fieldId: 'rate',
              value: 2
          });
          
          // 提交保存记录,这是关键步骤
          var recordId = objRecord.save({
              enableSourcing: true,
              ignoreMandatoryFields: false
          });
          
          // 保存后再获取交易编号
          var savedRecord = record.load({
              type: record.Type.INVOICE,
              id: recordId
          });
          var documentNum = savedRecord.getValue({
              fieldId: 'tranid'
          });
          
          log.debug({
              title: 'New Invoice Created', 
              details: 'Record ID: ' + recordId + ', Transaction Number: ' + documentNum
          });
        }
    };
});

关键说明

  • 必须调用save()方法:record.create()仅在内存中初始化记录对象,只有执行save()才会将记录写入NetSuite系统,生成实际交易记录。
  • tranid的获取时机:交易编号由系统在记录保存后生成,因此需要先保存记录,再通过加载已保存的记录来获取tranid,而非保存前读取。
  • save()方法会返回新记录的内部ID,可通过该ID加载记录获取更多字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:02:19