netsuite - Netsuite:如何将变量从客户端脚本传递给套件?
问题描述
我只是一个新手,所以请原谅我的任何愚蠢错误。
我有两个代码,一个用于客户端脚本页面 init,另一个用于suitlet 脚本。我正在尝试做的是套件脚本上的表单和子列表,然后使用客户端脚本 getValue 函数将现有记录字段传递给子列表表单。
这可能吗?如何?
这是我的主要代码:(payrollf 是子列表的已保存搜索功能)
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
define(['N/log', 'N/record','N/search', 'N/ui/serverWidget'],
/**
* @param {log} log
* @param {search} search
* @param {serverWidget} serverWidget
* @param {record} record
*/
function(log, record, search, serverWidget) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} context
* @param {ServerRequest} context.request - Encapsulation of the incoming request
* @param {ServerResponse} context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
var request=context.request;
var response=context.response;
var form=serverWidget.createForm({
title:'Payroll Initiation'
});
var sublist = form.addSublist({
id: 'custpage_payrollsublist',
type: serverWidget.SublistType.LIST,
label: 'Payroll Sublist'
});
var payrollf=payroll();
sublist.addField({
id: 'custpage_amnt',
label: 'Amount',
type: serverWidget.FieldType.TEXT
})
sublist.addField({
id: 'custpage_date1',
label: 'Effective From',
type: serverWidget.FieldType.DATE
})
sublist.addField({
id: 'custpage_rate',
label: 'Rate',
type: serverWidget.FieldType.TEXT
})
sublist.addField({
id: 'custpage_date2',
label: 'Effective Through',
type: serverWidget.FieldType.DATE
})
var path= form.clientScriptModulePath='SuiteScripts/ClientSuitlet.js';
payrollf.run().each(function(){
var counter=0;
sublist.setSublistValue({
id: 'custpage_amnt',
line: counter,
value: path.Amount,
});
sublist.setSublistValue({
id: 'custpage_rate',
line: counter,
value: Rate,
});
sublist.setSublistValue({
id: 'custpage_date1',
line: counter,
value: date1,
});
sublist.setSublistValue({
id: 'custpage_date2',
line: counter,
value: date2,
});
counter++;
return true;
});
response.writePage(form);
}
Client Script code on page initialization:
function pageInit(context) {
var currRecord=context.currentRecord;
var Amount=currRecord.getValue('amnt');
var Rate=currRecord.getValue('rate');
var date1=currRecord.getValue('date1');
var date2=currRecord.getValue('date2');
}
解决方案
您可以通过调用套件将数据从客户端传递到子列表,例如:
var subsidiaryId = rec.getValue('fieldId'); //Read data from suitelet
var suiteUrl = url.resolveScript({
scriptId: 'customscript_xxxxxxx',
deploymentId: 'customdeploy_xxxxxxxx',
// set the script Id and the deployment Id for the suitelet you want to pass the value to.
params : {
custscript_xxxxxx_subsidiary : subsidiaryId, //define a parameter and pass the value to it
}
});
window.location.href = suiteUrl; // replace current window OR
window.open(suiteUrl,"socialPopupWindow","location=no,width=900,height=900,scrollbars=yes,top=100,left=400,resizable = no");//open it a a new window
在您的 Suitelet 中,您可以读取传递的参数。
var sub = request.parameters.custscript_xxxxxx_subsidiary;
推荐阅读
- mongodb - 当foreignField是数组时的$lookup
- javascript - 收到错误:导入自定义模块时元素类型无效
- javascript - 在聊天脚本中添加微笑 gif 图像
- python - Pandas 0.24 替换正则表达式问题
- swift - 初始化数组中的索引
- java - 在 Java 中输出星号三角形的更简单方法:
- typescript - typescript 接口提供什么样的类型和成员保证?
- machine-learning - spacy_sklearn 和 tensorflow_embedding 管道之间的区别
- r - RPostgres 中是否有一个函数可以为 Postgres 中的表创建/识别主键?
- angular - 每个项目的角度计算