Configuration de l’entrée de date/heure pour différents types d’éléments 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 configuration des entrées 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 de date/heure sont mappées aux champs de date/heure dans l’instance principale. L’instance principale utilise les informations de 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 temps universel coordonné (UTC/GMT) avant de l’enregistrer dans la base de données. |
| Script | Vous devez convertir la valeur d’entrée de date/heure en UTC/GMT. Consultez les exemples de script suivants pour plus d’informations. Pour plus d’informations sur les scripts en général pour , reportez-vous à ServiceNowla section Scripting Remarque : Des personnalisations peuvent être nécessaires en fonction du cas d’utilisation concerné. |
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 de date/heure correspondantes,expectedstartetestimatedend. - Étant donné que l’attribut IncludeTimezone est défini sur true, la variable
parm_input.expectedstartrenvoie une chaîne date/heure au format AAAA-MM-JJThh :mm :ss.sssTZD. Pour permettre au système de gérer ce format date/heure, initialisez un objet GlideDateTime en transmettant la chaîne dans le constructeur. - Étant donné que
expected_startetestimated_endsont des colonnes de date et d’heure dans la base de données, vous pouvez directement appeler 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 correspondantesde start_timeetend_time. - Étant donné que l’attribut IncludeTimezone est défini sur true, la variable
parm_input.start_timerenvoie une chaîne date/heure au format AAAA-MM-JJThh :mm :ss.sssTZD. Pour permettre au système de gérer ce format date/heure, initialisez un objetGlideDateTimeen transmettant la chaîne dans le constructeur. - Étant donné que
start_date_timeetend_date_timene sont pas des colonnes de date/heure dans la base de données (ce sont plutôt des colonnes de date/heure de calendrier), leur valeur est définie pargr.start_date_time = {date_time_value}.Remarque :Ladate_time_valueest censée être dans le fuseau horaire du profil d’utilisateur (la valeur fournie est censée ê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.