如何在刚创建的事务上更新自定义列字段

时间:2019-05-13 12:11:25

标签: netsuite suitescript2.0

我有一个SS2用户事件脚本,该事件在提交后会在创建商品实现记录时继续运行。

在项目履行记录上有一个自定义列字段custcol_sp_itf_cost,数据类型为Currency。该字段已选中“储值”。

以下代码生成日志记录,以显示它贯穿各行,但未设置字段的值。有人知道为什么吗?

(为简便起见,我在此处删除了日志记录代码。)

function afterSubmit(context)
{
    var lineCount = context.newRecord.getLineCount({ sublistId: 'item' });

    for (var i = 0; i < lineCount; i++) {

        context.newRecord.setSublistValue({
            sublistId: 'item',
            fieldId: 'custcol_sp_itf_cost',
            line: i,
            value: 1234
        });
    }
}

1 个答案:

答案 0 :(得分:2)

afterSubmit事件中运行代码时,该记录已提交到数据库,因此直接更新newRecord的任何尝试均将无效。您有两种选择:

  1. 将代码移至beforeSubmit事件,在这种情况下,setSublistValue会像您尝试的那样工作。这将是推荐的方法。
  2. 使用record.load()加载新创建的记录,然后调用setSublistValue(),然后调用record.save()。您可以在context.newRecord事件中从afterSubmit获取记录ID。

不建议使用第二种方法,因为重新加载记录并再次保存它比仅更新beforeSubmit中的值并让NetSuite一次为您保存记录要慢得多。