Configuration de l’entrée de date/heure pour différents types d’élément d’action
Après avoir créé un écran de formulaire d’entrée et défini son attribut IncludeTimezone pour les entrées de date/heure, vous devez associer l’écran du formulaire d’entrée à un élément d’action. La façon dont vous configurez les entrées de date/heure dépend du type d’élément d’action que vous utilisez.
| Type d’élément d’action | Configurer |
|---|---|
| Nouveau ou Mettre à jour | Assurez-vous que les entrées date/heure sont mappées aux champs de date/heure dans l’instance principale. L’instance principale utilise les informations du fuseau horaire de l’appareil envoyées par l’écran du formulaire d’entrée. Ensuite, l’instance principale convertit la valeur date/heure en heure universelle coordonnée (UTC/GMT) avant de l’enregistrer dans la base de données. |
| Script | Vous devez convertir la valeur d’entrée date/heure en UTC/GMT. Pour plus d’informations, reportez-vous aux exemples de script suivants. Pour plus d’informations sur le scripting en général pour ServiceNow, reportez-vous à la section Scripting Remarque : Des personnalisations peuvent être nécessaires en fonction du cas d’utilisation impliqué. |
Exemple de script GlideDateTime
L’exemple suivant définit les champs du type GlideDateTime .
/sys_sg_write_back_action_step.do?sys_id=b390e6a7c1120110fa9b5abd6a7dbb64
(function WriteBackAction(parm_input, parm_variable, actionResult) {
var shortDescription = parm_input.shortdescription;
var scheduledStart = parm_input.expectedstart;
var estimatedEnd = parm_input.estimatedend;
var description = parm_input.description;
var wotSysId = parm_variable['sys_id'];
var wotGr = new GlideRecord("wm_task");
wotGr.get(wotSysId);
wotGr.setValue("description", description);
wotGr.setValue("short_description", shortDescription);
var newEnd = new GlideDateTime(estimatedEnd);
var endMS = newEnd.getNumericValue();
var newStart = new GlideDateTime(scheduledStart);
var startMS = newStart.getNumericValue();
if (endMS - startMS < 0) {
gs.addErrorMessage(gs.getMessage("The start date should come before the end date"));
} else {
//set the time on screen all the time
wotGr.setValue("expected_start", newStart);
wotGr.setValue("estimated_end", newEnd);
var duration = endMS - startMS;
var newDur = new GlideDuration();
newDur.setValue(duration);
wotGr.setValue("estimated_work_duration", newDur);
//check double booking no matter which field is changed. set needs_attention so that dispatcher can review it.
var info = new global.FSMAgentInfo(gs.getUserID());
var doubleBooking = info.allowAgentDoubleBookingTask();
if (doubleBooking){
var conflict = !(new global.SMDDateValidation().checkSchedulingConflictSimple(wotGr));
if (conflict) {
//BR Date Checks will display conflict message as Warning: {0} has been scheduled for a time the assigned
//only when time change.
wot.Gr.setValue("needs_attention", true);
}
}
- Dans cet exemple, les champs
expected_startetestimated_endsont modifiés en fonction des valeurs de leurs entrées date/heure correspondantes dedébut prévuetde fin estimée. - Étant donné que l’attribut IncludeTimezone est défini sur vrai, la variable
parm_input.expectedstartrenvoie une chaîne de date/heure au format AAAA-MM-JJThh :mm :ss.sssTZD. Pour permettre au système de gérer ce format de date/heure, initialisez un objet GlideDateTime en transmettant la chaîne au constructeur. - Étant donné
que expected_startetestimated_endsont des colonnes Date Heure dans la base de données, vous pouvez appeler directement GlideRecord.setValue() et transmettre l’objetGlideDateTimecomme valeur.
Exemple de script GlideScheduleDateTime
L’exemple suivant définit les champs du type GlideScheduleDateTime .
/sys_sg_write_back_action_item.do?sys_id=539b20d6b72120107be0e34e9e11a971
(function WriteBackAction(parm_input,parm_variable,actionResult) {
var personalSchedule = new global.FSMMobileUtil().getUserSchedule(parm_variable.user);
if (gs.nil(personalSchedule)) {
gs.error("create_event: personal schedule id is not found.");
gs.addErrorMessage(gs.getMessage("Create Event Failed"));
return;
}
if(gs.nil(parm_input.type))
parm_input.type = "";
var scheduleEntryGR = new GlideRecord("cmn_schedule_span");
scheduleEntryGR.initialize();
scheduleEntryGR.setValue("name", parm_input.name);
var start_time = new GlideDateTime(parm_input.start_time);
scheduleEntryGR.start_date_time = start_time.getDisplayValueInternal();
var end_time = new GlideDateTime(parm_input.end_time);
scheduleEntryGR.end_date_time = end_time.getDisplayValueInternal();
scheduleEntryGR.setValue("show_as", parm_input.show_as);
scheduleEntryGR.setValue("type", parm_input.type);
scheduleEntryGR.setValue("user", parm_variable.user);
scheduleEntryGR.setValue("schedule", personalSchedule);
scheduleEntryGR.setValue("repeat_type", parm_input.repeats);
if(parm_input.repeats!=""){
scheduleEntryGR.setValue("repeat_count", parm_input.repeat_every);
scheduleEntryGR.repeat_until = parm_input.repeat_until;
}
scheduleEntryGR.insert();
})(parm_input,parm_variable,actionResult);
- Dans cet exemple, les champs
start_date_timeetend_date_timed’une entrée de calendrier sont définis en fonction des valeurs de leurs entrées date/heure correspondantes destart_timeetend_time. - Étant donné que l’attribut IncludeTimezone est défini sur true, la variable
parm_input.start_timerenvoie une chaîne de date/heure au format AAAA-MM-JJThh :mm :ss.sssTZD. Pour permettre au système de gérer ce format de date/heure, initialisez un objetGlideDateTimeen transmettant la chaîne au constructeur. - Étant donné que
start_date_timeetend_date_timene sont pas des colonnes de date et d’heure dans la base de données (ce sont plutôt des colonnes de date/heure de calendrier), leur valeur est définie avecgr.start_date_time = {date_time_value}.Remarque :Ledate_time_valuedoit se trouver dans le fuseau horaire du profil d’utilisateur (la valeur fournie doit être lavaleur d’affichaged’unGlideDateTime). Cette configuration permet d’appeler la méthode GlideDateTime.getDisplayValueInternal(), qui renvoie une chaîne date/heure au format interne AAAA-MM-JJ hh :mm :ss et dans le fuseau horaire du profil d’utilisateur.