Я попытался включить кнопку (созданную из пользовательского события) в заказ на продажу. После нажатия будет сгенерирован счет. Как только кнопка нажата, появляется ошибка, и счет не генерируется. Может ли кто-нибудь помочь мне с этим?
//Client script
function pageInit() {
}
function csForButton(ctx) {
var rec = curr.get();
var customer = rec.getValue({ "fieldId": "customer" });
log.error({
title: 'customer',
details: customer
});
var scriptURL = url.resolveScript({
"scriptId": "customscript_button_task_sl",
"deploymentId": "customdeploy_button_task_sl"
});
console.log('scriptURL', scriptURL);
window.onbeforeunload = null;
window.open(scriptURL + '&id=' + rec.id);
}
return {
pageInit: pageInit,
csForButton: csForButton
};
// Сценарий пользовательских событий
function beforeLoad(ctx) {
//if (context.type == context.UserEventType.VIEW) {
addbutton(ctx);
// }
}
function addbutton(ctx) {
try {
var rec = ctx.newRecord;//record object, now we can get its properties through it(e.g. fields)
var statusOfTrans = rec.getValue({ fieldId: 'status' });
log.error('statusOfTrans', statusOfTrans);
ctx.form.clientScriptFileId = "16474"
if (ctx.type == "view" && statusOfTrans == 'Pending Fulfillment') {
ctx.form.addButton({
id: 'custpage_make_invoice',
label: 'create invoice!',
functionName: 'csForButton'
});
}
}
catch (error) {
log.error('addbutton', error);
}
}
return {
beforeLoad: beforeLoad,
}
// Сценарий Suitelet
function onRequest(ctx) {
try {
var req = ctx.request;
var res = ctx.response;
if (req.method == 'GET') {
var objRecord = rec.transform({
fromType: rec.Type.SALES_ORDER,
fromId: req.parameters.id,
toType: rec.Type.INVOICE,
isDynamic: true,
});
objRecord.save({
ignoreMandatoryFields: true
});
res.write({output: 'Invoice created'});
}
} catch (error) {
log.error('onRequest', error);
}
}
return {
'onRequest': onRequest
}
ошибка (в комплекте):
{"type": "error.SuiteScriptError", "name": "USER_ERROR", "message": "Для этой транзакции необходимо ввести хотя бы один элемент строки.", "Stack":["анонимный (N / serverRecordService)", "onRequest (/ SuiteScripts / button SL.js: 39)"], "причина": {"тип": "внутренняя ошибка", "код": "USER_ERROR", "подробности":" Вы должны ввести хотя бы одну позицию для этой транзакции. "," UserEvent ": null," stackTrace ": [" anonymous (N / serverRecordService) "," onRequest (/ SuiteScripts / button SL.js: 39)"]," notifyOff ": false}," id ":" "," notifyOff ": false," userFacing ": false}
Как говорится в сообщении об ошибке, включить как минимум 1 строку, но я хотел этогогенерироваться автоматически. Я новичок в suitescript и получаю всю помощь из документации. Кто-нибудь может мне помочь, что я делаю не так? Спасибо