2017-08-10 76 views
1

我是Javascript和Servicenow的新故障,請耐心等待。我正在創建一個修復腳本來填充事件任務中事件違規時間標籤。它將顯示與父事件相同的SLA。我的下面的腳本返回應更新的正確數量的記錄。但是,當我更新第二個GlideRecord中的記錄時,它只會更新一條記錄(應該是大約125條記錄)。爲了測試目的,我評論了代碼的更新部分。有什麼建議麼?由於只修復腳本更新一條記錄

var grSLA = new GlideRecord('u_incident_task'); 
grSLA.addEncodedQuery('u_incident_breach_timeISEMPTY^parentISNOTEMPTY^stateIN1,2,4'); 
grSLA.query(); 

var count=0; 
gs.info("{0} of Itasks found to update", grSLA.getRowCount()); 

while (grSLA.next()) 
{ 
    var ipar = grSLA.parent.sys_id; 
} 
gs.print(ipar); 

var grName = new GlideRecord('task_sla'); 
grName.addQuery('task', ipar); 
grName.addQuery('stage', 'in_progress'); 
grName.query(); 

while (grName.next()) 
{ 
    var bTime = grName.planned_end_time.getDisplayValue(); 
    grSLA.u_incident_breach_time=bTime; //sets the Incident Breach Time on the iTask 

    //grSLA.update(); 
    count++; 
} 

回答

0

我相信你需要將你的task_sla循環您u_incident_task循環內。

它只更新最後一個,因爲ipar是循環中的最後一條記錄。

var grSLA = new GlideRecord('u_incident_task'); 
grSLA.addEncodedQuery('u_incident_breach_timeISEMPTY^parentISNOTEMPTY^stateIN1,2,4'); 
grSLA.query(); 

var count=0; 
gs.info("{0} of Itasks found to update", grSLA.getRowCount()); 

while (grSLA.next()) 
{ 
    var ipar = grSLA.parent.sys_id; 
    gs.print(ipar); 

    var grName = new GlideRecord('task_sla'); 
    grName.addQuery('task', ipar); 
    grName.addQuery('stage', 'in_progress'); 
    grName.query(); 

    while (grName.next()) 
    { 
     var bTime = grName.planned_end_time.getDisplayValue(); 
     grSLA.u_incident_breach_time=bTime; //sets the Incident Breach Time on the iTask 

     grSLA.update(); 
     count++; 
    } 
} 
+0

謝謝柯克!現在完美工作。 – AdamK