Catalog Item getting SYS ID instead of their actual item name

Peter Williams
Kilo Sage

Good Day everyone,

i created a catalog item that is used for internal changes to an employee.

In my form i have a reference field linked to the sys_user table and when you choose a person their information will get populated into single text fields via a client script.

What is happening, the person Manager (linked to the sys_user table) and their Location(linked to the cmn_location table) is only coming back with the Sys_ID as seen below:

 

PeterWilliams_0-1692795441778.png

 

The script i am using is the following:

PeterWilliams_1-1692795503846.png

 

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

   var userDetails = g_form.getReference('preferred_name', myFunc);

   function myFunc(userDetails){
    g_form.setValue('current_title', userDetails.title);
    g_form.setValue('current_persona', userDetails.u_persona);
    g_form.setValue('current_share_team', userDetails.u_share_team);
    g_form.setValue('current_department', userDetails.department);
    g_form.setValue('current_office_workstation_id', userDetails.u_desk_location);
    g_form.setValue('current_location', userDetails.location);
    g_form.setValue('current_phone_number', userDetails.phone);
    g_form.setValue('current_manager', userDetails.manager);

   }
   
}
 
 
how can i modify the manager and location field to read the Name instead of the sys_id?
2 ACCEPTED SOLUTIONS

Peter Williams
Kilo Sage

I was able to figure it out,

 

here is the updated code for anyone to use.....

 

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

   var userDetails = g_form.getReference('preferred_name', myFunc);

   function myFunc(userDetails){
    var locInfo = new GlideRecord('cmn_location');
    locInfo.get(userDetails.location);

    var userInfo= new GlideRecord('sys_user');
    userInfo.get(userDetails.manager);

    g_form.setValue('current_title', userDetails.title);
    g_form.setValue('current_persona', userDetails.u_persona);
    g_form.setValue('current_share_team', userDetails.u_share_team);
    g_form.setValue('current_department', userDetails.department);
    g_form.setValue('current_office_workstation_id', userDetails.u_desk_location);
    g_form.setValue('current_location', locInfo.name);
    g_form.setValue('current_phone_number', userDetails.phone);
    g_form.setValue('current_manager', userInfo.u_preferred_name);

   }
   
}

View solution in original post

Try this:

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	
	var userDetails = g_form.getReference('preferred_name', myFunc);
	
	function myFunc(userDetails){
		
		var loc = new GlideRecord('cmn_location');
		loc.addQuery('sys_id', userDetails.location);
		loc.query(getLocation); 
		
		function getLocation(loc){
			loc.next();
			
			var man = new GlideRecord('sys_user');
			man.addQuery('sys_id', userDetails.manager);
			man.query(getManager); 
			
			function getManager(man){
				man.next();
				
				g_form.setValue('current_title', userDetails.title);
				g_form.setValue('current_persona', userDetails.u_persona);
				g_form.setValue('current_share_team', userDetails.u_share_team);
				g_form.setValue('current_department', userDetails.department);
				g_form.setValue('current_office_workstation_id', userDetails.u_desk_location);
				g_form.setValue('current_location', userDetails.location, loc.name);
				g_form.setValue('current_phone_number', userDetails.phone);
				g_form.setValue('current_manager', userDetails.manager, man.u_preferred_name);
			}
		}	
	}
}

Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

View solution in original post

17 REPLIES 17

Peter Bodelier
Giga Sage

You need to set both DisplayValue as Value


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

where in the code ?

Peter Bodelier
Giga Sage
    g_form.setValue('current_location', userDetails.location);
    g_form.setDisplayValue('current_location', <<location display>>);
    g_form.setValue('current_manager', userDetails.manager);
    g_form.setDisplayValue('current_manager', <<manager display>>);

Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

Sorry this didnt work