[英]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.