如何使用 netsuite suitescript 2.0 版本为 multi-select 字段设置值?

How to set value for the multi-select field using netsuite suitescript 2.0 version?

我想用该字段中的现有值设置多 select 的值。 (即)如果 Filed 具有值 "A , B" 意味着我想添加具有现有值的新值 "c" 所以,结果将是 "A,B,C" 。

我使用“N/Record”Modules SubmitFields API 来设置 Multi-select 字段的值,如下所示

代码:SuiteScript 2.0 版本:

初始代码:

var strArrayValue = new Array();
    strArrayValue [0] = "A";
    strArrayValue [1] = "B";
    strArrayValue [2] = "C";


record.submitFields({
         type:'purchaseorder',
         id:56,
         values:{

         custbody_multiselectfield: strArrayValue 

         },
         options: {
            enableSourcing: false,
            ignoreMandatoryFields : true
          }

});

显示错误如下:"you have entered an Invalid Type Argument :arg 4"

更新代码:

 var strArrayValue = new Array();
        strArrayValue [0] = "A";
        strArrayValue [1] = "B";
        strArrayValue [2] = "C";

   var PORec = record.load({               // Loading Purchase Order Recod

                type:"purchaseorder",
                id:56,
                isDynamic: true

                 )};

        PORec.setValue('custbody_multiselectfield',strArrayValue ); // Setting Value (Array List) for Multi-Select Fields

        PORec.save();    // Saving Loaded Record

它还显示错误:" Invalid custbody_multiselectfield'reference key 31567,31568 "

但是,如果我添加一个值作为字符串而不是字符串数组,它只会设置单个值(即)覆盖以前的值。 例如:Multi-select 只有 "C" 值而不是 "A,B,C" 值。

任何人都可以帮助解决这个问题。

根据 NetSuite 的文档,您不能使用此 api 方法来编辑或提交 select 字段 - 只有支持内联编辑的字段(请参阅 SuiteAnswer ID:45158)。您可能必须使用 record.load() 加载记录,修改值,然后使用 record.save() 提交。

编辑:在回答更新后的问题时,这里唯一出现的错误是您试图通过字段的显示值来设置值,其中 setValue() 需要值的内部 ID .您可以更改使用相关内部 ID 填充的值,也可以将其更改为使用 setText() 方法:

var strArrayValue = new Array();
        strArrayValue [0] = "A";
        strArrayValue [1] = "B";
        strArrayValue [2] = "C";

   var PORec = record.load({               // Loading Purchase Order Recod

                type:"purchaseorder",
                id:56,
                isDynamic: true

                 });

        PORec.setText('custbody_multiselectfield',strArrayValue ); // Setting Value (Array List) for Multi-Select Fields

        PORec.save();    // Saving Loaded Record

我测试了这两种方法,都对我有用。

如果使用客户端脚本设置多选值很简单。就我而言,我正在寻找一名员工的下属。对于每个结果,我将下属(员工记录)的 internalid 推送到一个数组。然后在我的 'Employee' 类型的多选字段上,我设置如下值:

var subordinates = [];

// do search and push internalids of employees

currentRecord.setValue({
  fieldId: 'custrecord_emp_subordinates',
  value: subordinates
});

希望这对某人有所帮助!

如果每次要更新多select字段值时都加载记录,您可以获取字段中的数据并将其存储在变量中。

var multiSelectData = record.getValue({
   fieldId:''
});

数据将以数组的形式存在,因此您可以将数据推送到数组中。

multiSelectData.push(yourData);

最后可以提交this变量,保存记录。

record.setValue({
   fieldId:'',
   value: multiSelectData
});

注意 - 请注意数据类型。必要时进行类型转换。