Script include and client script mrvs

p t1
Kilo Sage
Kilo Sage

Hi Team,

 

I want to insert all the selected records from list collector to mrvs, but it's inserting only one in mrvs(for ex if i select 5 records also it's inserting only one record in mrvs)

 

Please find below script

 

Script Include

var assetdetails = Class.create();
assetdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 getAssetDetails: function(){
    var asset = this.getParameter('sysparm_asset');
    //gs.log(asset,"preethi");
    var gr = new GlideRecord('alm_hardware');
    gr.addQuery('sys_id',asset);
    gr.query();
    if(gr.next())
    {
 var tag = gr.getValue("asset_tag"); 
var serial_num = gr.getValue("serial_number");
}
return tag + ';' + serial_num;
},
    type: 'assetdetails'
});
 
onChange Client script
 
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var list = g_form.getValue('v_serial_number').toString();
    // alert(list);
    var array = list.split(',');
    //alert(array);
    for (var i = 0; i < array.length; i++) {
        var ga = new GlideAjax('global.assetdetails');
        ga.addParam('sysparm_name''getAssetDetails');
        ga.addParam('sysparm_asset', array[i]);
        ga.getXML(result);
    }

    function result(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        var arr = answer.split(';');
        var obj = (g_form.getValue('asset_addition').length != 0) ? JSON.parse(g_form.getValue('asset_addition')) : [];
        obj.push({

            "v_asset_tag": arr[0],
            "v_serial_number123": arr[1],
        });
        g_form.setValue('asset_addition'JSON.stringify(obj));
    }
}
 
 
PreethiKR_0-1683116486872.png

Thanks,

Preethi

 
 
 
1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@p t1 

I hope you are using correct variable names in script include while forming the object

update as this

var assetdetails = Class.create();
assetdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	getAssetDetails: function(){
		var asset = this.getParameter('sysparm_asset');
		var arr = [];
		var gr = new GlideRecord('alm_hardware');
		gr.addQuery('sys_id', 'IN' ,asset);
		gr.query();
		while(gr.next())
		{
			var obj = {};
			obj["v_asset_tag"] = gr.getValue("asset_tag");
			obj["v_serial_number123"] = gr.getValue("serial_number");
			arr.push(obj);
		}
		return JSON.stringify(arr);
	},
	type: 'assetdetails'
});

Client script:

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	var list = g_form.getValue('v_serial_number').toString();
	var ga = new GlideAjax('global.assetdetails');
	ga.addParam('sysparm_name', 'getAssetDetails');
	ga.addParam('sysparm_asset', list);
	ga.getXML(result);
a
	function result(response) {
		var answer = response.responseXML.documentElement.getAttribute("answer");
		g_form.setValue('asset_addition', answer);
	}
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

7 REPLIES 7

Ankur Bawiskar
Tera Patron
Tera Patron

@p t1 

I hope you are using correct variable names in script include while forming the object

update as this

var assetdetails = Class.create();
assetdetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	getAssetDetails: function(){
		var asset = this.getParameter('sysparm_asset');
		var arr = [];
		var gr = new GlideRecord('alm_hardware');
		gr.addQuery('sys_id', 'IN' ,asset);
		gr.query();
		while(gr.next())
		{
			var obj = {};
			obj["v_asset_tag"] = gr.getValue("asset_tag");
			obj["v_serial_number123"] = gr.getValue("serial_number");
			arr.push(obj);
		}
		return JSON.stringify(arr);
	},
	type: 'assetdetails'
});

Client script:

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	var list = g_form.getValue('v_serial_number').toString();
	var ga = new GlideAjax('global.assetdetails');
	ga.addParam('sysparm_name', 'getAssetDetails');
	ga.addParam('sysparm_asset', list);
	ga.getXML(result);
a
	function result(response) {
		var answer = response.responseXML.documentElement.getAttribute("answer");
		g_form.setValue('asset_addition', answer);
	}
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar 

 

When I am adding 50 values from list collector, I have a retired date field if the assets are past date to current date then I need to display alert message like if 10 not not added in 50 then I need to show them in alert message

 

Thanks,

Preethi

 

 

@p t1 

can you raise a new thread for this?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar 

 

While adding records from list collector to MRVS, I need to check retired date with current date and remove the past date records while adding to MRVS.

Thanks,

Preethi