Related List - Hierarchy of Managers

vidhya_mouli
Giga Sage

Hi, 

 

I have to create a custom related list, where Manager Hierarchy (Manager > Manager's manager and so on) should be displayed.

 

Relationships:

Screenshot 2023-03-31 10.26.57 AM.png

 

 

My Code:

(function refineQuery(current, parent) {
	var employeeID = parent.u_reference_1;
	var managerID = employeeID.manager;
	var level = 0;
	gs.addInfoMessage("ManageID: " + managerID);
	
	while (managerID != null && managerID != '') {
		current.addQuery("sys_id", managerID);
		employeeID = managerID;
		managerID = employeeID.manager;
		
		gs.addInfoMessage("ManageID: " + managerID);
	} 
})(current, parent);

 

Output:

Screenshot 2023-03-31 10.39.45 AM.png 

 

All the manager's sys_ids are getting displayed (gs command). However, nothing is getting added to the related list. What am I missing here?

1 ACCEPTED SOLUTION

Vasantharajan N
Giga Sage
Giga Sage

@vidhya_mouli - Please try the below code and let us know the result.  Your code's while loop simply adds AND condition of manager's sysid which is causing the problem. 

 

 

 

(function refineQuery(current, parent) {
    var employeeID = parent.u_reference_1;
    var managerID = employeeID.manager;
    var level = 0;

    var managerStsids = getManagerIDs(employeeID, managerID);
    current.addEncodedQuery("sys_idIN" + managerStsids);

    function getManagerIDs(employeeID, managerID) {
        var managers = [];
        while (managerID != null && managerID != '') {
            if (managerID != null & managerID != '') {
                managers.push(managerID.toString());
            }
            employeeID = managerID;
            managerID = employeeID.manager;
        }

        gs.addInfoMessage("ManageIDs are : " + managers.join());
        return managers.join();

    }
})(current, parent);

 

 

 


Thanks & Regards,
Vasanth

View solution in original post

2 REPLIES 2

Vasantharajan N
Giga Sage
Giga Sage

@vidhya_mouli - Please try the below code and let us know the result.  Your code's while loop simply adds AND condition of manager's sysid which is causing the problem. 

 

 

 

(function refineQuery(current, parent) {
    var employeeID = parent.u_reference_1;
    var managerID = employeeID.manager;
    var level = 0;

    var managerStsids = getManagerIDs(employeeID, managerID);
    current.addEncodedQuery("sys_idIN" + managerStsids);

    function getManagerIDs(employeeID, managerID) {
        var managers = [];
        while (managerID != null && managerID != '') {
            if (managerID != null & managerID != '') {
                managers.push(managerID.toString());
            }
            employeeID = managerID;
            managerID = employeeID.manager;
        }

        gs.addInfoMessage("ManageIDs are : " + managers.join());
        return managers.join();

    }
})(current, parent);

 

 

 


Thanks & Regards,
Vasanth

Thank you. it worked.