我有一个 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
});
}
}
在
afterSubmit
事件中运行代码时,记录已提交到数据库,因此任何直接更新 newRecord
的尝试都将不起作用。 您有两个选择:
beforeSubmit
事件,在这种情况下,setSublistValue
将像您尝试做的那样工作。 这将是推荐的方法。record.load()
加载新创建的记录,然后调用 setSublistValue()
,然后调用 record.save()
。 您可以在 context.newRecord
事件中从 afterSubmit
获取记录 id。第二个选项不是推荐的方法,因为重新加载记录并再次保存比仅更新
beforeSubmit
中的值并让 NetSuite 为您保存一次记录要慢得多。
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);
}
}