ServiceNow - фильтрация сборщика списков с помощью скрипта - PullRequest
0 голосов
/ 28 ноября 2018

В моей форме есть переменная, которая автоматически заполняется при загрузке.Значение из профиля пользователя.В форме есть переменная сборщика списков, которая должна отображать только значения, основанные на автоматически заполненной переменной.Я написал скрипт onChange для фильтрации сборщика списков.

`function onChange(control, oldValue, newValue, isLoading) {
 var collectorName = 'cn';  
 var filterString = '';
 var dynamicQuery = "" ;
 var order=g_form.getValue('autopopulatedvariable');
 dynamicQuery = "u_order="+order;
 try{
    var myListCollector = g_list.get(collectorName);
    myListCollector.reset();
    myListCollector.setQuery(dynamicQuery);
 }
 catch(e){
   //Reset the filter query 
   window[collectorName + 'g_filter'].reset();
   window[collectorName + 'g_filter'].setQuery(dynamicQuery);
   window[collectorName + 'acRequest'](null);
 }

} `

Форма загружается, и вы видите значения в фильтре, но результатов нет.Я могу щелкнуть увеличительное стекло и выбрать то же значение из списка, после чего оно будет правильно отфильтровано.

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 04 января 2019

С момента запуска релиза в Джакарте, Service Now ввел поле квалификатора динамической ссылки в переменной сборщика List, и вам не нужно создавать клиентские сценарии для него.List Collector

Ссылочный квалификатор выполняется на стороне сервера, поэтому он не поддерживает API-интерфейсы на стороне клиента.Если у вас есть какие-либо простые запросы, вы можете напрямую скопировать их из фильтра представления списка и вставить в поле.

Если ваш запрос динамический и зависит от других переменных в форме.Например, у вас есть сборщик списков в таблице инцидентов для отображения всех инцидентов, назначенных запрашивающей стороне.Вы можете добавить это в справочную квалификацию

javascript:'assigned_to='+current.variables.requested_for;

Здесь запрашиваемая_for - это переменная, в которой хранится имя запрашивающей стороны

Для вашего случая вы можете добавить запрос как

javascript:'u_order='+current.variables.autopopulatedvariable;

Если запрос высокодинамичный, вы можете написать его в сценарии include и вызвать его в качестве эталонного квалификатора, как мы делаем для расширенных эталонных квалификаторов.

Вот хороший блог на ту же тему: ссылка

...