Javascript 使用suitescript从API创建自定义记录
我需要帮助来解决这个问题 我有一个自定义记录来记录客户的车辆详细信息。我可以毫无问题地从UI添加详细信息,但我需要从API调用添加车辆详细信息。我有一个客户端脚本,可以执行对API的调用并返回数据,但我无法将车辆品牌和型号分配给相关字段 “我的品牌”和“型号”字段是带有型号的列表,具体取决于品牌,即选择“品牌”时,仅列出该品牌的型号 在我的脚本中,我有一个switch语句来将API中的字段分配给我的自定义记录字段 车辆详细信息自定义记录屏幕截图下方(链接到该记录) Custopm记录截图 在我的PageInit功能的代码下面,我在代码中添加了coments,以显示哪些有效,哪些无效。代码使用自定义记录(屏幕截图)。try仅返回USER_错误,仅此而已:Javascript 使用suitescript从API创建自定义记录,javascript,json,api,netsuite,suitescript,Javascript,Json,Api,Netsuite,Suitescript,我需要帮助来解决这个问题 我有一个自定义记录来记录客户的车辆详细信息。我可以毫无问题地从UI添加详细信息,但我需要从API调用添加车辆详细信息。我有一个客户端脚本,可以执行对API的调用并返回数据,但我无法将车辆品牌和型号分配给相关字段 “我的品牌”和“型号”字段是带有型号的列表,具体取决于品牌,即选择“品牌”时,仅列出该品牌的型号 在我的脚本中,我有一个switch语句来将API中的字段分配给我的自定义记录字段 车辆详细信息自定义记录屏幕截图下方(链接到该记录) Custopm记录截图 在我的
function pageInit(scriptContext) {
var customer = scriptContext.currentRecord;
// *********** Get current Form used ************************************* //
var currentForm = customer.getText('customform');
var posCust = parseInt(currentForm.search("Customer"));
var posCont = parseInt(currentForm.search("Contact"));
log.debug('pos Cust', posCust);
log.debug('pos Cont', posCont);
if(posCust > 0) {
var customer = scriptContext.currentRecord;
log.debug('Form Cust', currentForm);
var fldUserId = customer.getValue({
fieldId: 'custentity_tdg_userid'
});
var fldCustId = scriptContext.currentRecord.id;
log.debug('fldUserId', fldUserId);
log.debug('fldCustId', fldCustId);
//
var regVehCount = customer.getLineCount({
sublistId : 'recmachcustrecord_tdg_vehicle_customer'
});
if(regVehCount > 0){
var fldMake = customer.getSublistValue({
sublistId: 'recmachcustrecord_tdg_vehicle_customer',
fieldId: 'custrecord_tdg_vehicle_make',
line: 0
});
var fldModel = customer.getSublistValue({
sublistId: 'recmachcustrecord_tdg_vehicle_customer',
fieldId: 'custrecord_tdg_vehicle_model',
line: 0
});
var fldRegNr = customer.getSublistValue({
sublistId: 'recmachcustrecord_tdg_vehicle_customer',
fieldId: 'custrecord_tdg_vehicle_reg_nr',
line: 0
});
var fldColour = customer.getSublistValue({
sublistId: 'recmachcustrecord_tdg_vehicle_customer',
fieldId: 'custrecord_tdg_vehicle_colour',
line: 0
});
log.debug('Field Make', fldMake);
log.debug('Field Model', fldModel);
log.debug('Field Reg Nr', fldRegNr);
log.debug('Field Colour', fldColour);
}
alert('This customer has '+ regVehCount +' registered vehicles');
// *************************************** API HTTP call URL ************************************** //
var urlStr = '*url for api call*?';
var urlStrJoin = 'userID=';
var apiKey = '*api key from call*';
var apiKeyJoin = '&apiKey='
var userID = fldUserId;
var urlVal = urlStr+urlStrJoin+userID+apiKeyJoin+apiKey;
var response = https.request({
method : https.Method.GET,
url : urlVal
});
var responseBody = response.body;
// ********* Parse the result JSON into a JavaScript object before loop through its properties ************ //
var dataObj = JSON.parse(responseBody);
// log.debug({
// title: 'dataObj length',
// details: dataObj.details.length
// });
// ****** Get the number of vehicles for the resident ********************* //
for (var key of Object.keys(dataObj.details)) {
log.debug({
title: 'vehicleID Parse ' + key,
details: dataObj.details[key]
});
var vehicleDet = dataObj.details[key];
// *********** Get the individual vehicle details ************************ //
for (var subkey of Object.keys(vehicleDet)) {
log.debug({ // This return the vehicle make
title: 'vehicle details parse ' + subkey,
details: vehicleDet[subkey]
});
var rec = record.create({
type : 'customrecord_tdg_cust_vehicle_details',
isDynamic : true
});
rec.setValue({fieldId: 'custrecord_tdg_vehicle_customer', value : fldCustId}); // This assign the customer ID no issues
switch (subkey){
case 'make' : // search return the make and internal ID, no error on setValue but it is not saved, I get a user error
log.debug({title: 'in case before search call'});
createSearchVehMake(vehicleDet[subkey].toUpperCase());
rec.setValue({fieldId: 'custrecord_tdg_vehicle_make', value: vehMakeId_Glo});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehMakeId_Glo});
break;
case 'model' : // Search return Model with correct Internal ID but I get an error that the reference key is invalid, this field is dependant on make
createSearchVehModel(vehMakeId_Glo, vehicleDet[subkey]);
rec.setValue({fieldId: 'custrecord_tdg_vehicle_model', value: format.parse({value : vehModelId_Glo, type : format.Type.INTEGER})});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehModelId_Glo});
break;
case 'colour' : // this is not assigned in setValue, Iget a user Error
rec.setValue({fieldId: 'custrecord_tdg_vehicle_colour', value: vehicleDet[subkey]});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehicleDet[subkey]});
break;
case 'year' :
rec.setValue({fieldId: 'custrecord_tdg_vehicle_year', value: vehicleDet[subkey]});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehicleDet[subkey]});
break;
case 'registrationNumber' : // This is assigned and saved
rec.setValue({fieldId: 'custrecord_tdg_vehicle_reg_nr', value: vehicleDet[subkey]});
rec.setValue({fieldId: 'name', value: vehicleDet[subkey]});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehicleDet[subkey]});
break;
case 'vinNumber' :
rec.setValue({fieldId: 'custrecord_tdg_vehicle_vin_nr', value: vehicleDet[subkey]});
log.debug({title: 'vehicle details parse case ' + subkey, details : vehicleDet[subkey]});
break;
}
//customer.setValue({fieldId: 'name', value: email});
// name - Registration number
// custrecord_tdg_vehicle_make - Vehicle Make
// custrecord_tdg_vehicle_model - Vehicle Model
// custrecord_tdg_vehicle_colour - Vehicle Colour
// custrecord_tdg_vehicle_reg_nr - Registration number
// custrecord_tdg_vehicle_vin_nr - VIN number
// custrecord_tdg_vehicle_year - Registration Year
// this try is applied for every field, I then get customer ID and Registration number assigned and saved
// try {
// var callId = rec.save();
// log.debug('Vehicle record created successfully', 'Id: ' + callId);
// } catch (e) {
// log.debug('sigh');
// log.error(e.name);
// }
// This try will apply only on all field assignments , but then no data is saved }
try {
var callId = rec.save();
log.debug('Vehicle record created successfully', 'Id: ' + callId);
} catch (e) {
log.debug('sigh');
log.error(e.name);
}
}
}
}
我注意到你在动态模式下创建了新记录。当记录上字段的设置顺序很重要时,通常会执行此操作。检查所设置字段的顺序,即如果用户界面调用年份,则填充品牌列表,首先设置“年份”。还要检查该方法的可选参数 您单独记录了“log.error(e.name);”并尝试记录“log.error(e.message);”以了解有关错误的详细信息