2017-08-10 2 views
1

Je suis nouveau pour Javascript et Servicenow alors s'il vous plaît. Je suis en train de créer un script de correction pour renseigner l'étiquette de temps de violation d'incident sur la tâche d'incident. Il affichera le même SLA que l'incident parent. Mon script ci-dessous renvoie le nombre correct d'enregistrements qui doivent être mis à jour. Cependant, quand je vais mettre à jour l'enregistrement dans mon deuxième GlideRecord, il ne met à jour qu'un seul enregistrement (devrait être d'environ 125). J'ai commenté la partie mise à jour du code à des fins de test. Aucune suggestion? MerciCorrection d'un script uniquement Mise à jour d'un enregistrement

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

Répondre

0

Je crois que vous devez déplacer votre boucle task_sla à l'intérieur de la boucle u_incident_task.

Il ne fait que mettre à jour le dernier car ipar est le dernier enregistrement de la boucle.

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

Merci Kirk! Fonctionne parfaitement maintenant. – AdamK