Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Caleb666 am 09.01.20 - 09:21:47

Titel: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 09.01.20 - 09:21:47
Guten Morgen,

ich möchte gerne die Differenz zwischen zwei Zeit-/Datumsfeldern ohne Wochenende und Feiertage in Formeldsprache berechnen, jedoch
nicht in Tagen wie z.B. über @BusinessDays sondern in Stunden, da ich als Ergebnis mit Stundenwerten weiterarbeiten möchte (wie z.B. Bearbeitung erfolgte innerhalb 24-72h, etc.

Wie könnte ich das lösen?
Gibt es hierfür auch eine einfache Funktion in Formelsprache?
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Andrew Harder am 09.01.20 - 10:43:19
Warum multiplizierst Du die Tage bei @BusinessDays nicht einfach mit der Anzahl der Arbeitsstunden?
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 09.01.20 - 11:33:34
Da es mir nicht um die Anzahl der Arbeitsstunden geht, sondern um die tatsächliche Differenz zwischen den zwei Zeitwerten, aber ohne Wochenende.
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Andrew Harder am 09.01.20 - 11:35:00
Also mit dem Multiplikator 24?
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 09.01.20 - 11:38:30
Also wenn z.B. eine Anfrage um 15:30 rein kommt und 48h für die Bearbeitung zur Verfügung stehen, möchte ich gerne prüfen können, ob dieses Zeitfenster überschritten wurde.
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: eknori am 09.01.20 - 11:41:27
multipliziere die Anzahl der Businessdays mit 24 und ziehe von dem Ergebnis die Differenz zwischen 15:30 und 24:00 ab
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Bastel123 am 09.01.20 - 11:57:10
Ich würde beim Anlegen des Dokumentes das maximale Enddatum berechnen und reinschreiben.

Dann kannst Du einfach mit größer oder kleiner arbeiten.
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 09.01.20 - 12:11:36
Stimmt, wenn ich es gleich bei der Anlage berechne, tue ich mich leichter.
Vielen Dank an alle für die tollen Lösungsansätze!!!
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Andrew Harder am 09.01.20 - 12:43:29
In dem Fall würde ich dann eher mit @Weekday und @Adjust arbeiten.
Das ist dann später einfacher für samstags und sonntags zu erweitern.
Außerdem sieht die Formel dann übersichtlicher aus.

In etwa so:
Code
_weekday := @Weekday(@Created);
_adjust := @If(
	_weekday = 1; 3;
	_weekday = 2; 2;
	_weekday = 3; 2;
	_weekday = 4; 2;
	4);
@Adjust(@Created; 0; 0; _adjust; 0; 0; 0)

Feiertage berücksichtigt das natürlich nicht!
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Bastel123 am 09.01.20 - 13:51:27
Außerdem würde ich ein Feld einführen im dem steht, ob die Zeit überschritten wurde oder nicht.
Dieses Feld wird durch einen periodischen Agenten gesetzt.

Dann brauchst Du keine Ansichten mit @now im Vergleich und kannst auch leichter Auswertungen programmieren.
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 09.01.20 - 17:50:29
Für neue Dokumente werden ich den Ansatz von "bastel123" verwenden und das Enddatum der Bearbeitung gleich mit setzen und die spätere Abfrage mittels eines Agenten laufen lassen.

Für bestehende Dokumente tue mich mich gerade noch etwas schwer.
Habe ja ein Anfangs- und Bearbeitungsdatum mit Uhrzeit.

Um erst mal die Anzahl an Stunden für den ganzen Tag zu erhalten (unter Berücksichtigung des Wochenendes) muss ich ja mittels @BusinessDays das Ergebnis mit 24 multiplizieren.

Im Anschluss ziehe ich zum einen die Differenz zwischen den bereits vergangenen Stunden des Anfangsdatums von 24h ab
und zu anderen die Differenz zwischen den bereits vergangenen Stunden des Enddatums von 24h ab.

Code
@BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage])*24 - ( 24 -@Hour(Eingang)) - (24 -@Hour(Bearbeitung)) 

Irgendwo hab ich jedoch einen Denkfehler, da die Ergebnisse nur teilweise passen... ??? ???

Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: HH am 09.01.20 - 20:33:09
Ich gehe davon aus, dass Eingang und Bearbeitung weder Wochenendtage noch Feiertage sind.

Code
_freieZeitInSekunden := (@BusinessDays(Eingang; Bearbeitung ) - @BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage]) )  *24*60*60 ;
_arbeitszeitInSekunden := Bearbeitung - Eingang - _freieZeitInSekunden ;

Daraus dann die Stunden zu ermitteln sollte machbar sein.

Dein code, wie folgt geändert

Code
@BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage])*24 - ( 24 -@Hour(Eingang)) - @Hour(Bearbeitung)

dürfte auch funktionieren (ist allerdings ungenauer).

Gruß
Hubert
Titel: Re: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN
Beitrag von: Caleb666 am 10.01.20 - 13:58:28
Danke, der Code
Code
_freieZeitInSekunden := (@BusinessDays(Eingang; Bearbeitung ) - @BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage]) )  *24*60*60 ;
_arbeitszeitInSekunden := Bearbeitung - Eingang - _freieZeitInSekunden ;

funktioniert wunderbar!!!