Advanced reference qualifier not working as expected

ramak
Giga Expert

Hello all, there is a requirement that restricts the users based on the company selected on the Incident form. I have created a script include to do this bit :

var getCurrentCompanyUsers = Class.create();

getCurrentCompanyUsers.prototype = {

      initialize: function() {

  var userslist = '';

  var comp = current.company;

  var usr = new GlideRecord('sys_user');

  usr.addQuery('company',comp.sys_id);

  usr.query();

  while(usr.next()) {

  if(userslist.length > 0) {

  userslist += (',' +usr.sys_id);

  }

  else {

  userslist = usr.sys_id;

  }

  }

  return 'sys_idIN' +userslist;

      },

      type: 'getCurrentCompanyUsers'

};

Still, it is showing the list of all the users in the system and not in the selected company. Is there something I am missing in the code ?

(I can use the dependent functionality but using the advanced ref qualifier so that the filter could be modified at any time)

1 ACCEPTED SOLUTION

Unfortunately Reference Qualifiers don't show the query in the breadcrumb.



I posted some code up on how to do it via UI Macro and Field decorators a little while ago.


See my comment on the thread below:


Reference Lookup Initial Filter



I will try adapt it for you below:



Use a UI Macro


http://wiki.servicenow.com/index.php?title=UI_Macros#gsc.tab=0



Then, use the ref_contributions attribute to call it on the field.


Dictionary Attributes - ServiceNow Wiki



<?xml version="1.0" encoding="utf-8" ?>  


<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">  


<j:set var="jvar_n" value="my_company_users_${ref}"/>  


<g:reference_decoration id="${jvar_n}" field="${ref}"  


  onclick="filterUserByCompany(); "  


  title="${gs.getMessage('My Companies Users')}" image="images/icons/tasks.gifx"/>  


<script>  


  function filterUserByCompany() {  


  var thefield = 'caller_id'; //Identify the reference field this should be attached to.  


  var thetable = 'incident'; //This gets whatever table you are on.  


  var lookupfield = 'lookup.'+ thetable + '.' + thefield; //Creates the lookup or reference field ID.  


  var thetarget = thetable + '.' + thefield;  


  var url = "&amp;amp;sysparm_query=company=" + g_form.getValue('company');  


  var refurl = reflistOpenUrl(thetarget, thetarget, thefield, 'sys_user', 'null', 'false', '');  


  var refurlquery = refurl + url;  


  popupOpenStandard(refurlquery, 'lookup');  


  }  


</script>  


</j:jelly>



ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022

View solution in original post

33 REPLIES 33

ariesmanlangit
Kilo Expert

Hi,


        Your output would be:



        sys_idIN,<sys_id1>,<sys_id2>



        I suggest to define an initial userslist value and change the append of the string.



        var userslist = 'dummyID123';


        var refQualString = 'sys_idIN';


        userslist = userslist + "," + usr.sys_id.toString();



        refQualString = refQualString + userslist;



        return refQualString;



        the output would be:


        "sys_idINdummy123,<sys_id1>,<sys_id2>"



        for retrieving the sys_id, it is best to convert it to string so that it is not treated as a reference object.


       


        kindly check if you can retrieve the script include properly at the refqual.



        Hope this helps.



        Thank you,


        a.c.manlangit


        serviceNow Developer - Philippines


The SN Nerd
Giga Sage
Giga Sage

Consider writing it as follows:



Script Include


var IncidentContext = Class.create();  


IncidentContext.getCurrentCompanyUsers = function() {


  var userslist = [];  


  var comp = current.company;  


  var usr = new GlideRecord('sys_user');  


  usr.addQuery('company',comp.sys_id);  


  usr.query();  


  while(usr.next()) {  


  userslist.push( usr.getValue('sys_id') );  


  }  


  return 'sys_idIN' + userslist.join(',');  


}



Reference Qualifier


javascript:IncidentContext.getCurrentCompanyUsers();

ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022

Can you pls share the advanced reference qualifier that I can use on the 'called_id' field ?


javascript:IncidentContext.getCurrentCompanyUsers();

ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022