Show variables of Selected Catalog Item on Portal while raising a new request for Modification.

Naveen87
Tera Guru

Hi Developers,

 

I'm trying to build a new Catalog Item for Minor changes required on existing Catalog Item on the system.

I just have rough design in my mind & I was wondering,

How can I create a variable in New Item, Which will show all variable of the selected Catalog Item that user wants to modify.

 

Ex:- Below I have selected "Naveen Learning" Catalog Item.

Now I want to create a new variable below this ("Select Catalog Item") which will show all available variable under this Item. So user can select for modification.

 

Naveen87_1-1677248105840.png

I tried to create a variable referencing to item_option_new table but this show all the variables available in the system. I need to show only which are related to above selected Catalog Item.

 

 

 

Please suggest.

 

Thank you.

 

 

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@Naveen87 

variables can be directly linked to catalog item or they can be part of some variable set

so use this; you need to use script include for this

javascript:'cat_item='+ current.variables.choose_variable_from_the_catalog + '^ORsys_idIN' + fetchVariables(current.variables.choose_variable_from_the_catalog);
function fetchVariables(itemSysId){

	var arr = [];
	var gr = new GlideRecord("io_set_item");
	gr.addQuery("sc_cat_item", itemSysId);
	gr.query();
	while(gr.next()) {
		var rec = new GlideRecord('item_option_new');
		rec.addQuery('variable_set', gr.variable_set);
		rec.query();
		while(rec.next()){
			arr.push(rec.getUniqueValue());
		}
	}
	return arr.toString();

}

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

10 REPLIES 10

@Pooja Mallikarj ,

 

Thank you. That works.

But it's not fetching variables from Variable set attached to specific Item.

Any suggestion for this plz?

 

Ankur Bawiskar
Tera Patron
Tera Patron

@Naveen87 

variables can be directly linked to catalog item or they can be part of some variable set

so use this; you need to use script include for this

javascript:'cat_item='+ current.variables.choose_variable_from_the_catalog + '^ORsys_idIN' + fetchVariables(current.variables.choose_variable_from_the_catalog);
function fetchVariables(itemSysId){

	var arr = [];
	var gr = new GlideRecord("io_set_item");
	gr.addQuery("sc_cat_item", itemSysId);
	gr.query();
	while(gr.next()) {
		var rec = new GlideRecord('item_option_new');
		rec.addQuery('variable_set', gr.variable_set);
		rec.query();
		while(rec.next()){
			arr.push(rec.getUniqueValue());
		}
	}
	return arr.toString();

}

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

@Ankur Bawiskar ,

I tried this but no luck.

Choose variable from catalog item is showing all variables from the variable table.

It's not specifically showing variables & variable set from Item called "Naveen Learning" from variable called Select Catalog Item

Naveen87_0-1677666206388.pngNaveen87_1-1677666218192.png

 

Naveen87_2-1677666439069.png

 

Naveen87_4-1677666456181.png

 

@Naveen87 

did you debug by adding gs.info() in the script include function?

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

@Ankur Bawiskar ,

Yes.

This is working now,

I had to change values on variable.

Naveen87_3-1677739570753.png

 

Also, I realized, If end user is allowed to modify variable from variable set.

This will impact all the Item to which variable set is included In.

 

Not a good practice.

 

Do you suggest something?