SuiteScript2.0 вызывает вызов Suitelet из пользовательского события не работает - PullRequest
1 голос
/ 04 октября 2019

Что я хочу случить

Я хочу иметь возможность вызывать Suitelet из пользовательского события, передавая идентификатор записи.

ЧтоВ настоящее время происходит

Либо выдается ошибка «INSUFFICIENT_PERMISSION», либо не выдается ошибка, но суллет не вызывается.

Подробности

Привет всем, я пытаюсь вызвать сиклет из пользовательского события. У нас есть запись, созданная с некоторыми данными, после создания этой записи в пользовательском событии я хочу создать Заказ клиента и Заказ на продажу. Мне также нужно, чтобы пользовательские события этих записей запускались. Я знаю, что пользовательское событие не может вызвать другое пользовательское событие, поэтому я написал пакет для вызова, который будет выполнять обработку. Я пытаюсь вызвать пакет с помощью следующего кода.

var scheme = 'https://';
var host = url.resolveDomain({
    hostType: url.HostType.APPLICATION
});
var suitletURL = url.resolveScript({
    scriptId : 'customscript_pws_sl_data',
    deploymentId : 'customdeploy_pws_sl_data'
});
var parameters = {
    dataid : scriptContext.newRecord.id,
};
log.debug("URL", scheme + host + suitletURL);
var response = https.post({
    url  : scheme + host + suitletURL + "&dataid=" + scriptContext.newRecord.id,
    body : parameters
});

При использовании этого кода не выдается никаких ошибок, но пакет также не запускается. Я знаю это, потому что, как только мой пакет запускается, я регистрирую «Выполнение»

log.debug("Running");
var user = runtime.getCurrentUser();
var script = runtime.getCurrentScript();

// Get parameters
var params = context.request.parameters;
log.debug("Context", JSON.stringify(context.request));
log.debug("Params", JSON.stringify(params));

. Теперь я регистрирую URL, который использует пользовательское событие, и если я копирую и вставляю его в браузер, пакет запускается. ,Итак, я знаю, что URL-адрес правильный.

ЧТО Я ПОПРОБОВАЛ

Я попытался добавить параметр

returnExternalUrl: true

вызова https. Используя этот DOES , позвоните в Suitelet, однако я могу выдать ошибку, сообщающую

"type":"error.SuiteScriptError","name":"INSUFFICIENT_PERMISSION","message":"Permission Violation: You need the 'Lists -> Items' permission to access this page. Please contact your account administrator.","stack":["createError(N/error)","getOrderLines(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_lib_ecommerce.js:972)","processData(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_lib_ecommerce.js:109)","onRequest(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_sl_ecommdata.js:40)"],"cause":{"type":"internal error","code":"INSUFFICIENT_PERMISSION","details":"Permission Violation: You need the 'Lists -> Items' permission to access this page. Please contact your account administrator.","userEvent":null,"stackTrace":["createError(N/error)","getOrderLines(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_lib_ecommerce.js:972)","processData(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_lib_ecommerce.js:109)","onRequest(/SuiteScripts/PWS Additional Modules/Additional Modules/Ecommerce Data/pws_sl_ecommdata.js:40)"],"notifyOff":false},"id":"","notifyOff":false,"userFacing":false}

Для развертывания Suite установлено значение «Доступно без входа в систему: истина» и «Все роли: истина»

Обновление

I am getting You must login before accessing this page.

Я вошел в систему и звоню из UserEvent

1 Ответ

0 голосов
/ 04 октября 2019

Настройка и пользовательского события, и ситлета на запуск в режиме администратора, и использование параметра returnExternalUrl: true решили эту проблему:)

var suitletURL = url.resolveScript({
    scriptId          : 'customscript_pws_sl_data',
    deploymentId      : 'customdeploy_pws_sl_data',
    returnExternalUrl : true
});
...