繁体   English   中英

Map/reduce 脚本未正确执行(suitescript 2.0)

[英]Map/reduce script not executed correctly (suitescript 2.0)

我面临一个奇怪的问题,我的代码(特别是 record.save 操作)似乎没有被执行。 该代码位于suitescript 2.0 map/reduce 脚本的“reduce”阶段。

我不知道这可能是什么原因。 如下例所示,日志记录确实显示“是否已执行”,但下面的行似乎没有被执行。 日志记录未显示“标记为带有 ID 的订单的订单行:

//load the order
    var SOrecord = record.load({
        type: record.Type.SALES_ORDER,
        id: orderId,
        isDynamic: false
    });

     setLineValues(SOrecord, values, newShipmentId)

    log.debug('Is this executed?');
    
    //Save Order
    var recId = SOrecord.save({enableSourcing: false, ignoreMandatoryFields: true});
    
    log.debug('Order lines marked for order with ID: ', recId)
    
    return recId;

任何人都可以帮忙吗?

更新

//load the order
    var SOrecord = record.load({
        type: record.Type.SALES_ORDER,
        id: orderId,
        isDynamic: false
    });

    log.debug('Order Loaded! ', SOrecord);
    //Loop lines present in values array
    for(var i = 0; i < values.length; i++){
        //Generate Shipment Line ID, 3 digits starting at 001
        var tmpShipmentLineId = i + 1
        var shipmentLineId = tmpShipmentLineId.toString().padStart(3, '0');
        log.debug('Shipment Line ID: ', shipmentLineId)
        //check if first fulfillment is done, if yes mark ready for second fulfillment
        if(SOrecord.getSublistValue({sublistId: 'item', fieldId: 'custcol_il_send_ff_interface', line: values[i]}) == true){
            log.debug('Line: ' + i, 'Mark ready for 2nd fulfillment')
            //Set values
             SOrecord.setSublistValue({
                sublistId: 'item',
                fieldId: 'custcol_send_to_ff_2nd',
                line: Number(values[i]),
                value: true
            });
              SOrecord.setSublistValue({
                sublistId: 'item',
                fieldId: 'custcol_shipment_id_2nd',
                line: Number(values[i]),
                value: newShipmentId
            });
              SOrecord.setSublistValue({
                sublistId: 'item',
                fieldId: 'custcol_shipment_line_id_2nd',
                line: Number(values[i]),
                value: shipmentLineId
            });

        }
    //If not, mark ready for first fulfillment
        else{
            log.debug('Line: ' + i, 'Mark ready for first fulfillment')
            //Set Values
             SOrecord.setSublistValue({
               sublistId: 'item',
               fieldId: 'custcol_il_send_ff_interface',
               line: Number(values[i]),
               value: true
            });
            SOrecord.setSublistValue({
                sublistId: 'item',
                fieldId: 'custcol_shipment_id',
                line: Number(values[i]),
                value: shipmentId
            });
            SOrecord.setSublistValue({
                sublistId: 'item',
                fieldId: 'custcol_shipment_line_id',
                line: Number(values[i]),
                value: shipmentLineId
            });

        }   

    };

    log.debug('SOrecord after changes: ', SOrecord);

    SOrecord.save();

    log.debug('Record Saved ', 'END');

在上面你会发现一个扩展的代码片段,由于某种原因,for循环之外的所有代码似乎都没有被执行......有什么想法吗?

首先,感谢您的帮助:)。 我已经解决了这个问题,最后一个 setSublistValue 失败了。 我没有意识到这一点,因为我没有添加 try/catch 语句......

再次感谢您的快速响应

我不确定我是否理解此处代码的设置...文本指的是第一个代码片段,但第二个似乎更具信息性。 这是我会尝试的一些一般性的事情,但是如果您澄清第二个代码片段上正在打印的内容和未打印的内容,也许我可以提供更多帮助...

(1) 添加一个 try catch 以更好地处理错误。 您似乎收到了未记录的错误。

(2) 尝试以动态模式加载记录并使用 selectLine -> setCurrentSublistValue -> commitLine

(3) 看来您正在使用“line: values:[i]” 我没有返回的示例,但它似乎应该是“line: i”

(4) 你记录了这个 - SOrecord.getSublistValue({sublistId: 'item', fieldId: 'custcol_il_send_ff_interface', line: values[i]}) - 如果没有,请告诉我们值是什么......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM