1.1k Aufrufe
Gefragt in SW-Sonstige von mherborn Mitglied (186 Punkte)
Hallo Zusammen,

ich möchte in Adobe Reader Pro Arbeitszeiten berechnen. Die Felder sind:

- Uhrzeit Beginn

- Uhrzeit Ende

- Pause (in Stunden und Minuten)

- Ergebnis in Stunden ( Uhrzeit Beginn - Uhrzeit Ende - Pause )

- Ergebnis in Arbeitswerten ( 1 Arbeitswert entspricht 10 Minuten)

Ich beiß mir schon seit Tagen die Zähne daran aus und komme einfach nicht weiter. Ich bin auch kein Java Skript könner. Vielleicht kann mir ja hier einer helfen.

Vielen Dank im Voraus

Grüße Michael

6 Antworten

+1 Punkt
Beantwortet von kody Experte (2.9k Punkte)
ausgewählt von mherborn
 
Beste Antwort

Hallo Michael,

ich kenne mich zwar auch nicht damit aus, aber hier ein Tipp, wo du was dazu finden kannst.
Schau dir mal diesen Artikel an https://helpx.adobe.com/de/sign/using/calculated-fields.html
vielleicht hilft er dir weiter.

MfG, Kody

0 Punkte
Beantwortet von mherborn Mitglied (186 Punkte)
Hallo Kody,

mit meinen Java Kenntnissen (mies) hilft mir das nicht wirklich weiter...
–1 Punkt
Beantwortet von kody Experte (2.9k Punkte)
Bearbeitet von kody

Vielleicht meldet sich noch ein Spezialist für dein PDF-Proble.
In der Zwischenzeit gibt es für deine Weiterbildung hier https://www.luis.uni-hannover.de/fileadmin/kurse/material/pdfWorkWithAcrobat/adobe_JavaScript.pdf
einen Leitfaden für die Berechnungen mit JavaScript in PDF-Dokumenten. Ohne gewisse Grundkenntnisse wirst du da nicht weiter kommen. Es sei denn, es findet sich Einer, der dir die komplette PDF nach deinen Wünschen erstellt.

Gruß Kody

0 Punkte
Beantwortet von mherborn Mitglied (186 Punkte)
Hallo,

ich habe eine Lösung mit einem "kleinen Problem" gefunden, die wie folgt aussieht:

var cStart = this.getField("start_time_1").value;
var cStop = this.getField("stop_time_1").value;
var cPause = this.getField("pause_time_1").value;
cNull = "00:00"
if (cStart != "" && cStop != "") {
    var tStart = parseTime(cStart);
    var tStop = parseTime(cStop);
    var tPause = parseTime(cPause);    
    tNull=parseTime(cNull);
var total = ((6*(tStop - tStart)/(1000*60*60)) - (6*(tPause - tNull)/(1000*60*60)));
    
    event.value = (total < 0 ? total += 24 : total);
}
else {
    event.value = "";
}

Mein Problem ist nur, dass wenn in pause_time_1 nichts eingetragen wird, ein falscher Wert berechnet wird. Kann man die obere Formel so ändern, dass wenn pause_time_1 leer ist, der Wert 00:00 übernommen wird?

Danke für Eure Hilfe

Grüße Michael
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)

Hallo Michael,

was landet in der Variable cPause, wenn bei pause_time_1 nichts eingegeben wurde. Falls es ein Leerstring ist, könnte nach der Übernahme eine if-Abfrage helfen also etwa:

var cPause = this.getField("pause_time_1").value; // Das ist deine Codezeile zur Übernahme
if cPause == "" {
    cPause = "00:00"
}

Gruß computerschrat

0 Punkte
Beantwortet von mherborn Mitglied (186 Punkte)
Hallo Computerschrat,

super, es funktioniert. Nur hast Du eine Klammer vergessen. Es müsste heissen:

if (cPause == "") {
    cPause = "00:00"

Nochmals vielen Dank

Grüße Michael
...