首页 > 解决方案 > 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/inventoryDe​​tails.js:45)"],"notifyOff":false},"id": "","notifyOff":false,"userFacing":false}"

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

标签: javascriptnetsuitesuitescript2.0

解决方案


您可能需要使用“getSublistValue”而不是“getSublistText”。后者可能不适用于所有值类型。


推荐阅读