2016-12-20 4 views
2

Ich habe einen Service Catalog-Artikel in ServiceNow (Geneva-Version), den Mitarbeiter verwenden, um Zugriff auf zusätzliche ServiceNow-Gruppen anzufordern. Ein Listenkollektor zeigt alle verfügbaren Gruppen an. Wir wollen es begrenzen und ein paar Auswahlmöglichkeiten nicht zulassen. Wenn Sie eine List Collector-Variable erstellen, können Sie eine List-Tabelle angeben, aber Sie können keinen Filter dafür erstellen.Durch einen Listenkollektor Iterieren und bestimmte Werte nicht anzeigen

Ist es möglich, ein Catalog-Client-Skript zu verwenden, um jedes in den List Collector geladene Element zu überprüfen und zu überspringen, möglicherweise durch Überprüfen der sysID oder eines anderen Werts? Ich gehe davon aus, dass irgendwo ein Glide-Record-Aufruf ausgeführt wird, um den List Collector zu füllen, aber ich bin mir nicht sicher, wie ich ihn ändern oder unterbrechen kann.

In diesem Beispiel hat der List Collector den Namen 'bucket'.

Ich kann wahrscheinlich versuchen, mit zu beginnen:

var lcFilter = g_form.getControl('bucket') 

Es ist wahrscheinlich eine Möglichkeit, den Inhalt von diesem Objekt zu manipulieren. Ich brauche nur Hilfe herauszufinden, welchen Teil des Objekts ich manipulieren muss. Wir verwenden derzeit eine ähnliche Funktion die Header der Liste Collector wie folgt umbenennen:

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'; 

Antwort

2

Möglicherweise möchten Sie eine Lösung, um zu versuchen, die Sie direkt anwenden einen Filter auf Ihre Liste Sammler ermöglicht, die ich verwendet habe, von http://www.servicenowguru.com/scripting/client-scripts-scripting/changing-filter-list-collector-variable-client-script/

Der folgende Code ist eine Kopie und fügen Sie von dort, so nehme ich nicht zu viel Kredit, aber Sie wollen Ihre Liste Sammler Name hier

var collectorName = 'bucket'; 
setzen

Dann eine verschlüsselte Abfrage hier, um sie zu filtern.

var filterString = 'group_nameNOT LIKEApproval^active=true' 

Dies würde für onLoad in einem Catalog Client Script sein

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); 
    } 
} 
+0

ich ehrlich gesagt nicht glaube ich eine Antwort auf SO für ein ServiceNow Thema bekäme. Danke, dass du dir einen Moment Zeit genommen hast, um zu antworten! – Maximillian

+0

Ich nehme an, es ist erwähnenswert, dass dies nicht in einem Bereich Anwendung funktioniert, dass man mir passt, bis ich das erkannt habe. Außerdem wird es in Helsinki für einen _Listensammler_ eine Referenzqualifikations-Option geben, um dies zu tun. Kirk

+0

Ich könnte nur warten, wir ' bald in Helsinki geplant. – Maximillian

Verwandte Themen