如何获取记录列表,然后在相应记录旁边添加一个复选框,以便在 suiteScript 中编辑和保存更改

How do you fetch a list of records and then add a checkbox next to corresponding record so to edit and save changes in suiteScript

我想创建一个 suitelet,它可以获取一些销售订单,然后能够在单击提交按钮时编辑这些订单,到目前为止我能够获取记录,但我无法添加复选框和更新 netsuite 中的记录 - suitescript

            var list=form.createList({title:"Sales order"});
            list.addColumn({
            id : 'column1',
            type : serverWidget.FieldType.TEXT,
            label : 'tranid',
            align : serverWidget.LayoutJustification.LEFT
            });list.addColumn({
            id : 'column2',
            type : serverWidget.FieldType.TEXT,
            label : 'shipaddress',
            align : serverWidget.LayoutJustification.LEFT
            });list.addColumn({
            id : 'column3',
            type : serverWidget.FieldType.TEXT,
            label : 'rate',
            align : serverWidget.LayoutJustification.LEFT
            });
             
            salesorderSearchObj.run().each(function(result){
    
                tranid= result.getValue({name: 'tranid'})
        
                shipaddress= result.getValue({name: 'shipaddress'})
        
                rate= result.getValue({name: 'rate'})
            


    



                list.addRows({
                rows : [{
                column1 : tranid,
                column2 : shipaddress,
                column3 : rate


                }]
                });


套件答案 ID 40768 在 SuiteScript 1.0 中有示例代码。下面是 2.0 格式的大纲。来自 NetSuite 的完整 1.0 示例也在下方。关键是为 GET 请求方法创建页面并将信息显示为子列表而不是列表。然后对于所有其他请求方法,获取参数并采取所需的操作。

2.0部分大纲

define(['N/ui/serverWidget'], function(serverWidget) {
  function onRequest(context){
    if(context.request.method === 'GET'){
      //create page to display results and allow for user input
      var form = serverWidget.createForm({
        title : 'Simple Form'
      });
      var sublist = form.addSublist({
        id : 'sublistid',
        type : serverWidget.SublistType.INLINEEDITOR,
        label : 'Inline Editor Sublist'
      });
      //Add checkbox and atleast internalid
      var printField = sublist.addField({
        id: 'custpage_rec_process',
        label: 'Process',
        type: serverWidget.FieldType.CHECKBOX
      });
      var idField = sublist.addField({
        id: 'custpage_rec_id',
        label: 'Internal ID',
        type: serverWidget.FieldType.TEXT
      });

      //empty Array to hold Sales Order data
      var TranIds = [];
      //run search to get Sales Order data
      ...salesorderSearchObj.run().each(function(result){
        //add search column names as columns in the sublist
        
        //add each column value to the sublist
      }
      
      //add buttons to sublist and form
      sublist.addMarkAllButtons();
      sublist.addRefreshButton();
      form.addResetButton({label: 'Reset'});
      form.addSubmitButton({label: 'Create File'});

      //display page for user input
      context.response.writePage(form);
      
    } else { //if the previously created/displayed form has been submitted display the following to the user
      var req = context.request;
      var params = JSON.stringify(context.request.parameters);//can log this to see exactly how the information comes through
      //gather submitted data

      //take desired action
      
      //display response to user
      context.response.writePage('Done');
    }
  } return {
    onRequest: onRequest
  }
});

1.0 完整样本

function suitelet(request, response){
 
 //Create the form that will be used by the POST and GET requests
 var form = nlapiCreateForm('Delete Transactions');
 
 //GET - Show a list of transactions from the search results so the user can select the ones to be deleted
 if (request.getMethod() == 'GET' )
 {
  // Run an existing transaction search
  var results = nlapiSearchRecord('transaction', 'customsearch_mass_deletion_results');
 
  // Create a sublist to show the search results
  var sublist = form.addSubList('custpage_transaction_list', 'list','Transactions');
 
  // Create an array to store the transactions from the search results
  var transactionArray = new Array();
 
  if (results!=null)
  {
   // Add a checkbox column to the sublist to select the transactions that will be deleted.
   sublist.addField('delete','checkbox', 'Delete');
 
   // Add hidden columns for the Internal ID and for the Record type.
   // These fields are necessary for the nlapiDeleteRecord function.
   sublist.addField('internalid','text', 'Internal ID').setDisplayType('hidden');
   sublist.addField('recordtype','text', 'Record Type').setDisplayType('hidden');
 
   // Add a column for the Internal ID link
   sublist.addField('internalidlink','text', 'Internal ID');
 
   // Get the the search result columns
   var columns = results[0].getAllColumns();
 
   // Add the search columns to the sublist
   for(var i=0; i< columns.length; i++)
   {
    sublist.addField(columns[i].getName() ,'text', columns[i].getName() );
   }
 
   // For each search results row, create a transaction object and attach it to the transactionArray
   for(var i=0; i< results.length; i++)
   {
    var transaction = new Object();
 
    // Set the Delete column to False
    transaction['delete'] = 'F';
    // Set the hidden internal ID field
    transaction['internalid'] = results[i].getId();
    // Set the hidden record type field
    transaction['recordtype'] = results[i].getRecordType();
 
    // Create a link so users can navigate from the list of transactions to a specific transaction
    var url = nlapiResolveURL('RECORD', results[i].getRecordType() ,results[i].getId(), null);
    internalIdLink = " " + results[i].getId() +" ";
 
    // Set the link
    transaction['internalidlink'] = internalIdLink;
 
    // Copy the row values to the transaction object
    for(var j=0; j< columns.length ; j++)
    {
     transaction[columns[j].getName()] = results[i].getValue(columns[j].getName());
    }
 
    // Attach the transaction object to the transaction array
    transactionArray[i] = transaction;
   }
  }
 
  // Initiate the sublist with the transactionArray
  sublist.setLineItemValues(transactionArray);

  sublist.addMarkAllButtons();
  form.addSubmitButton('Submit' );

  response.writePage( form );
 }
 //POST - Delete the selected transactions and show a confirmation message
 else
 {
  // Check how many lines in the sublist
  var count = request.getLineItemCount('custpage_transaction_list');
 
  // This variable will keep track of how many records are deleted.
  var num = 0;
 
  //for each line in the sublist
  for(var i=1; i< count+1; i++)
  {
   //get the value of the Delete checkbox
   var deleteTransaction = request.getLineItemValue('custpage_transaction_list', 'delete', i);
 
   // If it's checked, delete the transaction
   if(deleteTransaction == 'T')
   {
    // Get the transaction internal ID
    var internalId = request.getLineItemValue('custpage_transaction_list', 'internalid', i);
    // Get the transaction type
    var recordType = request.getLineItemValue('custpage_transaction_list', 'recordtype', i);
    try
    {
     // Delete the transaction
     nlapiDeleteRecord(recordType, internalId);
     num++;
    }
    // Errors will be logged in the Execution Log
    catch(ex)
    {
     nlapiLogExecution('ERROR', 'Error', 'Transaction ID '+ internalId +': '+ ex);
    }
   }
 
  }
  // Show how many records were deleted.
  form.addField("custpage_transaction_total", "text").setDisplayType('inline').setDefaultValue(num + " transactions deleted");
 
  response.writePage( form );
 }
}