Netsuite:如何将变量从客户端脚本传递到 suitelet?

Netsuite: How to pass variable from client script to suitelet?

我只是一个初学者,如有任何愚蠢的错误,请原谅我。

我有两段代码,一段是client script page init,另一段是suitlet script。我想做的是在 suitelet 脚本上创建一个表单和一个子列表,然后使用客户端脚本 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');
    }

您可以通过调用 suitelet 将数据从客户端传递到子列表,例如:

            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;