The CreatorCon Call for Content is officially open! Get started here.

getting error "Cannot find function split in object 90237e60db5df410d6a11c9468961995 00000288.0." while trying to Split the array value.

VIKAS MISHRA
Tera Contributor

I am doing one rest message integartion , for which i have created script incude, in the script inculde i have bold the 2 line of code, the first code which is bold is working fine but due to second bold code i am getting error "Cannot find function split in object 90237e60db5df410d6a11c9468961995 00000288.0." , Why the second bold code is not working but first one is working fine.

 

this.setCongaPushFieldTrue(sbRecordSysIds, response.getStatusCode(), JSON.parse(response.getBody()));

setCongaPushFieldTrue: function(sbRecordSysIds, httpStatus, responseBody) {
    
    //sbRecordSysIds = [sysid1 contract1,sysid2 contract2]
     if (httpStatus != '200') {

         var sbR = sbRecordSysIds.split(",");
         for (var a = sbR[0]; a <= sbR.length; a++) { //a=sysid1 contract1
             var gr = new GlideRecord('x_amex_sourcing_request_request');
             gr.addQuery('sys_id', a.split(' ')[0]);
             gr.query();
             if (gr.next()) {
                 gr.x_amex_sr_ready_for_conga_push = true;
                 gr.setWorkflow(false);
                 gr.autoSysFields(false);
                 gr.update();
             }

         }
     }
            else if (httpStatus == '200'){
//                 responseBody = [{"isSuccess":false,"errorMessage":"Agreement: 00000288.0 is not present in Conga","apttus_contract_id":"00000288.0"},{"isSuccess":true,"errorMessage":"","apttus_contract_id":"00006475.0"}];
//     sbRecordSysIds = [sysid1 contract1,sysid2 contract2]
                gs.info('enters in else if loop');
    for(var i in responseBody){
        var flag = responseBody[i].isSuccess;
        if(!flag){
            var ContId = responseBody[i].apttus_contract_id;
            gs.info('testing response For True/False ' + ContId + " " + flag);
            var sbR1 = sbRecordSysIds.split(",");
            gs.info('testing1' + sbR1);
            for (var b = sbR1[0]; b <= sbR1.length; b++){
                gs.info('testing2');
                var gr1 = new GlideRecord('x_amex_sourcing_request_request');
                gs.info('testing3');
                gr1.addQuery('sys_id', a.split(' ')[0]);
                gs.info('testing4');
                gr1.addQuery('x_amex_sr_contract_id', ContId);
                gs.info('testing5');
                gr1.query();
             if (gr1.next()) {
                 gr1.x_amex_sr_ready_for_conga_push = true;
                 gr1.setWorkflow(false);
                 gr1.autoSysFields(false);
                 gr1.update();
                 gs.info('testing6');
}} } }} },

1 ACCEPTED SOLUTION

Hi,

Since this variable is already array, no need to split. Also I see that your for loop has issues. You can use this updated code. Highlighted the changes in bold:

this.setCongaPushFieldTrue(sbRecordSysIds, response.getStatusCode(), JSON.parse(response.getBody()));

setCongaPushFieldTrue: function(sbRecordSysIds, httpStatus, responseBody) {
    
    //sbRecordSysIds = [sysid1 contract1,sysid2 contract2]
     if (httpStatus != '200') {

         var sbR = sbRecordSysIds;
         for (var a = 0; a <= sbR.length; a++) { //a=sysid1 contract1
             var gr = new GlideRecord('x_amex_sourcing_request_request');
             gr.addQuery('sys_id', sbR[a].split(' ')[0]);
             gr.query();
             if (gr.next()) {
                 gr.x_amex_sr_ready_for_conga_push = true;
                 gr.setWorkflow(false);
                 gr.autoSysFields(false);
                 gr.update();
             }

         }
     }
            else if (httpStatus == '200'){
//                 responseBody = [{"isSuccess":false,"errorMessage":"Agreement: 00000288.0 is not present in Conga","apttus_contract_id":"00000288.0"},{"isSuccess":true,"errorMessage":"","apttus_contract_id":"00006475.0"}];
//     sbRecordSysIds = [sysid1 contract1,sysid2 contract2]
                gs.info('enters in else if loop');
    for(var i in responseBody){
        var flag = responseBody[i].isSuccess;
        if(!flag){
            var ContId = responseBody[i].apttus_contract_id;
            gs.info('testing response For True/False ' + ContId + " " + flag);
            var sbR1 = sbRecordSysIds;
            gs.info('testing1' + sbR1);
            for (var b = 0; b <= sbR1.length; b++){
                gs.info('testing2');
                var gr1 = new GlideRecord('x_amex_sourcing_request_request');
                gs.info('testing3');
                gr1.addQuery('sys_id', sbR1[b].split(' ')[0]);
                gs.info('testing4');
                gr1.addQuery('x_amex_sr_contract_id', ContId);
                gs.info('testing5');
                gr1.query();
             if (gr1.next()) {
                 gr1.x_amex_sr_ready_for_conga_push = true;
                 gr1.setWorkflow(false);
                 gr1.autoSysFields(false);
                 gr1.update();
                 gs.info('testing6');
}} } }} },

Thank you,
Palani

View solution in original post

6 REPLIES 6

It worked , thank you so much

Marcin20
Mega Guru

 Hi,

I propose the adjusted version:

sbRecordSysIds = "sysid1 contract1,sysid2 contract2"; 

 

Please also check the function parameter if its type is String and it is not null.

 

Best Regards,

Marcin