Encoded Query string for company and child companies

Sam Ogden
Tera Guru

Hi All,

I have the below query for a simple list widget filter on the Service Portal to show all incidents that have been raised by the users company.   However I need this list to also show any incidents that have been created by a child company if the logged in users company is a parent company, how can I achieve this?

company=javascript:gs.getUser().getCompanyID()^active=true^EQ

Any help is greatly appreciated.

1 ACCEPTED SOLUTION

Hi Sam,



I am able to retrieve the result in background script. Is the script include is in some scoped application ?


gs.print(new CDL_getParentChild().getCompanyCDL(gs.getUserID()))


find_real_file.png


Give a try with small change in the SI... it should work without parameter as well.


Filter:


companyINjavascript:newCDL_getParentChild().getCompanyCDL()^active=true^EQ^ORDERBYDESCopened_at



Script Include:


var CDL_getParentChild = Class.create();


CDL_getParentChild.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getCompanyCDL : function(user) {


  if(!user){


  user=gs.getUserID();


  }


  var sysid=[];


  var company,com;


  var usr = new GlideRecord('sys_user');


  usr.addQuery('sys_id',user);


  usr.query();


  if(usr.next())


    {


    company = usr.company;


    com = usr.email;


  }


  if( company != '' ) {


    if(com.indexOf('@cdl.co.uk')>= 0)


      {


      var compani = new GlideRecord('core_company');


      compani.query();


      while(compani.next()) {


        sysid.push(compani.sys_id.toString());


      }


      return sysid;


    }  


    var company1 = new GlideRecord('core_company');


    company1.addQuery('parent',company);


    company1.query();


    while(company1.next()) {


      sysid.push(company1.sys_id.toString());


    }


    sysid.push(company.sys_id.toString());


    return sysid.join(',');


  } else {


    var company2 = new GlideRecord('core_company');


    company2.addEncodedQuery('vendor=false^customer=false^NQcustomer=true');


    company2.query();


    while(company2.next()) {


      sysid.push(company2.sys_id.toString());


    }


    return sysid.join(',');


  }


},


type:'CDL_getParentChild'


});


View solution in original post

23 REPLIES 23

Gurpreet07
Mega Sage

You need a script include for that. Create a client callable script include to return comma separated list of companies sys_ids (including requester company and child company) and then call that script include in the url.



companyINjavascript:scriptIncludeName().functionName()^active=true^EQ


Hi Gurpreet,



I've just tried the above but now not seeing any logs.   Below is the filter I've added and the script includes:



companyINjavascript:KPMG_getDetails().getComp()^active=true^EQ^ORDERBYDESCopened_at



find_real_file.png


Hi Gurpreet,



I've just tried the above but now not seeing any logs.   Below is the filter I've added and the script includes:



companyINjavascript:KPMG_getDetails().getComp()^active=true^EQ^ORDERBYDESCopened_at



find_real_file.png


Hi Sam,



You need to instantiate the Script include class with new keyword.


companyINjavascript:new KPMG_getDetails().getComp()^active=true^EQ^ORDERBYDESCopened_at