在2.x API中将变量从suitelet传递给customerscript?

时间:2017-02-18 00:45:50

标签: netsuite suitescript

我使用suitelet构建了一个表单,它有一个子列表,下拉列表和一个按钮。用户勾选子列表中的某些选项后,会按下一个按钮,所选项目将通过其他地方发送。

Suitelet:

  @NApiVersion 2.x
  *@NScriptType Suitelet
  */
define(['N/ui/serverWidget', 'N/search', 'N/https', 'N/record'],
  function(serverWidget, search, https, record) {
    function onRequest(context) {
     if (context.request.method === 'GET') {
       var form = serverWidget.createForm({ ... });
       form.clientScriptModulePath = 'path/to/client/script';
       // code to build a sublist, add a button and write page
      } return {
         onRequest: onRequest
        };
      });

然后,我的客户记录如下:

* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(
    [ 'N/currentRecord', 'N/https' ],
    function(currentRecord, https) {
      functionSendRequest(sublist //the sublist that I want to get from the suitelet)
      {
        //code to build json string and send http request
      } return {
         saveRecord: test
        }
    });

现在,经过几个小时的讨论,N / currentRecord引起了我的注意(我和netsuite一起使用了noobie)这对我来说似乎是一个问题解决者,因为它检索了客户端上下文中当前处于活动状态的记录。它适用于下拉菜单,并且有一个方法getSublist(options),尽管它返回只有getColumn()方法的record.Sublist。因此,它对我来说真的不起作用。那么,一旦按下按钮,有没有办法将子列表参数从套件中传递给customerscript?

2 个答案:

答案 0 :(得分:2)

要解决您的问题,您可以使用currentRecord中的getSublistValue,如下所示:

var currentRec = currentRecord.get();
var numLines = objRecord.getLineCount({
    sublistId: 'item'
});
var sublistFieldValue = currentRec.getSublistValue({
    sublistId: 'item',
    fieldId: 'item',
    line: 3
});

如果您真的想将Suitelet中的内容传递给客户端功能,您必须以这种方式设置按钮:

var someTextToPassToTheClientscript = 'The Suitelet send its regards';
form.addButton({
    id : 'custpage_some_button',
    label : 'MyButton',
    functionName : 'functionSendRequest("' + someTextToPassToTheClientscript + '")'
});

然后让你的客户端收到它:

/*
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(
    ['N/currentRecord', 'N/https'],
    function (currentRecord, https) {
    functionSendRequest(textReceivedFromSuitelet) {
        //code to build json string and send http request
    }
    return {
        functionSendRequest : functionSendRequest
    }
});

答案 1 :(得分:0)

小修正---关于Adolfo的答案

var currentRec = currentRecord.get();

var numLines = currentRec.getLineCount({//在此行中更改     sublistId:'项目' });

var sublistFieldValue = currentRec.getSublistValue({     sublistId:'item',     fieldId:“ item”,     行:3 });