Netsuite预定脚本产生意外错误,我无法复制

时间:2019-06-18 14:38:41

标签: netsuite suitescript2.0

我有一个Scheduled SuiteScript 2.0,它使用保存的搜索来获取未付款或部分付款的发票的列表。该脚本遍历每张发票并查看交易行。首先,我检查事务线是否与预订关联,因为某些事务线可能用于其他用途。如果我找到订阅ID,则想法是将其加载并由于该订阅的未付费状态而对该订阅执行其他操作。问题是计划的脚本运行时,它在尝试加载订阅记录的行上失败。这是代码段,然后是我收到的错误:

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NAmdConfig /SuiteScripts/nsRequireConfig.json
*/
define(["require", "exports", "N/search", "N/record", "revlocal/utils/datefunctions", "N/log"], function (require, exports, search, record, dateUtils, log) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.execute = function (context) {
    if (context.type !== context.InvocationType.SCHEDULED) {
        return;
    }
    var s = search.load({ id: "customsearch_openinvoices" });
    var results = s.run().getRange(0, 1000);
    for (var _i = 0, results_1 = results; _i < results_1.length; _i++) {
        var r = results_1[_i];
        var invoiceId = parseInt(r.getValue({ name: "internalid", summary: search.Summary.GROUP }), 10);
        var dueDate = new Date(r.getValue({ name: "duedate", summary: search.Summary.GROUP }));
        var invoice = record.load({ type: record.Type.INVOICE, id: invoiceId });
        var count = invoice.getLineCount({ sublistId: "item" });
        for (var i = 0; i < count; i++) {
            try {
                var linePaid = invoice.getSublistValue({ sublistId: "item", line: i, fieldId: "custcol_rl_paiddate" });
                if (!linePaid) {
                    var subId = parseInt(invoice.getSublistValue({
                        sublistId: "item", line: i, fieldId: "subscription"
                    }), 10);
                    var sub = record.load({ type: record.Type.SUBSCRIPTION, id: subId });
        //  more code here that doesn't have anything to do with the problem
                }
            }
            catch (error) {
                log.error("Suspension on invoice failed: " + invoiceId, error);
                continue;
            }
        }
    }
};    
});

这是错误:

  

{“类型”:“ error.SuiteScriptError”,“名称”:“ UNEXPECTED_ERROR”,“消息”:“一个   出现意外的SuiteScript错误   发生“,”堆栈“:[” loadRecord_impl(N / recordImpl)“,”((/ SuiteScripts / revlocal / scheduled / setBillingSuspension.js:27)“],”原因“:{” type“:”内部   错误”,“代码”:“ UNEXPECTED_ERROR”,“详细信息”:“意外的SuiteScript   错误有   发生“,” userEvent“:null,” stackTrace“:[” loadRecord_impl(N / recordImpl)“,”(((/ SuiteScripts / revlocal / scheduled / setBillingSuspension.js:27)“],” notifyOff“:false},” id “:” jwjlma0g1g7jovptug37j“,” notifyOff“:false,” userFacing“:false}

我已经调试了脚本,并成功加载了失败的订阅记录,因此,除了计划的脚本运行时,我无法复制该错误。我已经与Netsuite支持人员进行过交谈,他们不知道出了什么问题,这并不令我感到惊讶。我希望有人也有类似的经历,并能为我提供帮助。

1 个答案:

答案 0 :(得分:0)

因此,事实证明这是一个事件触发脚本,正在干扰计划的脚本。根据对beforeLoad触发器中的记录执行的操作,可能会导致计划的脚本中出现错误。我删除了触发器,现在已经成功了。 beforeLoad的工作是可以在其他地方完成的工作,因此触发器已移至afterSubmit。