如何更新刚刚创建的交易的自定义列字段

问题描述 投票:0回答:2

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

货品配送记录中有一个自定义列字段 custcol_sp_itf_cost,数据类型为货币。该字段已选中存储值。

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

(为了简洁起见,我在这里删除了日志记录代码。)

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
        });
    }
}
netsuite suitescript2.0
2个回答
2
投票

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

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

第二个选项不是推荐的方法,因为重新加载记录并再次保存比仅更新

beforeSubmit
中的值并让 NetSuite 为您保存一次记录要慢得多。


0
投票

const beforeLoad = (scriptContext) => {

        var internalId = scriptContext.newRecord.id;
        if(internalId){
            record.submitFields({
                type: record.Type.VENDOR,
                id: internalId,
                values: {
                    custentity_miwa_vendor_code : internalId
                }
            });
            var objRecord = record.load({type:
            record.Type.VENDOR,id:
            internalId,isDynamic: true,}); 
            log.debug('load objRecord :',objRecord);
        }
        
    }
© www.soinside.com 2019 - 2024. All rights reserved.