Итерация через сборщик списков без отображения определенных значений

У меня есть элемент каталога услуг в ServiceNow (версия для Женевы), который сотрудники используют для запроса доступа к дополнительным группам ServiceNow. Сборщик списков отображает все доступные группы. Мы хотим ограничить его и запретить показ некоторых вариантов. Когда вы создаете переменную List Collector, вы можете указать таблицу List, но не можете построить на ней фильтр.

Можно ли использовать клиентский скрипт каталога для проверки каждого элемента, загружаемого в сборщик списков, и пропустить его, возможно, путем проверки sysID или другого значения? Я предполагаю, что вызов записи скольжения выполняется где-то по порядку для заполнения сборщика списков, но я не знаю, как его изменить или прервать.

В этом примере сборщик списков называется «ведро».

Я, наверное, могу попробовать начать с:

var lcFilter = g_form.getControl('bucket')

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

var headers = g_form.getControl('bucket').parentElement.querySelectorAll('.col-xs-4');

headers[0].childNodes[0].firstChild.data = 'All Available Groups';
headers[1].childNodes[0]firstChild.data = 'Groups you wish to add';

person Maximillian    schedule 20.12.2016    source источник


Ответы (1)


Вы можете попробовать решение, которое позволяет вам напрямую применять фильтр к вашему сборщику списков, который я использовал из http://www.servicenowguru.com/scripting/client-scripts-scripting/change-filter-list-collector-variable-client-script/

Приведенный ниже код является копией и вставкой оттуда, поэтому я не берусь за это слишком много, но вы хотите указать здесь свое имя сборщика списков

var collectorName = 'bucket';

Затем закодированный запрос, чтобы отфильтровать его.

var filterString = 'group_nameNOT LIKEApproval^active=true'

Это будет в Catalog Client Script для onLoad

function onLoad() {
   //Apply a default filter to the list collector variable
   var collectorName = 'configuration_items';
   var filterString = 'name!=NULL^sys_class_nameANYTHING';
   //Hide the list collector until we've set the filter
   g_form.setDisplay(collectorName, false);
   setCollectorFilter();

   function setCollectorFilter(){
      //Test if the g_filter property is defined on our list collector.
      //If it hasn't rendered yet, wait 100ms and try again.
      if(typeof(window[collectorName + 'g_filter']) == 'undefined'){
         setTimeout(setCollectorFilter, 100);
         return;
      }
      //Find and hide the filter elements (optional)
      //Simple method for items with only one list collector
      //$('ep').select('.row')[0].hide();
      //Advanced method for items with more than one list collector (more prone to upgrade failure)
      //var el = $('container_' + g_form.getControl(collectorName).id).select('div.row')[0].hide();

      //Reset the filter query
      window[collectorName + 'g_filter'].reset();  
      window[collectorName + 'g_filter'].setQuery(filterString);  
      window[collectorName + 'acRequest'](null);  
      //Redisplay the list collector variable
      g_form.setDisplay(collectorName, true);
   }
}
person Kirk    schedule 20.12.2016
comment
Честно говоря, я не думал, что получу ответ на тему SO для темы ServiceNow. Спасибо, что нашли время ответить! - person Maximillian; 20.12.2016
comment
Я полагаю, стоит отметить, что это не будет работать в приложении с ограниченной областью видимости, которое меня устраивало, пока я не понял этого. Кроме того, в Хельсинки появится опция Reference qualifier, чтобы List Collector наконец смог это сделать. ‹community.servicenow.com/community/service-automation-platform/ - person Kirk; 21.12.2016
comment
Тогда я могу просто подождать, мы скоро приедем в Хельсинки. - person Maximillian; 21.12.2016
comment
Вот рабочая ссылка: community.servicenow.com/community/service-automation-platform/ - person Kirk; 21.12.2016