jr
Senior Mitglied
   
Offline
Geschlecht: 
Beiträge: 260

Bitte keine eierlegenden Wollmilchsäue...
|
 |
« am: 21.06.05 - 09:11:06 » |
|
Hallo,
noch eine weitere @Formel, die vielleicht für einige interessant ist. Häufig hat man dass Problem, dass man in einem kleinen Workflow die Arbeitstage benötigt, weil z. B. nach 3 Arbeitstagen eine Eskalation stattfinden muss. Wenn man das richtig machen möchte, dann muss man Wochenden und Feiertage berücksichtigen und ist die Berechnung nicht mehr ganz trivial.
In der nachfolgenden Formel wird davon ausgegangen, dass die Liste der Feiertage in der Variablen "feierTage" als Text-Liste gespeichert ist (bei uns war das damals ein Konfiguratoinsdokument). Außerdem gibt es noch eine Liste mit halben Feiertagen, sofern der Arbeitgeber diese nicht als vollständig frei definiert.
Mit LotusScript geht das natürlich deutlich einfacher, aber damals war das noch keine Option und außerdem kann man die Formel so leichter in ein berechnetes Feld aufnehmen
Vielleicht kann ja der ein oder andere die Formel gebrauchen.
REM "Berechnung der Arbeitstage zwischen VON und BIS";
von := ...; bis := ...;
feierTage := "1.1.2005" : "6.1.2005" : ...; halbeTage := "24.12.2005" : "31.12.2005" : ...;
alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis))); alleTage := @TextToTime(alleTageStr); wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1" : "7"; "x" : "x") + alleTageStr; wochenende := @Trim(@Right(wochenendeStr; "x")); freieTage := @Unique(feierTage : wochenende); arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); "")); halbeArbTage := @Keywords(arbeitsTage; halbeTage; "");
anzahlTage := @Elements(arbeitsTage) - (@Elements(halbeArbTage) / 2); anzahlTage
Passend hierzu habe ich auch noch die Formel zu berechnen des n-ten Arbeitstags ab einem bestimmten Datum. Es werden die gleichen Konfigurationswerte wie oben benutzt.
REM "Berechnung des n-ten Arbeitstage ab VON";
von := ...; n := ...;
feierTage := "1.1.2005" : "6.1.2005" : ...; halbeTage := "24.12.2005" : "31.12.2005" : ...;
bis := @Adjust(von; n; 0; 0; 0; 0; 0); alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis))); alleTage := @TextToTime(alleTageStr); wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1" : "7"; "x" : "x") + alleTageStr; wochenende := @Trim(@Right(wochenendeStr; "x")); freieTage := @Unique(feierTage : wochenende : halbeTage); arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); ""));
zielDatum := @Date(@TextToTime(@Subset(@Subset(arbeitsTage; n); -1))) zielDatum
Gruß,
Joachim
|
|
|
|
|
Gespeichert
|
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MNoering
Frischling

Offline
Beiträge: 6
|
 |
« Antworten #8 am: 14.03.11 - 15:08:44 » |
|
Hallo an Alle, ich weiß, dass dieser Thread schon etwas älter ist, aber er beschreibt genau das Problem, welches ich gerade habe. Ich habe das unten zitierte Codefragment in eine Datenbank implementiert und die Berechnung der Arbeitstage funktioniert hervoragend. Hallo,
noch eine weitere @Formel, die vielleicht für einige interessant ist. Häufig hat man dass Problem, dass man in einem kleinen Workflow die Arbeitstage benötigt, weil z. B. nach 3 Arbeitstagen eine Eskalation stattfinden muss. Wenn man das richtig machen möchte, dann muss man Wochenden und Feiertage berücksichtigen und ist die Berechnung nicht mehr ganz trivial.
In der nachfolgenden Formel wird davon ausgegangen, dass die Liste der Feiertage in der Variablen "feierTage" als Text-Liste gespeichert ist (bei uns war das damals ein Konfiguratoinsdokument). Außerdem gibt es noch eine Liste mit halben Feiertagen, sofern der Arbeitgeber diese nicht als vollständig frei definiert.
Mit LotusScript geht das natürlich deutlich einfacher, aber damals war das noch keine Option und außerdem kann man die Formel so leichter in ein berechnetes Feld aufnehmen
Vielleicht kann ja der ein oder andere die Formel gebrauchen.
REM "Berechnung der Arbeitstage zwischen VON und BIS";
von := ...; bis := ...;
feierTage := "1.1.2005" : "6.1.2005" : ...; halbeTage := "24.12.2005" : "31.12.2005" : ...;
alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis))); alleTage := @TextToTime(alleTageStr); wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1" : "7"; "x" : "x") + alleTageStr; wochenende := @Trim(@Right(wochenendeStr; "x")); freieTage := @Unique(feierTage : wochenende); arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); "")); halbeArbTage := @Keywords(arbeitsTage; halbeTage; "");
anzahlTage := @Elements(arbeitsTage) - (@Elements(halbeArbTage) / 2); anzahlTage
Passend hierzu habe ich auch noch die Formel zu berechnen des n-ten Arbeitstags ab einem bestimmten Datum. Es werden die gleichen Konfigurationswerte wie oben benutzt.
...
Gruß,
Joachim
Allerdings funktioniert die Übergabe der Feiertage aus einem Profildokument nicht. Meine Lösung: Profildokument Feld:- Feldname: f_tage
- Mehrfachwerte zulassen: Ja
- Trennzeichen: Neue Zeile
Berechnen Button: REM {Berechnung der Arbeitstage zwischen VON und BIS};
von := StartDate; bis := EndDate;
FeierTage := @GetProfileField("config";"f_tage"); halbeTage := "24.12.2005" : "31.12.2005" : ...;
alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis))); alleTage := @TextToTime(alleTageStr); wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1":"7" ; "x":"x") + alleTageStr; wochenende := @Trim(@Right(wochenendeStr; "x")); freieTage := @Unique(FeierTage : wochenende); arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); "")); halbeArbTage := @Keywords(arbeitsTage; halbeTage; "");
anzahlTage := @Elements(arbeitsTage) - (@Elements(halbeArbTage) / 2); FIELD UTage := anzahlTage; @True
Meine Frage - wie kann ich die Feiertagsliste am besten aus einem Profildokument übergeben? Freundliche Grüße Mathias
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MNoering
Frischling

Offline
Beiträge: 6
|
 |
« Antworten #18 am: 15.03.11 - 16:22:09 » |
|
Lotus/ Domino und seine Mysterien  ... Werd's jetzt erstmal so lassen- nur noch das Feld verstecken in der Arbeitsmaske und fertig. Ich danke allen für ihre Lösungsvorschläge, insbesondere dem Peter, der ja quasi eine Reaktionszeit von 30 Sekunden hat  . Falls einem Crack in Sachen Profildokumente noch Einfälle kommen sollten, bin ich natürlich trotzdem interessiert diese zu lesen  In dem Sinne Freundliche Grüße Mathias EDIT: Noch einmal einen schönen Gruß in die Runde- wollte nur kurz noch vermerken lassen, dass ich es geschafft habe, die Daten direkt aus dem Profil verwerten zu können ohne den Umweg über's Feld nehmen zu müssen. Das Stichwort heißt "Lotus-/ Dominohilfe"- noch einmal ein neues Profildokument nach dortiger Anleitung erstellt (haarklein bis auf den Punkt zu befolgen) und was soll ich sagen- es funktioniert. Mein Fehler beim ersten Profil war wohl, dass es in einer Ansicht angezeigt wurde und/ oder die Erstellung des Profils nicht über die Aktion @Command([EditProfileDocument];Profilname;Schlüssel) erfolgte. Deshalb auch nochmals obigen Aufruf an die Profil-Cracks durchgestrichen...
|
|
|
|
« Letzte Änderung: 16.03.11 - 10:46:17 von MNoering »
|
Gespeichert
|
|
|
|
|
|