【问题标题】:Netsuite: How to pass variable from client script to suitelet?Netsuite:如何将变量从客户端脚本传递给套件?
【发布时间】:2021-07-06 09:04:08
【问题描述】:

我只是一个新手,所以请原谅我的任何愚蠢错误。

我有两个代码,一个用于客户端脚本页面 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');
    }

【问题讨论】:

    标签: netsuite suitescript2.0 clientscript


    【解决方案1】:

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

                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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2016-05-02
      • 2017-09-03
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      相关资源
      最近更新 更多