2016-12-20 51 views
2

我在的ServiceNow(日內瓦發佈)服務目錄項目的人員使用請求訪問額外的ServiceNow組。列表收集器顯示所有可用的組。我們想限制它,並禁止出現一些選擇。當您構建List Collector變量時,您可以指定一個List表,但不能在其上構建過濾器。迭代通過列表收集器和不顯示特定值

是否可以使用目錄客戶端腳本來檢查每個正在加載到List Collector中的項目,並可能通過檢查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'; 

回答

2

你可能想嘗試一個解決方案,允許您將過濾器直接應用到您的列表收集,我用從http://www.servicenowguru.com/scripting/client-scripts-scripting/changing-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); 
    } 
} 
+0

老實說,我不認爲我會得到一個的ServiceNow話題上SO的響應。感謝您花點時間回覆! – Maximillian

+0

我想這是值得注意的是,這不會在一個範圍的申請工作,一個給了我適合直到我意識到。此外,在赫爾辛基將有一個「參考限定符」選項,用於最終完成此操作。 Kirk

+0

我可能只是等待,那麼,我們」重新安排赫爾辛基不久。 – Maximillian