javascript - 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":["anonymous(N/serverRecordService)","beforeSubmit(/SuiteScripts/inventoryDetails.js:45)"],"notifyOff":false},"id": "","notifyOff":false,"userFacing":false}"
如何在创建模式下提交之前更新自定义字段“custcol_inv_full_det”?
解决方案
您可能需要使用“getSublistValue”而不是“getSublistText”。后者可能不适用于所有值类型。
推荐阅读
- ansible - 如何在 Ansible 自定义事实中以有效 JSON 格式创建动态键/值对列表?
- c# - 如何模拟没有默认构造函数的类
- dart - 如何在 Flutter 中请求 MaterialApp 之外的路由?
- python - 如何制作不规则地理数据的空间图
- python - 无法将“int”对象隐式转换为 str。Python 错误
- typescript - Typescript 示例中的错误
- c# - 在网格视图中显示静态超链接
- jquery - 序列化数组给了我空数组,如何解决?
- javascript - JS - 如何找到最深的一对括号的索引?
- java - 退出循环的多个字符串输入....没有数组