Setup der Datums-/Uhrzeiteingabe für verschiedene Aktionselementtypen
Nachdem Sie einen Eingabeformularbildschirm erstellt und dessen IncludeTimezone-Attribut für Datums-/Uhrzeiteingaben definiert haben, müssen Sie den Eingabeformularbildschirm einem Aktionselement zuordnen. Wie Sie die Datums-/Uhrzeiteingaben einrichten, hängt von der Art des verwendeten Aktionselements ab.
| Aktionselementtyp | Einrichten |
|---|---|
| Neu oder Aktualisieren | Stellen Sie sicher, dass Datums-/Uhrzeiteingaben Datums-/Uhrzeitfeldern in der Back-End-Instanz zugeordnet sind. Die Back-End-Instanz verwendet die vom Eingabeformularbildschirm gesendeten Gerätezeitzoneninformationen. Dann konvertiert die Back-End-Instanz den Datums-/Uhrzeitwert in Coordinated Universal Time (UTC/GMT), bevor sie in der Datenbank gespeichert wird. |
| Skript | Sie müssen den Datums-/Uhrzeit-Eingabewert in UTC/GMT konvertieren. Weitere Informationen finden Sie in den folgenden Skriptbeispielen. Weitere Informationen zum allgemeinen Skripting für ServiceNowfinden Sie unter Skripting Hinweis: Je nach Anwendungsfall sind möglicherweise Anpassungen erforderlich. |
GlideDateTime-Skriptbeispiel
Im folgenden Beispiel werden Felder vom Typ „GlideDateTime“ festgelegt.
/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);
}
}
- In diesem Beispiel werden die Felder
erwarteter Startundgeschätztes Endebasierend auf den Werten der entsprechenden Datums-/Uhrzeiteingaben vonerwarteter Startundgeschätztes Endebearbeitet. - Da das Attribut IncludeTimezone auf truefestgelegt ist, gibt die Variable
„parm_input.expectedstart“eine Datums-/Uhrzeit-Zeichenfolge im Format JJJJ-MM-DDThh:mm:ss.sssTZD zurück. Damit das System dieses Datums-/Uhrzeitformat verarbeiten kann, initialisieren Sie ein GlideDateTime-Objekt, indem Sie die Zeichenfolge an den Konstruktor übergeben. - Da
„expected_start“und „estimated_end“ Datums-/Uhrzeitspalten in der Datenbank sind, können Sie „GlideRecord.setValue()“ direkt aufrufen und dasGlideDateTime-Objekt als Wert übergeben.
Skriptbeispiel für GlideScheduleDateTime
Im folgenden Beispiel werden Felder vom Typ „GlideScheduleDateTime“ festgelegt.
/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);
- In diesem Beispiel werden die Felder
start_date_timeundend_date_timeeines Zeitplaneintrags basierend auf den Werten der entsprechenden Datums-/Uhrzeiteingabenstart_timeundend_timefestgelegt. - Da das Attribut IncludeTimezone auf truefestgelegt ist, gibt die Variable
„parm_input.start_time“eine Datums-/Uhrzeit-Zeichenfolge im Format JJJJ-MM-DDThh:mm:ss.sssTZD zurück. Damit das System dieses Datums-/Uhrzeitformat verarbeiten kann, initialisieren Sie einGlideDateTime-Objekt, indem Sie die Zeichenfolge an den Konstruktor übergeben. - Da
start_date_timeundend_date_timekeine Datums-/Uhrzeit-Spalten in der Datenbank sind (stattdessen sind sie Zeitplandatums-/-uhrzeitspalten), wird ihr Wert mitgr.start_date_time = {date_time_value}festgelegt.Hinweis:Für „date_time_value“wird erwartet, dass es sich in der Zeitzone des Anwenderprofils befindet (der angegebene Wert muss derAnzeigewerteinerGlideDateTimesein). Diese Konfiguration ermöglicht den Aufruf der Methode „GlideDateTime.getDisplayValueInternal()“, die eine Datums-/Uhrzeitzeichenfolge im internen Format JJJJ-MM-TT hh:mm:ss und in der Zeitzone des Anwenderprofils zurückgibt.