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

I did the exact same thing in my dev instance just now, this is what I am seeing as below: (I used the same company - ACME South America, seeing the same number of users - 37, but not seeing the icon next to caller field and not seeing the filter either......)



find_real_file.png


maybe run a cache.do?



It should be showing from what I can see.



ui macro.PNG



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

Yeah, now its working. The 'caller_id' field needs the dependent field value to be populated with 'company', which I hadn't updated earlier.



Thanks very much Paul !


Hey Paul, looks like the values from the new filter doesn't get selected & update on the Incident form. In fact the different users from the same company also aren't getting updated, as after selecting another user, the 'user' window pop up still remains on the screen.



Have you faced this issue as well ?


I am so sorry, I didn't test the field population part of the code.



I have corrected it in the thread you marked as correct.



  var thetable = 'sys_user'; //Line 10, Incorrect code



  var thetable = 'incident'; //Line 10, Correct code



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