SuiteScript 2.0: переназначение запланированного сценария с параметром флажка - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть запланированный сценарий, который выполняет две вещи.У меня есть параметры флажка, чтобы определить, требуются ли эти вещи при этом запуске сценария.В первый раз для обоих значений по умолчанию установлено значение true.

function execute(scriptContext) {
    var script = runtime.getCurrentScript();
    doTask1 = script.getParameter({name: "custscript_tmh_do_task1"});
    doTask2 = script.getParameter({name: "custscript_tmh_do_task2"});

    if(doTask1){
        //Do something
    }
    if(doTask2){
        //Do something
    }

    //Determine if task1 or task2 needs to happen and set them to true or false.

    //Reschedule script if required
    if(doTask1 || doTask2){
    var scheduledScriptTask = task.create({
        taskType: task.TaskType.SCHEDULED_SCRIPT
    });
    scheduledScriptTask.scriptId = runtime.getCurrentScript().id;
    scheduledScriptTask.deploymentId = runtime.getCurrentScript().deploymentId;
    scheduledScriptTask.params = {'custscript_tmh_do_task1': doTask1 ,
                                    'custscript_tmh_do_task2': doTask2 };
    return scheduledScriptTask.submit();
    }
}

Проблема возникает во второй раз, когда задачи не выполняются, когда для логических значений установлено значение true.Это просто пропускает их.Я использовал отладчик, чтобы подтвердить в момент перепланирования сценария логические значения true.

Вопрос: Как перепланировать запланированный сценарий с установкой логического значения.

Дополнительный вопрос " У меня есть параметры, созданные в качестве параметра сценария. Можно ли это сделать без установки параметров сценария в NetSuite?

1 Ответ

0 голосов
/ 06 декабря 2018

это неправильный конструктор для генерации задачи.Я всегда использую:

var scheduledScriptTask = task.create({
    taskType: task.TaskType.SCHEDULED_SCRIPT,
    scriptId: runtime.getCurrentScript().id,
    deploymentId: runtime.getCurrentScript().deploymentId,
    params: {'custscript_tmh_do_task1': doTask1 ,
             'custscript_tmh_do_task2': doTask2 }
});

Также параметры скрипта передаются в виде строк, поэтому вам нужно конвертировать.

:

doTask1 = 'T' == script.getParameter({name: "custscript_tmh_do_task1"});

или

doTask1 = script.getParameter({name: "custscript_tmh_do_task1"});
...
if('T' == doTask1){ ...

Проверка, когда вы их используете ('T' == doTask1), позволяет просто возвращать значения строк в следующую итерацию.Если вы используете их как логические значения, чтобы вы могли решить, должна ли следующая итерация выполнять обе задачи, вам нужно будет возвращать их обратно в строки при передаче их на следующую итерацию: custscript_tmh_do_task1 : doTask1 ? 'T' : 'F'

Вы делаетене нужно задавать значения параметров по умолчанию для того, чтобы передать их на следующую итерацию.И любые значения, которые вы дадите в методе task.create, переопределят настроенные значения.

...