Kalenderfilter

Wertauflöser - Kurzfassung

Zweck: Führt ausgehend von einem als Eingabewert bereitgestellten Datum oder Datumsbereich eine Werktag-Prüfung gegen einen bestimmten Kalender aus. Bei nicht-bestandener Prüfung wird ein Ausweichtermin zurückgegeben, sonst der Eingabewert.

images/download/attachments/58596494/image2022-8-8_10-22-52-version-1-modificationdate-1659946972314-api-v2.png

Der Kalenderfilter-Wertauflöser führt ausgehend von einem als Eingabewert bereitgestellten Datum oder Datumsbereich eine Werktag-Prüfung (Details s. u.) gegen einen wahlweise Statisch oder zur Laufzeit per Wertauflöser spezifizierten Kalender aus. Die Prüfung gilt als bestanden, wenn der Kalender das Datum bzw. die Von- und Bis-Daten eines Datumsbereichs als Werktag einstuft. Dann wird der Eingabewert zurückgegeben. Anderenfalls wird ein Ausweichtermin für das Datum oder den Datumsbereich gesucht und zurückgegeben.

Die Option Rückwärts springen entscheidet über die Suchrichtung (früher/später) für den Ausweichtermin, falls der Eingabewert die Werktag-Prüfung gegen den angegebenen Kalender nicht besteht.

Besonderer Anwendungsfall: Im Kontext einer Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion (s. letztes Beispiel unten) kann der Kalenderfilter-Wertauflöser genutzt werden, um ausgehend von einem Starttermin einen Termin zu ermitteln, der eine bestimmte Anzahl Werktage vom Starttermin "entfernt" ist.

Als Eingabewert wird einer der folgenden Datentypen erwartet:

  • Long ( java.lang.Long)

  • "Datum" (java.lang.Date)

  • "Zeitstempel" (java.sql.Timestamp)

  • "Datum mit Zeit" (DateTime)

  • "Datumsbereich mit Zeit" (DateRange)

Interpretation von Datumswerten ohne deklarierte Zeitzone

Ein Long-Wert als Eingabewert wird als Millisekunden seit 01.01.1970 00:00:00.000 (UTC) interpretiert. Allerdings gilt dabei - wie für alle als Datum interpretierten Eingabewert-Typen ohne Zeitzone (Long, Timestamp, Date) - nicht die Zeitzone UTC als Standard. Vielmehr wird die im Kontext anwendbare Standard-Zeitzone nach folgender Logik berücksichtigt:

  • Sofern für den Benutzer der Session (in der tatsächlich angemeldeten Sitzung) eine "Default Zeitzone" (defaultTimeZone) definiert ist, wird diese verwendet.

  • Andernfalls wird auf das Konto der Firma der Session (in der tatsächlich angemeldeten Sitzung) und die dort ggf. definierte "Default Zeitzone" (defaultTimeZone) zurückgegriffen.

  • Nur wenn keines der beiden Konten eine "Default Zeitzone" für die tatsächlich angemeldete Sitzung definiert, gibt die Auswahl für die Zeitzone im Betriebssystem des Servers oder Clients den Ausschlag:

Der Typ des Rückgabewerts entspricht immer dem Typ des Eingabewerts.

HINWEIS◄ Für die als "Datumswerte ohne deklarierte Zeitzone" zusammengefassten Datentypen bedeutet das, dass die im Kontext anwendbare Standard-Zeitzone zwar von der Prüf- und Berechnungslogik berücksichtigt wird, aber in den Daten des Rückgabewerts nicht explizit erscheint. Die für die Interpretation genutzte Zeitzone kann entscheidend dafür sein, welchem Kalendertag ein bestimmter Eingabewert zugeordnet wird, der formal nur "UTC-Millisekunden" definiert. Der abhängig vom Abgleich zwischen dem zugeordneten Kalendertag und einem Kalender ermittelte Rückgabewert wird dann aber wieder nur in "UTC-Millisekunden" definiert.

Zur Ermittlung der Rückgabewerts greift folgende Fallunterscheidung:

Geeigneter Typ als Eingabewert?

Kalender definiert?

"Werktag-Prüfung" (s. u.)
gegen den Kalender?

Option
"Rückwärts springen?"

Rückgabewert

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg ungeeignet
(z. B. XYZ oder $null)

irrelevant

irrelevant

irrelevant

Eingabewert

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg geeignet
(Datentyp aus der Liste oben)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg Kalender nicht definiert)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg Kalender ist definiert

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg Prüfung bestanden

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg Prüfung nicht bestanden

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg "Vorwärts springen"
(Standard)

Ausweichtermin: geringstmögliche Verschiebung des Eingabewerts (Datumswert/-bereich) nach später,
für die die "Werktag-Prüfung" bestanden wird

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg "Rückwärts springen"

Ausweichtermin: geringstmögliche Verschiebung des Eingabewerts (Datumswert/-bereich) nach früher,
für die die "Werktag-Prüfung" bestanden wird

HINWEISE◄ Regeln für das "Vorwärts springen" oder "Rückwärts springen"

  • Das "Springen" erfolgt mit einer Schrittweite von ganzen Kalendertagen.

  • Uhrzeiten aus dem Eingabewert gelten unverändert für den Ausweichtermin.

  • Wird beim "Springen" in der gewünschten Richtung kein passender Ausweichtermin gefunden, sind zwei Fälle zu unterscheiden:

    • Für einzelne Datumswerte ist dies sehr unwahrscheinlich aber potenziell höchst problematisch (s. ACHTUNG in der folgenden Tabelle).

    • Für einen Datumsbereich bricht die Prüfung ggf. einfach ab und liefert den Eingabewert als Rückgabewert.

Für die "Werktag-Prüfung" des Eingabewerts gegen den definierten Kalender gelten folgende Regeln:

Typ des Eingabewerts

Prüflogik

Long
oder "Datum"
oder "Zeitstempel"
oder "Datum mit Zeit"

Ein Datumswert (im Unterschied zu einem "Datumsbereich", s. u.) gilt als Werktag, wenn der unter Berücksichtigung der anwendbaren Zeitzone ermittelte Kalendertag laut dem definierten Kalender als Werktag gilt.

Dabei werden ggf. Festlegungen auf unterschiedlichen Ebenen des Kalendermodells berücksichtigt:

  • Jeder Kalender definiert dabei primär, welche Wochentage per Standard als Werktage gelten sollen.

  • Ein Kalender kann optional Ausnahmen definieren, die einen bestimmten Kalendertag explizit als "Arbeitstag" oder "kein Arbeitstag" qualifizieren.

    • Jede Ausnahme muss durch einen "Faktor" auf den ganzen (Faktor: 1,0) oder einen Anteil (Faktor<1,0) des betreffenden Kalendertags bezogen werden.

  • Ein Kalender kann zusätzlich optional auf eine oder mehrere "Feiertagsgruppen" (s. Feiertagsübersicht) verweisen.

  • Eine "Feiertagsgruppe" definiert sinngemäß Ausnahmen vom Typ "kein Arbeitstag"

    • Jeder Feiertag muss durch einen "Faktor" auf den ganzen Kalendertag (Faktor: 1,0) oder einen Anteil (Faktor<1,0) bezogen werden.

Ein Kalendertag gilt als Werktag, wenn eine der folgenden Bedingungen erfüllt ist:

  • Der Wochentag gilt laut Kalender per Standard als Werktag ...
    ... und der Kalender spezifiziert für den Kalendertag keine Ausnahme vom Typ "kein Arbeitstag" mit "Faktor" 1,0
    ... und der Kalender verweist auf keine Feiertagsgruppe, die für den Kalendertag einen Feiertag mit "Faktor" 1,0 definiert, der nicht durch eine Ausnahme vom Typ "Arbeitstag" im Kalender (mit beliebigem "Faktor", also auch 0). neutralisiert wird.

  • Der Wochentag gilt laut Kalender per Standard nicht als Werktag und der Kalender spezifiziert keine Ausnahme vom Typ "Arbeitstag" (mit beliebigem "Faktor", also auch 0), die sich auf den betreffenden Kalendertag bezieht.


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Theoretisch kann ein Kalender so konfiguriert sein, dass er per Standard keine Werktage enthält, sodass Werktage nur durch Ausnahmen vom Typ "Arbeitstag" entstehen. In Verbindung mit dem Kalenderfilter-Wertauflöser besteht dann die Gefahr, dass beim "Vorwärts springen" oder "Rückwärts springen" ausgehend von einem nicht als Werktag angegebenen Kalendertag keine gangbaren Ausweichtermine zu finden sind.

Verweise auf ungeeignet parametrierte Kalender in einem Kalenderfilter-Wertauflöser können Endlosschleifen verursachen, die einen Neustart des Servers erfordern.

"Datumsbereich mit Zeit"

Ein "Datumsbereich" gilt als Werktag, wenn die unter Berücksichtigung der Zeitzone ermittelten Kalendertage für die "Von"- und die "Bis"-Komponente bei der Bewertung gegen den definierten Kalender nach der oben beschriebenen Prüflogik als Werktage gelten.

WICHTIG◄ Ob der Kalender zwischen dem "Von"- und "Bis"-Kalendertag Werktage ausweist oder nicht, spielt für die Prüfung keine Rolle!

Wird die Prüfung für einen Datumsbereich nicht bestanden, dann wird der Datumsbereich insgesamt "parallel" verschoben, also ein Ausweichtermin unter Beibehaltung der originalen Zeitspanne zwischen "Von"- und "Bis"-Komponente ermittelt.


WARNUNG◄ Möglicherweise beinhaltet ein Kalender in der gewünschten Suchrichtung kein Paar von Werktagen (für "Von" und "Bis") im "passenden" Abstand.

Definiert ein Kalender z. B. nur drei benachbarte Wochentage (etwa: Montag, Dienstag und Mittwoch) als Werktage, dann ist es unmöglich, einen geeigneten Termin für einen Datumsbereich mit einer Zeitspanne von 3 - 4 Tagen zu finden.

Das folgende Schema verdeutlicht die Problematik im Beispiel:
┌──────── +4 ────────┐... MO - DI - MI -(DO)-(FR) -(SA)-(SO)- MO - DI - MI - ... └───── +3 ─────┘
Der Kalenderfilter-Wertauflöser gibt dann den Eingabewert unverändert zurück.

Konfiguration

Der Kalenderfilter-Wertauflöser erwartet als Eingabewert einen Datumswert oder Datumsbereich, der per Verkettung oder als Bezugsobjekt bereitgestellt werden kann.

Die Option Statisch (per Standard abgewählt) bezieht sich auf die Konfiguration für den Pflichtparameter Kalender.

Wir die Option ausgewählt (s. Bild) erscheint ein Auswahlfeld, das eine statische Einfachauswahl für einen Kalender unterstützt. Im Dropdown erscheinen alle Kalender für die im Kontext der Konfiguration Lesezugriff besteht.

Zur Laufzeit besteht immer Zugriff auf den ausgewählten Kalender. Ein bereits ausgewählter Kalender, für den in der aktuellen Konfigurationssitzung kein Lesezugriff besteht erscheint mit der Beschriftung "Hidden calendar".

Wie im Bild gezeigt, unterstützt eine Suchfunktion die Auswahl des Kalenders anhand der im Label enthaltenen Eigenschaften (im Beispiel: Name "24-1 (MON)").

images/download/attachments/58596494/image2022-8-9_11-43-11-version-1-modificationdate-1660038191729-api-v2.png

Wird die Option Statisch abgewählt, dann kann und muss für den Parameter Kalender ein Wertauflöser konfiguriert werden. Als Rückgabewert für den Wertauflöser wird entweder ein Kalender-Objekt (Calendar) erwartet (s. Bild rechts unten) oder ein Long-Wert (s. Bild rechts), der die ID (id) eines Kalender-Objekt angibt.

Im Bild rechts oben referenziert der statisch definierte Long-Wert 451 den Kalender "24-1 (MON)" aus dem Beispiel darüber.

Im Bild rechts unten wird ein Variable-Wertauflöser eingesetzt, um eine Variable zu lesen, die zur Laufzeit ein Objekt vom Typ "Kalender" (Calendar) liefern muss. Diese Variable könnte z. B. mit einer Suche (Ereignisaktion) befüllt werden.

HINWEISE

  • Die Referenz über den Long-Wert ist im Gegensatz zur statischen Auswahl (darüber) nicht geeignet, um Konfigurationen per Meta Exchange zwischen Systemen zu übertragen, in denen korrespondierende Kalender nicht notwendigerweise dieselben IDs verwenden. Nur mit einer statischen Auswahl (oben) werden abweichende IDs bei einem Import Job automatisch angepasst.

  • Eine Kalender-Referenz über den Long-Wert verhindert außerdem nicht, dass der Kalender gelöscht wird. Solange eine statische Auswahl (s. oben) besteht, kann der ausgewählte Kalender dagegen nicht gelöscht werden.

  • Liefert die Referenz per ID (Long-Wert) oder ein anderweitiger Wertauflöser zur Laufzeit kein Kalender-Objekt, dann gibt der Kalenderfilter den Eingabewert direkt, also ungeprüft und ohne eine Fehlermeldung oder eine Warnung auszulösen zurück. Dass die Prüfung gescheitert ist, kann dabei nicht festgestellt werden (s. Tabelle zur Fallunterscheidung oben).

images/download/attachments/58596494/image2022-8-9_12-8-8-version-1-modificationdate-1660039688591-api-v2.png

images/download/attachments/58596494/image2022-8-9_13-23-39-version-1-modificationdate-1660044219973-api-v2.png

Die Option Rückwärts springen ist per Standard abgewählt. Dann wird im Kalender (bzw. entlang einer theoretischen "Zeitachse") "vorwärts gesprungen", falls der Eingabewert die "Werktag-Prüfung" (s. o.) nicht besteht.

Wird die Option Rückwärts springen ausgewählt, dann wird bei Bedarf nach Ersatzterminen gesucht, die früher liegen als Eingabewert.

  • Im Beispiel rechts wird ein Kalender "24-3 (MON_WED)" angegeben, der nur Montag, Dienstag und Mittwoch als Werktage definiert. Eingangswerte, die Zeitpunkte zwischen Donnerstag und Sonntag betreffen, werden mit der gezeigten Konfiguration unter Beibehaltung der Uhrzeit auf den vorherigen Mittwoch "vorgezogen".

images/download/attachments/58596494/image2022-8-9_13-45-1-version-1-modificationdate-1660045501902-api-v2.png

Beispiele

Einfache Terminberechnung unter Berücksichtigung von Werktagen

Im Kontext einer Ereignisbehandlung wird die voraussichtlichen Ankunftszeit ("ETA") einer Sendung als "Datum mit Zeit" berechnet.

Da die eintreffende Ware nur bei Eingang an einem Werktag als sofort (bzw. an demselben Kalendertag) verfügbar gilt, soll das berechnete "ETA"-Datum noch mit einem bestehenden Kalender abgeglichen werden, um ein weiteres Datum ("AVAIL") für die effektive Verfügbarkeit der Ware beim Empfänger zur ermitteln.

Der Benutzer soll durch eine Hinweis anzeigen (Popup)-Ereignisaktion über die Kalendertage für "ETA" und "AVAIL" informiert werden.

Laufzeitbeispiel:

images/download/attachments/58596494/image2022-8-9_15-38-57-version-1-modificationdate-1660052337309-api-v2.png

  • Beim Eintreffen der Sendung am Samstag, den 1. Oktober (2022) gilt die gelieferte Ware erst per Dienstag, den 4. Oktober als verfügbar, da der für die Prüfung verwendete Kalender nicht nur das Wochenende (Samstag/Sonntag) sondern auch einen Feiertag am 3. Oktober berücksichtigt.

Konfiguration:

Für die Konfiguration rechts gilt das bereits berechnete "ETA"-Datum (als "Datum mit Zeit") als Bezugsobjekt innerhalb einer Ausführen mit-Ereignisaktion (nicht im Bild).

ANMERKUNG◄ Das Verfügbarkeitsdatum wird hier nur als Kalendertag ohne Uhrzeitkomponenten angezeigt und auch sonst nicht verarbeitet oder gespeichert. Insofern spielt es keine Rolle, dass eine im berechneten "ETA"-Datum enthaltene Uhrzeit ggf. an das "AVAIL"-Datum übergeht. Das folgende Beispiel beschäftigt sich mit diesem Problem.

images/download/attachments/58596494/image2022-8-9_15-27-38-version-1-modificationdate-1660051658075-api-v2.png

Terminberechnung mit bedingter Anpassung der Uhrzeit (nur beim "Vorwärts springen" zum folgenden Werktag)

Das vorige Beispiel soll nun so erweitert werden, dass einerseits die im "ETA"-Datum berechnete Uhrzeit minutengenau in der Meldung erscheint.

Andererseits soll beim "Vorwärts springen" - also wenn das "ETA"-Datum auf einen Kalendertag fällt, der kein Werktag ist - die Uhrzeit für den Verfügbarkeitstermin ("AVAIL") statisch auf die Uhrzeit 07:30 Uhr (am folgenden Werktag) gesetzt werden. Trifft die "ETA" direkt einen Werktag soll die Ware weiterhin als "sofort" verfügbar gelten.

Laufzeitbeispiel:

images/download/attachments/58596494/image2022-8-9_16-40-49-version-1-modificationdate-1660056049474-api-v2.png

  • Beim Eintreffen der Sendung an demselben Wochenende wie im vorigen Beispiel gilt die Ware als verfügbar ab dem folgenden Werktag (hier: Dienstag, 4. Oktober) um 07:30 Uhr.

Konfiguration:

  • Vor der Hinweis anzeigen (Popup)-Ereignisaktion wird eine Fallunterscheidung per Wenn Dann Sonst-Ereignisaktion eingefügt, die in einer Objekt-Feld-Regel abgleicht, ob der Kalenderfilter-Wertauflöser (Einstellungen s. oben) einen vom "ETA"-Datum (Bezugsobjekt) abweichenden Wert liefert. Der Originalwert In jedem Fall wird der Rückgabewert aus dem Kalenderfilter-Wertauflöser über den verketteten Wert als Variable speichern-Wertauflöser in der Variablen avail gespeichert.

  • Liefert der Kalenderfilter einen von seinem Eingabewert abweichenden Rückgabewert, dann wird der Rückgabewert in der Variablen avail im "Dann"-Zweig nachbearbeitet. Eine Setze Wert-Ereignisaktion überschreibt die "ETA"-Uhrzeit im Rückgabewert aus dem Kalenderfilter durch die statisch vorgegebene Uhrzeit (7:30 Uhr). Dies ermöglicht der Relatives Datum mit Zeit-Wertauflöser mit dem Typ "Benutzerndefiniert" und dem folgenden Zeitwert:
    7H 30m 0s 0S.

  • In der nachfolgenden Hinweis anzeigen (Popup)-Ereignisaktion muss nur noch statt dem Kalenderfilter (s. o.) auf die Variable avail zugegriffen werden, um den Verfügbarkeitstermin in der Meldung zu definieren.


images/download/attachments/58596494/image2022-8-9_16-48-49-version-1-modificationdate-1660056529371-api-v2.png

Terminermittlung gegen einen zur Laufzeit "dynamisch" ausgewählten Kalender

Im Kontext einer Ereignisbehandlung soll für eine konkrete Bestellung ermittelt werden, bis zu welchem Termin im laufenden Monat über den für die Bestellung bereits ausgewählten Spediteur noch Teilladungen beauftragt werden können. Je Spediteur sei deshalb für die Terminkoordination ein Kalender mit dem einheitlichen Namen "LTL" angelegt, der wiederkehrende und diskret festgelegte Terminoptionen für die Abwicklung von Teilladungen als "Werktage" abbildet.

Konfiguration:

Die Ereignisbehandlung muss im Kontext der betreffenden Bestellung zunächst den zum ausgewählten Spediteur passenden Kalender ermitteln. Dies ermöglicht eine Suche (Ereignisaktion), die innerhalb einer Ausführen als-Ereignisaktion ausgeführt wird, damit der Lesezugriff für die im Besitz der diversen Spediteure angelegten Kalender gewährleistet ist. Die Suche (Ereignisaktion) soll hier nicht ausführlich beschrieben werden. Sie soll als Tupel-Suche den ersten (und konventionsgemäß: einzigen) Kalender im Besitz eines bestimmten Spediteurs finden, dessen Name "LTL" lautet. Als Projektion wird für den Kalenderfilter nur das Feld id benötigt. Das Ergebnis der Tupel-Suche wird in die Variable LTL@FWD geschrieben.

  • Auf der rechten Seite der Setze Wert-Ereignisaktion wird zunächst über den Relatives Datum mit Zeit-Wertauflöser das "Ende des Monats" (END_THIS_MONTH) ermittelt. Dieses "Datum mit Zeit" wird per Verkettung als Eingabewert an einen Kalenderfilter-Wertauflöser übergeben.

  • Im Kalenderfilter-Wertauflöser wird für die "Werktag-Prüfung" auf den für den relevanten Spediteur ermittelten Kalender verweisen, indem dem Parameter Kalender das Objekt-Feld id aus dem Suchergebnis in der Variablen LTL@FWD zugewiesen wird.

  • Die Option Rückwarts springen sorgt dafür, dass der Variablen LTL_ultimate (auf der linken Seite der Setze Wert-Ereignisaktion) der späteste im Kalender des Spediteurs als Werktag definierte Kalendertag zurückgegeben wird, der vor dem Ende des aktuellen Monats liegt.

ANMERKUNG◄ Der Fall, dass der LTL_ultimate-Termin zum Zeitpunkt der Anfrage bereits in der Vergangenheit liegt, wird hier nicht gesondert behandelt.

images/download/attachments/58596494/image2022-8-9_17-40-36-version-1-modificationdate-1660059637083-api-v2.png

Laufzeitbeispiel:

Ein Spediteur bietet Transporte für Teilladungen laut seinem "LTL"-Kalender grundsätzlich nur Donnerstags an. Eine Abfrage für den LTL_ultimate-Termin im August 2022 ergibt den rechts dargestellten Wert, der auf den Kalendertag "Donnerstag, 25 August 2022" verweist.

ANMERKUNG◄ Der Millisekunden-Wert im Feld dateValue in der Darstellung rechts zeigt, dass sich die Uhrzeit (23:59:59.999) aus dem Eingangswert ("Ende des Monats") auch im Rückgabewert des Kalenderfilters spiegelt.

Ausschnitt aus dem
<entry>
<key xsi:type="xsd:string">LTL_ultimate</key>
<value dateValue="1661464799999" timeZone="Europe/Berlin" xsi:type="core:DateTime"/>
</entry>

Terminversatz um eine vorgegebene Anzahl von Werktagen

Ausgehend von einem - hier als "Datum mit Zeit"-Wert in der Variablen start - vorgegebenen Datum soll im Abgleich mit einem bestimmten Kalender ein Zieldatum (end) ermittelt werden, das eine bestimmte Anzahl von Werktagen (offset) nach dem start liegt.

Konfiguration:

Innerhalb einer Ereignisaktion iteriert die rechts abgebildete Für jeden Eintrag wiederholen (Schleife) über die Variable offset, die die Anzahl der Werktage ab start als Ganzzahl definiert:

  • Die Setze Wert-Ereignisaktion innerhalb der Schleife soll bei jeder Iteration der Variablen end den "nächsten" Werktag zuweisen.

  • Die ermöglichst (rechts im Bild) eine Verkettung der folgenden Wertauflöser:

    • Als Ausgangswert für die Verkettung soll je Iteration der bisherige Wert der Variablen end dienen.

    • In der ersten Iteration enthält end (hoffentlich!) noch keinen Wert. Dann weist der verkettete Standardwert-Wertauflöser den eigentlichen Startwert aus der Variablen start zu.

    • Der nachfolgende Relatives Datum mit Zeit-Wertauflöser addiert mit dem Typ "Benutzerdefiniert" und dem Zeitwert +1d genau einen Kalendertag zum Eingabewert.

    • Der verkettete Kalenderfilter-Wertauflöser prüft, ob der als Eingabewert anliegende Kalendertag im Statisch ausgewählten Kalender "24-5 (MON_FRI)" ein Werktag ist.

      • Trifft dies zu, wir dieser Wert zurückgegeben.

      • Anderenfalls wird durch "Vorwärts springen" der nächste Werktag im Kalender ermittelt und zurückgegeben.

Am Ende sollten zwischen start und end genau so viele Werktage (nach dem ausgewählten Kalender) Differenz liegen, wie in der Variable offset angegeben wurde.

ANMERKUNG◄ Die hier gezeigte Konfiguration setzt voraus, dass der Wert der Variablen offset>0 ist und die Variable end zu Beginn noch keinen Wert ($null) enthält.

images/download/attachments/58596494/image2022-8-9_19-2-8-version-1-modificationdate-1660064528159-api-v2.png