Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Issue with recursive function

caffry
Kilo Guru

Trying to call a same function until the value is found. But when the value is found its returning undefined.

var user=new GlideRecord("sys_user");
user.get("1328d77f97ea45104c913b6e6253af14");
checkmanageradbusinessunit(user.u_business_unit,user.manager)


function checkadbusinessunit(businessunit, manager)
{
     
     if(businessunit == "")
     {
          gs.print(checkmanagerbusinessunit(manager));
     }
}

 function checkmanagerbusinessunit(manager) {
        gs.print("check manager")
        var user = new GlideRecord("sys_user");
        user.get(manager);
        if(user.u_business_unit == "")
        {
             gs.print("if");
             checkmanagerbusinessunit(user.manager);
        }
        else{
             
             var bu=user.u_business_unit;
gs.print(bu);
             return bu;
        }

    }

find_real_file.png

1 ACCEPTED SOLUTION

Subhanand
Tera Guru

Hi caffry,

declare the recursive function in a temp variable and check.

 

var user=new GlideRecord("sys_user");


user.get("1328d77f97ea45104c913b6e6253af14");
checkmanageradbusinessunit(user.u_business_unit,user.manager)


function checkadbusinessunit(businessunit, manager)
{

if(businessunit == "")
{
gs.print(checkmanagerbusinessunit(manager));
}
}

function checkmanagerbusinessunit(manager) {
gs.print("check manager")
var user = new GlideRecord("sys_user");
user.get(manager);
if(user.u_business_unit == "")
{
gs.print("if");
var temp;
temp=checkmanagerbusinessunit(user.manager);
}
else{

var bu=user.u_business_unit;
gs.print(bu);
return bu;
}

}

 

View solution in original post

7 REPLIES 7

Subhanand
Tera Guru

Hi caffry,

declare the recursive function in a temp variable and check.

 

var user=new GlideRecord("sys_user");


user.get("1328d77f97ea45104c913b6e6253af14");
checkmanageradbusinessunit(user.u_business_unit,user.manager)


function checkadbusinessunit(businessunit, manager)
{

if(businessunit == "")
{
gs.print(checkmanagerbusinessunit(manager));
}
}

function checkmanagerbusinessunit(manager) {
gs.print("check manager")
var user = new GlideRecord("sys_user");
user.get(manager);
if(user.u_business_unit == "")
{
gs.print("if");
var temp;
temp=checkmanagerbusinessunit(user.manager);
}
else{

var bu=user.u_business_unit;
gs.print(bu);
return bu;
}

}

 

It worked.

 

thomaskennedy
Tera Guru

I don't see a function named checkmanageradbusinessunit(). Did you mean checkadbusinessunit()? That function doesn't return anything.