Javascript 如何在没有触发器的情况下初始化记录;validateline“;SuiteScript中的函数?

Javascript 如何在没有触发器的情况下初始化记录;validateline“;SuiteScript中的函数?,javascript,netsuite,suitescript2.0,clientscript,Javascript,Netsuite,Suitescript2.0,Clientscript,NetSuite的发票记录中有2个字段 一个是PounditCost字段,另一个是poTotalCost字段 poTotalCost的值等于磅成本乘以数量 (公式:poTotalCost=磅成本x数量) 创建记录后,脚本将调用pageInit,找到相应的字段并将其填充到发票记录中 但是,脚本不仅触发pageInit函数,还触发validateLine函数 如何在创建记录时只触发pageInit而不触发validate函数 代码如下: /** *@NApiVersion 2.x *@NScri

NetSuite的发票记录中有2个字段

一个是PounditCost字段,另一个是poTotalCost字段

poTotalCost的值等于磅成本乘以数量

(公式:poTotalCost=磅成本x数量)

创建记录后,脚本将调用pageInit,找到相应的字段并将其填充到发票记录中

但是,脚本不仅触发pageInit函数,还触发validateLine函数

如何在创建记录时只触发pageInit而不触发validate函数

代码如下:

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(['N/currentRecord', 'N/record', 'N/search'],
    function (currentRecord, record, search) {

        function pageInit(context) {
            console.log('inside pageinit function');

            var rec = context.currentRecord;
            var createdFromID = rec.getValue({
                fieldId: 'createdfrom'
            });
            var so_record = record.load({
                type: record.Type.SALES_ORDER,
                id: createdFromID
                // isDynamic: true
            });

            var inv_lines = rec.getLineCount({
                sublistId: 'item'
            });

            for (var i = 0; i < inv_lines; i++) {
                var soLineID = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'so_line_id_in_Inv',
                    line: i
                });

                // Find the index of line whose 'custcol_so_line_id' field is soLineIDINV
                var soLineNumber = so_record.findSublistLineWithValue({
                    sublistId: 'item',
                    fieldId: 'so_line_id_in_SO',
                    value: soLineID
                });

                var poUnitCost = so_record.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_SO',
                    line: soLineNumber
                });

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_Inv',
                    value: poUnitCost,
                    line: i
                    // fireSlavingSync: true
                });

                var lineQty = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                    line: i
                });

                var poTotalCost = lineQty * poUnitCost;

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'total_cost_in_Inv',
                    value: poTotalCost,
                    line: i
                    // fireSlavingSync: true
                });
            }
            return true;
        }

        function validateLine(context) {
            console.log('inside validateLine function');

            var rec = context.currentRecord;
            var sublistName = context.sublistId;

            if (sublistName == 'item') {
                var poUnitCost = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_Inv',
                });

                var lineQty = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                });

                var poTotalCost = lineQty * poUnitCost;

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'total_cost_in_Inv',
                    value: poTotalCost
                    // fireSlavingSync: true
                });
            }
            return true;
        }

        return {
            pageInit: pageInit,
            validateLine: validateLine
        }
    });
/**
*@NApiVersion 2.x
*@NScriptType客户端脚本
*/
定义(['N/currentRecord','N/record','N/search'],
功能(当前记录、记录、搜索){
函数pageInit(上下文){
log('insidepageinit函数');
var rec=context.currentRecord;
var createdFromID=rec.getValue({
fieldId:“createdfrom”
});
var so_record=record.load({
类型:record.type.SALES\u订单,
id:createdFromID
//isDynamic:对
});
var inv_lines=rec.getLineCount({
子列表:“项”
});
对于(变量i=0;i
您无法停止子列表事件的触发。当提交一行时,
validateLine
将触发。您需要调整
validateLine
处理程序,以便在不希望它执行其正常逻辑的任何情况下返回
true

您无法停止子列表事件的触发。当行已提交,
validateLine
将启动。您需要调整
validateLine
处理程序,以便在不希望它执行其正常逻辑的任何情况下返回
true

嗨,erictgrubaugh,我添加了“返回”“对于每个入口点函数,您能否建议如何避免在执行pageInit函数时触发validateLine函数?”?谢谢您无法避免触发它,所以您只需要确保您的处理程序足够聪明,在不需要的情况下不会执行任何操作。最后,我声明了一个全局标志,以告知进程当前是否在pageInit函数中。当进程运行到validateLine函数中时,如果该标志为true,则validate函数将被禁用。嗨,ErictGrabaugh,我为每个入口点函数添加了“return”语句,您能否建议如何避免在执行pageInit函数时触发validateLine函数?谢谢您无法避免触发它,所以您只需要确保您的处理程序足够聪明,在不需要的情况下不会执行任何操作。最后,我声明了一个全局标志,以告知进程当前是否在pageInit函数中。当进程运行到validateLine函数中时,如果该标志为true,则将禁用validate函数。