Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用suitescript从API创建自定义记录_Javascript_Json_Api_Netsuite_Suitescript - Fatal编程技术网

Javascript 使用suitescript从API创建自定义记录

Javascript 使用suitescript从API创建自定义记录,javascript,json,api,netsuite,suitescript,Javascript,Json,Api,Netsuite,Suitescript,我需要帮助来解决这个问题 我有一个自定义记录来记录客户的车辆详细信息。我可以毫无问题地从UI添加详细信息,但我需要从API调用添加车辆详细信息。我有一个客户端脚本,可以执行对API的调用并返回数据,但我无法将车辆品牌和型号分配给相关字段 “我的品牌”和“型号”字段是带有型号的列表,具体取决于品牌,即选择“品牌”时,仅列出该品牌的型号 在我的脚本中,我有一个switch语句来将API中的字段分配给我的自定义记录字段 车辆详细信息自定义记录屏幕截图下方(链接到该记录) Custopm记录截图 在我的

我需要帮助来解决这个问题

我有一个自定义记录来记录客户的车辆详细信息。我可以毫无问题地从UI添加详细信息,但我需要从API调用添加车辆详细信息。我有一个客户端脚本,可以执行对API的调用并返回数据,但我无法将车辆品牌和型号分配给相关字段

“我的品牌”和“型号”字段是带有型号的列表,具体取决于品牌,即选择“品牌”时,仅列出该品牌的型号

在我的脚本中,我有一个switch语句来将API中的字段分配给我的自定义记录字段

车辆详细信息自定义记录屏幕截图下方(链接到该记录)

Custopm记录截图

在我的PageInit功能的代码下面,我在代码中添加了coments,以显示哪些有效,哪些无效。代码使用自定义记录(屏幕截图)。try仅返回USER_错误,仅此而已:

    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);”以了解有关错误的详细信息