Netsuite Scheduled Script выдает непредвиденную ошибку, которую я не могу скопировать - PullRequest
0 голосов
/ 18 июня 2019

У меня есть Scheduled SuiteScript 2.0, который использует сохраненный поиск для получения списка неоплаченных или частично оплаченных счетов. Скрипт просматривает каждый счет и просматривает строки транзакции. Сначала я проверяю, связана ли строка транзакции с подпиской, поскольку некоторые строки транзакции могут быть предназначены для чего-то другого. Если я нахожу идентификатор подписки, идея состоит в том, чтобы загрузить его и выполнить дополнительные действия с этой подпиской из-за ее неоплаченного статуса. Проблема в том, что при выполнении запланированного сценария происходит сбой на линии, которая пытается загрузить запись подписки. Вот фрагмент кода, а затем я получаю сообщение об ошибке:

/**
* @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 / запланированные / setBillingSuspension.js: 27)"], "причина": { "типа":" внутренний ошибка "," код ":" UNEXPECTED_ERROR "," подробности ":" неожиданный SuiteScript ошибка имеет имели место " "userEvent": NULL, "StackTrace": [ "loadRecord_impl (N / recordImpl)", "(/ SuiteScripts / revlocal / запланированные / setBillingSuspension.js: 27)"], "notifyOff" ложь}," идентификатор ":" jwjlma0g1g7jovptug37j», "notifyOff" ложь "userFacing" ложь}

Я отладил сценарий и загрузил записи подписки, в которых произошла ошибка, без проблем, поэтому я не могу продублировать ошибку, кроме случаев, когда запускается запланированный сценарий. Я уже говорил с Netsuite Support, и они не знали, что случилось, что меня не удивило. Я надеюсь, что у кого-то был подобный опыт, и он может мне помочь.

1 Ответ

0 голосов
/ 01 июля 2019

Получается, что это был сценарий Event Trigger, который мешал запланированному сценарию.В зависимости от того, что делается с записями в триггере beforeLoad, может возникнуть ошибка в запланированном сценарии.Я нажал на курок и теперь добился успеха.Работа для beforeLoad была работой, которую можно было выполнять в другом месте, поэтому триггер был перемещен в afterSubmit.

...