Die beiden Skripte "Feiertage" und "Urlaubstage" wurden komplett überarbeitet. Grund: Gegenüber der Ur-Version sollte ein Skript geschaffen werden, dass die Berechnungen der Feiertage nur 1x im Jahr durchführt - da sich diese ja auch in der Regel nicht ändern - und an den restlichen Tagen lediglich "nachschaut", ob ein Feiertag vorliegt. Zudem sollte die gesamte Berechnung so überarbeitet werden, dass nur noch mit Jahrestagen gerechnet wird. Das ermöglicht eine einheitliche Verwendung in beiden Skripten (Urlaubstage- & Feiertage-Skript) und vereinfacht sowohl die Auswertung, als auch in dem einen oder anderen Fall die Angabe eigener Feiertage. Zudem werden auch die Namen der Feiertage mit verarbeitet und, im Urlaubstageskript, können die Tage bis zum Urlaub angezeigt werden. Das erfolgt so zu sagen ganz nebenbei ohne zusätzlichen Programmcode.
Es existieren ab sofort für beide Skripte zwei Versionen. Eine "Complete-Version" und eine "Compact-Version".
Complete-Version: Ein voll funktionsfähiges, übersichtlich formatiertes und ausführlich kommentiertes Skript. Aufgrund seiner Größe ist diese Skript in erster Linie für die Ersteinrichtung oder zum testen gedacht. Ebenso ist dieses Skript für Anfänger zum ausprobieren (learning by doing) geeignet, da der Programmcode ausführlich dokumentiert ist. Es ist eine DEBUG-Funktion vorhanden, mit der man sich zu einem beliebigen Datum die Werte in der Testumgebung der WebUI ausgeben lassen und dadurch den Programmcode analysieren kann.
Compact-Version: Diese Variante ist für den Dauereinsatz gedacht. Es hat die selben Funktionen wie die Complete-Version, jedoch wurde der Programmcode reduziert (keine Formatierung, Kommentare ,DEBUG- sowie SV-Check-Funktion) => größen- sowie laufzeitoptimiert.
Beschreibung:
Skript Feiertage: Das Skript ermittelt anhand einer vorgegebenen Feiertagsliste, ob heute und/oder morgen ein Feiertag vorliegt und hinterlegt das Ergebnis in eine Systemvariable.
- Die Berechnung der Feiertagsdaten erfolgt nur 1x jährlich. Die Prüfung auf Feiertag natürlich täglich.
- Die Namen der Feiertage werden ebenfalls verarbeitet und chronologisch in einer Systemvariablen hinterlegt. Dadurch ist eine Auswertung in anderen Programmen bzw. Skripten möglich.
- Berechnungen wurden überarbeitet: Ohne ToTime() und mit Jahrestagen statt mit Datumsangaben => Code kompakter.
- Alle benötigten Systemvariablen können vom Skript automatisch angelegt und geprüft werden (deaktivierbar ; nur Complete-Skript) => weniger Arbeit beim Einrichten und für Anfänger geeignet.
- Abgelaufene, alte Daten werden automatisch aus dem Datensatz der SV entfernt => weniger Pflegeaufwand.
- Datumsangaben mit Jahresangabe möglich, um auch über die Jahresgrenze hinweg in die Zukunft planen zu können.
- Tage bis zum nächsten Urlaubstag werden - praktisch als Nebenprodukt - ebenfalls ermittelt und "optional" in einer SV abgelegt.
- Urlaubsdaten in der SV können, müssen aber nicht, chronologisch angegeben werden (Einstellmöglichkeit).
- Alle benötigten Systemvariablen können vom Skript automatisch angelegt und geprüft werden (deaktivierbar ; nur Complete-Skript) => weniger Arbeit beim Einrichten und für Anfänger geeignet.
Dieses Skript wurde zwecks Codereduzierung aus dem ursprüngichen Feiertagsskript "entkoppelt" sowie aufgrund der Tatsache, dass man seine CCU in der Regel an ein und dem selben Standort betreibt.
Einrichtung Skript Feiertage: (ab Version 3)
- Gehe in der CCU unter "Programme und Verknüpfungen" -> "Programme und Zentralenverknüpfungen" -> "Skript testen" und füge dort das Skript "Feiertagsliste" ein. Definiere im Skript deinen Standort (Staat & Bundesland bzw. Kanton). Eventuell in den nachfolgende Zeilen noch einige Brauchtums- oder sonstige Feiertage. Klicke dann auf "Ausführen".
- Kopiere die im Ausgabefenster angezeigte komplette Code-Zeile inkl. der Feiertage und ersetze im Skript "Feiertage - Complete" die vorhandene Beispielzeile. Setze zudem die Systemvariablen b_debug und b_CheckSV jeweils auf den Wert true (Ab Zeile 117).
- Erstelle nun unter "Programme und Verknüpfungen" -> "Programme und Zentralenverknüpfungen" ein neues Programm.
Unter "Bedingung: Wenn..." wählst du ein Zeitmodul, dass zum Zeitpunkt täglich nachts (z.B. 00:05 Uhr) ausgeführt wird.
Unter "Aktivität: Dann..." wählst du Skript aus und klickst auf die 3 Punkte. Dort fügst du das unter Punkt 2 von dir editierte Skript "Feiertage - Complete" ein und klickst 1x auf den Button "Ausführen". Im Ausgabefenster erhälst du nun die Bestätigung, dass die benötigten Systemvariablen automatisch angelegt wurden. - Falls du jetzt das "Complete-Skript" dauerhaft einsetzen möchtest, dann setze die Systemvariablen b_debug und b_CheckSVs wieder zurück auf den Wert false.
Meine Empfehlung ist allerdings der Einsatz des Feiertage-Compact Skripts. Beim Compact-Skript musst du dann nur noch die unter Punkt 1. erzeugte komplette Code-Zeile mit den Feiertagen einfügen bzw. die vorhandene Beispielzeile ersetzen.
Die Berechnung der Feiertagsdaten erfolgt nur zu Jahresbeginn, da sich die Feiertage "in der Regel" nicht ändern. Sollten sich die Feiertage doch einmal im laufenden Jahr ändern, weil z. B. der Gesetzgeber dieses so entschieden hat, dann kann man die Berechnung, wie nachfolgend beschrieben, erzwingen.
- Gehe zum Programm, dass täglich das Feirtagsskript aufruft und öffne das Skript zum bearbeiten.
- Generiere mit Hilfe des Skripts "Feiertagsliste" eine Code-Zeile mit den neuen Feiertagen und füge diese in das Feiertagsskript ein.
- Setzte danach im Skript die Variable b_calc auf den Wert true (Im Complete-Skript Zeile 121) und klicke im Editorfenster einmal auf "Ausführen". Damit werden die neuen Feiertagsdaten berechnet.
- Setzte abschließend die Skriptvariable b_calc wieder auf den Standardwert (false) zurück.
- Gehe in der CCU unter "Programme und Verknüpfungen" -> "Programme und Zentralenverknüpfungen" und erstelle ein neues Programm mit der Bedingung, dass dieses 1x täglich (z.B. um 0:01Uhr) ausgeführt wird.
- Unter Aktivität füge das Urlaubstage-Complete Skript ein und setze in den Zeilen 89 und 91 die Systemvariablen b_debug und b_CheckSVs jeweils auf true und klicke dann einmal auf "Ausführen". Im Ausgabefenster erhälst du nun die Bestätigung, dass die benötigten Systemvariablen automatisch angelegt wurden.
- Wenn du das Urlaubstage-Complete Skript verwenden möchtest, dann setze in den Zeilen 89 und 91 die Systemvariablen b_debug und b_CheckSVs wieder zurück auf false und klicke dann auf "OK".
Alternativ kannst du aber auch das Complete-Skript löschen und durch das identische Compact-Skript ersetzen.
Gruß
Petrus
Downloads
Feiertage - aktuelle Skripte:
. .
Urlaubstage - aktuelle Skripte:
. .
Urlaubstage - Spezialscript:
Aufgrund der Nachfrage einiger Forenuser habe ich das Originalskript erweitert.
Neben Urlaub-Heute/-Morgen werden im Skript auch Schulferien-Heute/-Morgen und Wochenende-Heute/-Morgen mit verarbeitet.
Downloads: HIER
.
Alte Skripte - nicht mehr weiterentwickelt:
.