首页 > 解决方案 > 如何更新刚刚创建的交易的自定义列字段

问题描述

我有一个 SS2 用户事件脚本,它在创建项目履行记录时在提交后运行。

Item Fulfillment 记录上有一个自定义列字段 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
        });
    }
}

标签: netsuitesuitescript2.0

解决方案


afterSubmit事件中运行代码时,记录已经提交到数据库,因此任何newRecord直接更新的尝试都将不起作用。你有两个选择:

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

第二个选项不是推荐的方法,因为重新加载记录并再次保存比仅更新您的值beforeSubmit并让 NetSuite 为您保存一次记录要慢得多。


推荐阅读