如何使用 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
});
注意 - 请注意数据类型。必要时进行类型转换。
我想用该字段中的现有值设置多 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
});
注意 - 请注意数据类型。必要时进行类型转换。