SuiteScript 2.0更新自定义行字段BeforeSubmit



我已经自定义了一个现成的脚本来获取Lot Expiration Date,它在旧记录的编辑模式下运行良好;但在创建模式下,它将引发一个错误这是代码:

/**
* @NApiVersion 2.0
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(['N/record'], function (record) {

function beforeSubmit(context) {
log.debug({details: "beforeSubmit: " + context.type});
var newRecord = context.newRecord;      
// Check how many lines exist in the ItemFulfillment - Item sublist.
var lines = newRecord.getLineCount({sublistId: 'item'});
log.debug({details: "lines: " + lines}); // here I am Reading the Sublist Item Lines to Check how many lines there.
if (lines > 0){
for (var x = 0; x < lines; x++){
var lotDetail = "";
var newIventoryDetails = newRecord.getSublistSubrecord({
sublistId: 'item',
fieldId: 'inventorydetail',
line: x
});
var ItemCode = newRecord.getSublistText({
sublistId: 'item',
fieldId: 'itemname',
line: x
});
log.debug({details: "Item Code:" + ItemCode + " Line " + x});
var newInvLines = newIventoryDetails.getLineCount({sublistId: 'inventoryassignment'});
log.debug({details: "Inventory Details Lines = " + newInvLines + " lines"});
if (newInvLines >0 ){
for(z=0; z< newInvLines; z++){
var lotNumber = newIventoryDetails.getSublistText({   // getSublistValue
sublistId: 'inventoryassignment',
fieldId: 'issueinventorynumber',
line: z
});
var lotQty = newIventoryDetails.getSublistText({   // getSublistValue
sublistId: 'inventoryassignment',
fieldId: 'quantity',
line: z
});
var lotExpDate = newIventoryDetails.getSublistText({   // getSublistValue
sublistId: 'inventoryassignment',
fieldId: 'expirationdate',
line: z
});
lotDetail = lotDetail + " lot #: " + lotNumber + " Qty: " + lotQty + " Exp. Date:" + lotExpDate + 'n';
}        
}
log.debug({details: lotDetail});
log.debug({Line: x});
newRecord.setSublistText({
sublistId: 'item',
fieldId: 'custcol_inv_full_det',
line: x,
text: lotDetail
});
}
}
}       

return {
beforeSubmit: beforeSubmit
};
});

我确信这个错误,因为我正在更新项目列表中的自定义字段,以将文本设置为完整的批次详细信息(批次号、数量和到期日期(,并且仍然是尚未保存或创建的主记录。

脚本日志中的错误消息

"API使用无效。必须使用getSublistValue返回使用setSublistValue设置的值。","userEvent":"beforesubmit","stackTrace":["匿名(N/serverRecordService(","beforesubmit(/SuiteScripts/inventoryDetails.js:45("],"notifyOff":false},"id":","notify Off":false,"userFaceing":false}">

如何在以创建模式提交之前更新自定义字段"custcol_inv_full_det"?

您可能需要使用"getSublistValue"而不是"getSublastText"。后者可能不适用于所有的值类型。

我以前遇到过类似的问题。尝试以动态模式加载记录。

var newRecord = record.load({
type: context.newRecord.type,
id: context.newRecord.id,
isDynamic:true
});

然后循环通过线路,现在可以使用getSublistText()

最新更新