Change Client Script calling a Script Include

Dead Blade
Kilo Guru

Hello Developers,

I am trying to call a script include from an onchange client script and populate a u_Field. The script include returns a group.  The client script needs to supply the cmdb_ci and the group type.

I've been attempting to use something similar to: https://community.servicenow.com/community?id=community_question&sys_id=a77707a1dbc023c09d612926ca961925&view_source=searchResult

with little luck. 

Here is the script include:

var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    
    getallValues : function() {
        var output;
        var grp = this.getParameter("sysparm_grp");
        var cmdb = this.getParameter("sysparm_ci");
        var gr = new GlideRecord('u_m2m_groups_configuratio');
        gr.addQuery('u_group', grp);
        gr.addQuery('u_configuration_item', cmdb);
        gr.query();
        if(gr.next()) {
            output += gr.sys_id+"\n";    
        }
        return output ;
    },
    
    type: 'Group_and_CI'
});

 

Can someone help me with the Change client script?

 

1 ACCEPTED SOLUTION

David, this is what works now:

Script Include:

var Group_and_CI_1 = Class.create();
Group_and_CI_1.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    
    getallValues : function() {
        var output;
        var grp = this.getParameter("sysparm_grp");
        var cmdb = this.getParameter("sysparm_ci");
        
        gs.log('TESTING: grp is = ' + grp);   //Added by Will
        gs.log('TESTING: cmdb is = ' + cmdb);  //Added by Will
        
        var gr = new GlideRecord('u_m2m_groups_configuratio');
        gr.addQuery('u_group.type', grp);
        gr.addQuery('u_configuration_item', cmdb);
        gr.query();
        
        gs.log('TESTING: Result before IF is = ' + gr.output);  //Added by Will
        gs.log('TESTING Row Count is '+ gr.getRowCount());  //Added by Will
        
        if(gr.next()) {
            //output = gr.sys_id +" \n";
            output = gr.u_group +" \n";
            gs.log('TESTING: Result after IF is = ' + output);  //Added by Will
        }
        gs.log('TESTING Result Before Output is '+ output);  // Added by Will
        return output ;
    },
    
    type: 'Group_and_CI_1'
});

 

 Client:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }


    var ga = new GlideAjax('Group_and_CI_1');
    ga.addParam('sysparm_name', 'getallValues');    
    ga.addParam('sysparm_ci', g_form.getValue('cmdb_ci'));   
    ga.addParam('sysparm_grp', '1512159ddbc5a300b6e69b3c8a96195d');   
    ga.getXML(callback);
	

    function callback(response) {

    var answer = response.responseXML.documentElement.getAttribute("answer");
		
		

	alert(answer);
		
    
	g_form.setValue('u_glide_list_areas_impacted', answer);

    
}

}

 

Client Script passed the cmdb_ci and the group type.

Results in the Group being added to the Change Request u_field.

 

Do you want full credit, you led me to the final, or just helpful.  I'm cool either way.

View solution in original post

31 REPLIES 31

Prateek kumar
Mega Sage

 var gr = new GlideRecord('u_m2m_groups_configuratio');

Shouldn't this be u_m2m_groups_configuration??


Please mark my response as correct and helpful if it helped solved your question.
-Thanks

Hi, no... the table name is correct 'u_m2m_groups_configuratio'.  Thanks for replying.

Harsh Vardhan
Giga Patron

add logs in your script include . 

 

Let us know the log details

 

var Group_and_CI = Class.create();
Group_and_CI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    
    getallValues : function() {
        var output;
        var grp = this.getParameter("sysparm_grp");
        var cmdb = this.getParameter("sysparm_ci");
        var gr = new GlideRecord('u_m2m_groups_configuratio');
        gr.addQuery('u_group', grp);
        gr.addQuery('u_configuration_item', cmdb);
        gr.query();

gs.log('Row Count is'+ gr.getRowCount());
        if(gr.next()) {
            output = gr.sys_id;    
        }

gs.log('Result is'+ output);
        return output ;
    },
    
    type: 'Group_and_CI'
});

I am attempting to test the Script Include.  I need a client script example or a background script example.