【发布时间】:2021-04-20 18:59:30
【问题描述】:
我在工作订单记录上创建了一个按钮,该按钮打开一个带有 fieldType.FILE 的套件表单,以允许用户在本地选择一个文件。提交 Suitlet 后,我希望脚本获取文件、获取内容,然后将两个数组传递给预定脚本。到目前为止,我没有任何错误,并且我的 log.debugs 都没有出现在 Netsuite 中。
这里是套件代码供参考:
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
*
* @author MF
*/
define(['N/ui/serverWidget', 'N/file', 'N/search', 'N/email','N/ui/dialog'], function (serverWidget, file, search, email, dialog) {
function onRequest(context) {
//getWoData(context);
buildPage(context);
};
function buildPage(context) {
var woForm = serverWidget.createForm({
title: "Mass Update Work Order Due Dates",
})
woForm.addField({
id: 'custpage_wo_export',
label: "Work Order Update File",
type: serverWidget.FieldType.FILE
});
woForm.addSubmitButton({
id: 'custpage_submitwo',
label: 'Submit',
functionName: 'SubmitWorkOrders'
});
woForm.clientScriptModulePath = "SuiteScripts/WoSubmitClient.js"
context.response.writePage(woForm);
}
return {
onRequest: onRequest
};
});
据我所知,问题始于客户。 这是上面 Suitelet 的客户端脚本:
/**
* @NApiVersion 2.X
* @NScriptType ClientScript
* @NModuleScope SameAccount
* @author MF
*/
define(['N/url', 'N/https','N/currentRecord'], function (url, https, currentRecord) {
function pageInit(context) { };
function SubmitWorkOrders(context) {
var objRecord = currentRecord.get();
//Handle the save button
log.debug({
title: 'SubmitWorkOrders',
details: "This function was called"
})
var uploadedFile = objRecord.getValue({
fieldId: 'custpage_wo_export'
})
log.debug({
title: 'File',
details: uploadedFile.name
})
var taskCreate = url.resolveScript({
scriptId: 'customscript_scheduledscripttaskagent',
deploymentId: 'customdeploy_scheduledscripttaskagent',
returnExternalUrl: false,
params: {
input_file: uploadedFile
}
});
}
return {
pageInit: pageInit,
saveRecord: SubmitWorkOrders
};
});
此客户端脚本然后调用另一个套件来创建和运行任务。
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
*
* @author MF
*/
define([
'N/task',
'N/redirect',
'N/file'
], function (task, redirect, file) {
function scriptTask(context) {
//check file type
var input_file = context.request.params.input_file;
log.debug({
title: 'File Name',
details: input_file.name
})
var woUpdateScriptTask = task.create({
taskType: task.taskType.SCHEDULED_SCRIPT,
deploymentId: 'customscript_womassupdate',
params: { uploadedFile: uploadedFile },
scriptId: 715
}).submit();
}
return {
onRequest: scriptTask
};
});
任何建议都将不胜感激,我只在 Netsuite 领域工作了几周,而 javascript 通常只比这长一点。请注意,其中一些脚本中存在一些来自测试不同方法的残留模块。
目前整个过程看起来像这样 -> (1)Work Orders 上的UserEventScript -> (2)Work Orders 上的ClientScript -> (3)首先附加 Suitelet -> (4)Suitelet 的ClientScript -> (5) Suitelet 创建任务运行预定脚本 -> (6)ScheduledScript 更新工单。希望获得一些关于从第 3 步到第 5 步获取文件内容的建议,以便在将数据传递到预定脚本之前对其进行解析。
提前致谢
【问题讨论】:
标签: netsuite suitescript suitescript2.0