如何在 Netsuite 中使用 RESTlet 为多个 select 自定义字段传递值?
How to pass values for multi select custom fields using RESTlet in Netsuite?
我可以为 select、文本框等传递值,但不能为 multi select 传递值。我可以更新 multi select 的值。但是我无法通过为 multi select.
传递值来创建记录
这是代码:
$datastring = array(
"gu_action"=> "create",
"recordtype"=>"vendor",
"companyname"=>"Jerald Vend",
'subsidiary'=>1,
'custentity36'=>1
);
custentity36 是 multiselect 控件。它的标签是 Course
当我传递单个值时,它工作正常。
当我尝试像下面的代码一样为 multi select 传递多个值时,出现 "Please enter value(s) for: Course"
这样的错误
$datastring = array(
"gu_action"=> "create",
"recordtype"=>"vendor",
"companyname"=>"Jerald Vend",
'subsidiary'=>1,
'custentity36'=>array(1,3)
);
您传递的值格式正确。在这种情况下,RESTlet 代码应该具有处理多选字段的兼容性。 RESTlet中使用的字段设置值api应该是
nlapiSetFieldValues()
这是api可以用来设置多选字段的值。根据您分享的 github 参考资料。 create_record函数下
/********************** Creation *********************************/
function create_record(datain) {
var err = new Object();
// Validate if mandatory record type is set in the request
if (!datain.recordtype) {
err.status = "Failed";
err.message = "Missing recordtype";
return err;
}
var record = nlapiCreateRecord(datain.recordtype);
for ( var fieldname in datain) {
if (datain.hasOwnProperty(fieldname)) {
if (fieldname != 'recordtype' && fieldname != 'id') {
var value = datain[fieldname];
// ignore other type of parameters
if (value && typeof value != 'object') {
record.setFieldValue(fieldname, value);
}
} //recordtype and id checking ends
}
} //for ends
var recordId = nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG', 'id=' + recordId);
var nlobj = nlapiLoadRecord(datain.recordtype, recordId);
return nlobj;
}
引用的代码应该是
record.setFieldValues(fieldname,value) // fieldname : custentity36 , value : 1,3
我可以为 select、文本框等传递值,但不能为 multi select 传递值。我可以更新 multi select 的值。但是我无法通过为 multi select.
传递值来创建记录这是代码:
$datastring = array(
"gu_action"=> "create",
"recordtype"=>"vendor",
"companyname"=>"Jerald Vend",
'subsidiary'=>1,
'custentity36'=>1
);
custentity36 是 multiselect 控件。它的标签是 Course
当我传递单个值时,它工作正常。 当我尝试像下面的代码一样为 multi select 传递多个值时,出现 "Please enter value(s) for: Course"
这样的错误$datastring = array(
"gu_action"=> "create",
"recordtype"=>"vendor",
"companyname"=>"Jerald Vend",
'subsidiary'=>1,
'custentity36'=>array(1,3)
);
您传递的值格式正确。在这种情况下,RESTlet 代码应该具有处理多选字段的兼容性。 RESTlet中使用的字段设置值api应该是
nlapiSetFieldValues()
这是api可以用来设置多选字段的值。根据您分享的 github 参考资料。 create_record函数下
/********************** Creation *********************************/
function create_record(datain) {
var err = new Object();
// Validate if mandatory record type is set in the request
if (!datain.recordtype) {
err.status = "Failed";
err.message = "Missing recordtype";
return err;
}
var record = nlapiCreateRecord(datain.recordtype);
for ( var fieldname in datain) {
if (datain.hasOwnProperty(fieldname)) {
if (fieldname != 'recordtype' && fieldname != 'id') {
var value = datain[fieldname];
// ignore other type of parameters
if (value && typeof value != 'object') {
record.setFieldValue(fieldname, value);
}
} //recordtype and id checking ends
}
} //for ends
var recordId = nlapiSubmitRecord(record);
nlapiLogExecution('DEBUG', 'id=' + recordId);
var nlobj = nlapiLoadRecord(datain.recordtype, recordId);
return nlobj;
}
引用的代码应该是
record.setFieldValues(fieldname,value) // fieldname : custentity36 , value : 1,3