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

Sorry, mixing two things up 🙂

 

 

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', userDetails.location, locInfo.name);
    g_form.setValue('current_phone_number', userDetails.phone);
    g_form.setValue('current_manager', userDetails.manager, userInfo.u_preferred_name);
   }
   
}


Edited, since you aparently use a custom name field.

 

 


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

still getting the SYS_ID from your code here

PeterWilliams_0-1692801680773.png

PeterWilliams_1-1692801707463.png

 

Sandeep Rajput
Tera Patron
Tera Patron

@Peter Williams Please update your script as follows.

 

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.getDisplayValue());
    g_form.setValue('current_office_workstation_id', userDetails.u_desk_location);
    g_form.setValue('current_location', userDetails.location.getDisplayValue());
    g_form.setValue('current_phone_number', userDetails.phone);
    g_form.setValue('current_manager', userDetails.manager.getDisplayValue());

   }
   
}

this didnt work either

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);

   }
   
}