How to obtain VP for a user in sys_user table

dennisandrison
Kilo Expert

HI 

 

I have a user defined field on my sys_user table.  The field is called VP.  I need to populate this field with the VP names for all my users.  I do have VP or Vice President in the title field in sys user.  Does anyone have any ideas how I can populate the VP field for my users?  The VP could be 5 or 7 layers deep when dot walking to the user.manager.manager.manager etc

1 ACCEPTED SOLUTION

dennisandrison
Kilo Expert

HI 

 

Thanks for your help  I got the below code to work 

 

(function executeRule(current, previous /*null when async*/)
{

var manager_sys_id=current.sys_id;
var managertitle = current.title;
var managerid=current.sys_id;
gs.addInfoMessage('++++user sysid is: ' + manager_sys_id);
gs.addInfoMessage('++++user title is: ' + managertitle);
gs.addInfoMessage('++++user managerid is: ' + managerid);
findVP(manager_sys_id);

function findVP(manager_sys_id)
{
var user = new GlideRecord('sys_user');
user.get(manager_sys_id);
gs.addInfoMessage('++++Manager found is++++'+user.name+'+++++with title+++'+user.title + '++++++user id :' + user.sys_id + 'indexof :' +user.title.indexOf('VP'));

if (user.title.indexOf('VP')==-1)
// gs.addInfoMessage('++++ENTER VP CODE ++++' + '++++++user id :' + user.sys_id);
findVP(user.manager);

if (user.title.indexOf('VP')==0)
{
gs.addInfoMessage('++++enter the name of VP++++' + user.name);
current.u_vp_name=user.name;
}

}
})(current, previous);

View solution in original post

13 REPLIES 13

Try below

 

(function executeRule(current, previous /*null when async*/) {
 
var manager_sys_id=gs.getUserID();
gs.addInfoMessage('++++user sysid P++++' + manager_sys_id);
current.u_vp_name=findVP(manager_sys_id);


function findVP(manager_sys_id)
{

var user = new GlideRecord('sys_user');
user.get(manager_sys_id);
gs.addInfoMessage('++++Manager found is++++'+user.name+'+++++with title+++'+user.title);
if (user.title.indexOf('VP')==-1)
{
 return findVP(user.manager);
 gs.addInfoMessage('++++VPPPPPP found is++++'+user.name+'+++++with title+++'+user.title);
}
else
{
return user.sys_id;
}
}
})(current, previous);

Please mark this response as correct or helpful if it assisted you with your question.

dennisandrison
Kilo Expert

when pasting code it has a warning unreachable 'gs' after return  not working

Also where do you want to update the user? You are pulling the current user who is logged in.

 

(function executeRule(current, previous /*null when async*/) {
 
var manager_sys_id=gs.getUserID();
gs.addInfoMessage('++++user sysid P++++' + manager_sys_id);
while (manager_sys_id!='found')
{
manager_sys_id = findVP(manager_sys_id);
}

gs.addInfoMessage('VPs id is - '+manager_sys_id);


function findVP(manager_sys_id)
{

var user = new GlideRecord('sys_user');
user.get(manager_sys_id);
gs.addInfoMessage('++++Manager found is++++'+user.name+'+++++with title+++'+user.title);
if (user.title.indexOf('VP')==-1)
{
 return user.manager;
 gs.addInfoMessage('++++VPPPPPP found is++++'+user.name+'+++++with title+++'+user.title);
}
else
{
return 'found';
}
}
})(current, previous);

Please mark this response as correct or helpful if it assisted you with your question.

dennisandrison
Kilo Expert

HI 

 

Thanks for your help  I got the below code to work 

 

(function executeRule(current, previous /*null when async*/)
{

var manager_sys_id=current.sys_id;
var managertitle = current.title;
var managerid=current.sys_id;
gs.addInfoMessage('++++user sysid is: ' + manager_sys_id);
gs.addInfoMessage('++++user title is: ' + managertitle);
gs.addInfoMessage('++++user managerid is: ' + managerid);
findVP(manager_sys_id);

function findVP(manager_sys_id)
{
var user = new GlideRecord('sys_user');
user.get(manager_sys_id);
gs.addInfoMessage('++++Manager found is++++'+user.name+'+++++with title+++'+user.title + '++++++user id :' + user.sys_id + 'indexof :' +user.title.indexOf('VP'));

if (user.title.indexOf('VP')==-1)
// gs.addInfoMessage('++++ENTER VP CODE ++++' + '++++++user id :' + user.sys_id);
findVP(user.manager);

if (user.title.indexOf('VP')==0)
{
gs.addInfoMessage('++++enter the name of VP++++' + user.name);
current.u_vp_name=user.name;
}

}
})(current, previous);