Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

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


paulmorris
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