In requested for variables I need users of manger(manger is current login user)

Siva82
Tera Expert

Hi Team,

I have a variable that needs to reference data from the user table.

In this case, I need to implement a reference qualifier. If the currently logged-in user is a manager, the variable should populate with the users managed by that person. Additionally, the variable should include the users managed by the logged-in manager's direct reports (ex:manger(3users)>> manger of manger(4users) = 7 Usrs need to populate)

For example:

  • If a manager (X) has 3 direct reports, the variable should return 3 users.
  • If another manager (Y) has 3 direct reports, and one of those users has a manager (Z) who oversees 4 users, the variable should return a total of 7 users (3 users from Y + 4 users from Z).

Thank you in advance

Sivananda reddy

1 ACCEPTED SOLUTION

@Siva82 

use this and pass the logged in user sysId

 

var UserUtils = Class.create();
UserUtils.prototype = {
    initialize: function() {},

    getAllReportees: function(managerSysId) {
        var allReports = [];
        // Start collecting from the given manager
        this.collectReports(managerSysId, allReports);
        return allReports.toString();
    },

    // Recursive function to collect reports
    collectReports: function(managerId, allReports) {
        var directReports = this.getDirectReports(managerId);
        while (directReports.next()) {
            allReports.push(directReports.sys_id.toString());
            this.collectReports(directReports.sys_id, allReports); // Recursively collect indirect reports
        }
    },

    // Function to get direct reports
    getDirectReports: function(managerId) {
        var gr = new GlideRecord('sys_user');
        gr.addQuery('manager', managerId);
        gr.query();
        return gr;
    },

    type: 'UserUtils'
};

 

use this in ref qualifier

 

javascript: 'sys_idIN' + new UserUtils().getAllReportees(gs.getUserID());

 

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

12 REPLIES 12

@Siva82 

use this and pass the logged in user sysId

 

var UserUtils = Class.create();
UserUtils.prototype = {
    initialize: function() {},

    getAllReportees: function(managerSysId) {
        var allReports = [];
        // Start collecting from the given manager
        this.collectReports(managerSysId, allReports);
        return allReports.toString();
    },

    // Recursive function to collect reports
    collectReports: function(managerId, allReports) {
        var directReports = this.getDirectReports(managerId);
        while (directReports.next()) {
            allReports.push(directReports.sys_id.toString());
            this.collectReports(directReports.sys_id, allReports); // Recursively collect indirect reports
        }
    },

    // Function to get direct reports
    getDirectReports: function(managerId) {
        var gr = new GlideRecord('sys_user');
        gr.addQuery('manager', managerId);
        gr.query();
        return gr;
    },

    type: 'UserUtils'
};

 

use this in ref qualifier

 

javascript: 'sys_idIN' + new UserUtils().getAllReportees(gs.getUserID());

 

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 

 

It works as expected. Thank you so much for help

 

Thank you

Siva

@Siva82 

I believe the script I shared worked for you as per your comment earlier but seems you deleted that.

Thank you for marking my response as helpful.

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