Hallo liebe Adobe Acrobat Gemeinde!
Ich würde gerne eine kleine Wochen-Arbeitszeitaufzeichnung erstellen.
Ich hab schon einiges herumprobiert aber komm leider nicht auf die ideale Lösung, deswegen mal hier mein ansuchen.
Folgende Dinge sollen die Mitarbeiter eingeben können...
AZ-Beginn | AZ-Ende | Pause-Beginn | Pause-Ende | Normalstunden (nicht jeder arbeitet 8 Stunden am Tag)
Der Rechenweg sollte eigentlich so funktionieren ==> (AZEnde - AZBeginn) - (PauseEnde - PauseBeginn)
Das Ergebnis solte dann in der Zelle "geleistet" erscheinen (idealerweise in HH:MM Format) bei mir fehlt immer der " : " in der Mitte
Dann sollte das Formular noch " geleistet - Normalstunden " rechnen und das Ergebnis in die "+ - Stunden" Spalte eintragen
Wir haben bei uns in der Firma auch Nachtdienste, daher sollte das Formular so eine Art "if (Zeit Arbeitbeginn) > (Zeit Arbeitsende) + 24 Stunden" haben.
Wie ich das umsetze ==> leider keine Ahnung
Ich kenne mich mit Java leider nicht aus, deswegen hab ich versucht das ganze mit einfachen Calc zu lösen ==> Ergebnis: es funktioniert nicht
Die PDf Datei "Stundennachweis_Rechner" hab ich gesehen ==> komm damit leider nicht weiter
Vielen DANK schonmal im vorhinein für eure unterstützung
Liebe Grüße
Arbeitszeitaufzeichnung (1 Woche)
Arbeitszeitaufzeichnung (1 Woche)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Arbeitszeitaufzeichnung (1 Woche)
Hallo cheriour,
um mit LCD etwas zu erreichen, muss man sich doch eteas mit denangebotenen Programiersprachen beschäftigen. Da lernt man schnell, dass die das Rechnen mit Uhrzeiten alle nicht mögen und workarounds gesucht werden müssen.
Bei den Pausen war ich großzügig und habe mit Blick auf die Arbeitszeitordnung eine zweite spendiert. Wenn ich aber statt der bezahlen 15 Min. mal 20 nehme und ehrlich sein will ... Von mir aus, schmeiß’ sie raus.
Deine Doppelpunkte kannst du haben. Die kriegst du auch, wenn du Punkt oder Komma eingibst.
Nachtschicht geht auch, aber ob die Pausen innerhalb der Arbeitszeit liegen und gesetzlichen und tariflichen Anforderungen genügen, wird nicht kontrolliert.
Abweichungen von der durchschnittlichen Tagesarbeitszeit werden nicht nicht täglich errechnet. Einmal für die Woche sollte genügen.
Die Woche wird mit dem "datepicker" (erzwungener Weise) gewählt. Egal welcher Tag angeklickt wird, die Woche fängt am Montag an. Die Tage bekommen auch das Tagesdatum und der Sonntag ist in Rot (s/w-Code ist auskommentiert).
vg armine
um mit LCD etwas zu erreichen, muss man sich doch eteas mit denangebotenen Programiersprachen beschäftigen. Da lernt man schnell, dass die das Rechnen mit Uhrzeiten alle nicht mögen und workarounds gesucht werden müssen.
Bei den Pausen war ich großzügig und habe mit Blick auf die Arbeitszeitordnung eine zweite spendiert. Wenn ich aber statt der bezahlen 15 Min. mal 20 nehme und ehrlich sein will ... Von mir aus, schmeiß’ sie raus.
Deine Doppelpunkte kannst du haben. Die kriegst du auch, wenn du Punkt oder Komma eingibst.
Nachtschicht geht auch, aber ob die Pausen innerhalb der Arbeitszeit liegen und gesetzlichen und tariflichen Anforderungen genügen, wird nicht kontrolliert.
Abweichungen von der durchschnittlichen Tagesarbeitszeit werden nicht nicht täglich errechnet. Einmal für die Woche sollte genügen.
Die Woche wird mit dem "datepicker" (erzwungener Weise) gewählt. Egal welcher Tag angeklickt wird, die Woche fängt am Montag an. Die Tage bekommen auch das Tagesdatum und der Sonntag ist in Rot (s/w-Code ist auskommentiert).
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Arbeitszeitaufzeichnung (1 Woche)
Hallo!!!
Vorerst mal .. ==> .. DANKE
So in der Art hab ich mir das vorgestellt.
Ich hab mir das ganz jetzt mal genauer angeschaut, musste aber leider feststellen, dass du alles in Java programmiert hast. Leider kenne ich mich damit nicht wirklich aus.
Ich dachte mir zuerst das ganze mit LCD wäre einfacher, bin jedoch nun eines besseren belehrt worden.
(Hab bisher nur einfache Formulare erstellt ohne Berechnungen)
----------------------------------------------
Darf ich dich vielleicht noch um eine kleine (ich denke es ist klein) Änderung im Formular bitten??
+ Bitte nur eine Pause
+ Das Feld Wochenarbeitszeit nicht in die berechnung einbeziehen
+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag)
( es gibt Tage da hat man 9 Stunden Dienst, dann wieder nur 6 Stunden, usw. ..... wenn die tägliche Normal AZ erreicht ist beginnen die Überstunden)
+ Arbeitsstunden - Normal AZ = Überstunden (sollten mit 2 multipliziert werden)
(Bsp.: wenn ich normalerweise von 8 - 16 Uhr arbeite, ich aber bis 17 Uhr Arbeiten muss, dann hab ich 2 Überstunden)
Falls das nicht alzuviel aufwand ist, könntest du das so ändern??
PS: Ich weiß dieses Forum sollte nur zur Unterstützung dienen, leider hab ich aber gerade gemerkt, dass bei mir Bahnhof is.
DANKE
Vorerst mal .. ==> .. DANKE
So in der Art hab ich mir das vorgestellt.
Ich hab mir das ganz jetzt mal genauer angeschaut, musste aber leider feststellen, dass du alles in Java programmiert hast. Leider kenne ich mich damit nicht wirklich aus.
Ich dachte mir zuerst das ganze mit LCD wäre einfacher, bin jedoch nun eines besseren belehrt worden.
(Hab bisher nur einfache Formulare erstellt ohne Berechnungen)
----------------------------------------------
Darf ich dich vielleicht noch um eine kleine (ich denke es ist klein) Änderung im Formular bitten??
+ Bitte nur eine Pause
+ Das Feld Wochenarbeitszeit nicht in die berechnung einbeziehen
+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag)
( es gibt Tage da hat man 9 Stunden Dienst, dann wieder nur 6 Stunden, usw. ..... wenn die tägliche Normal AZ erreicht ist beginnen die Überstunden)
+ Arbeitsstunden - Normal AZ = Überstunden (sollten mit 2 multipliziert werden)
(Bsp.: wenn ich normalerweise von 8 - 16 Uhr arbeite, ich aber bis 17 Uhr Arbeiten muss, dann hab ich 2 Überstunden)
Falls das nicht alzuviel aufwand ist, könntest du das so ändern??
PS: Ich weiß dieses Forum sollte nur zur Unterstützung dienen, leider hab ich aber gerade gemerkt, dass bei mir Bahnhof is.
DANKE
Arbeitszeitaufzeichnung (1 Woche)
Hallo cheriour,
der Reihe nach:
in Java ist da gar nichts. Java ist für Programmierer. Verwendet habe ich neben FormCalc noch JavaScript, nämlich immer dann, wenn ein Code für viele Felder (z.B.: 4 Uhrzeiten mal 7 Tage ~ 28 Feldern) gebraucht wird. Der Code steckt dann als "function" in "Skripte" (zu finden am Fuß der Hierarchie).
"LCD wäre einfacher", als was? Mir fällt da nichts ein, wenn ich mit PDF arbeiten will.
Änderungen gerne, aber dann muss ich das verstehen.
"Bitte nur eine Pause" – erl.
"+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag)" - erl.
"wenn die tägliche Normal AZ erreicht ist beginnen die Überstunden)" - erl.
"Das Feld Wochenarbeitszeit nicht in die berechnung einbeziehen" - ???
"+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag) - erl.
"+ Arbeitsstunden - Normal AZ = Überstunden (sollten mit 2 multipliziert werden) - kann gemacht werden - aber
- ich sehen nicht, wie Fehlzeiten nach diesen Vorgaben ausgeglichen werden.
- gilt Mehrarbeit an einem Tag generell als Überstunde? Oder bei Teilzeitarbeit erst, wenn die Regelarbeitszeit überschritten wird?
- gibt es auch für Arbeit am Samstag, Sonntag oder in der Nacht Zuschläge?
- ist sonst noch etwas zu berücksichtigen?
vg armine
der Reihe nach:
in Java ist da gar nichts. Java ist für Programmierer. Verwendet habe ich neben FormCalc noch JavaScript, nämlich immer dann, wenn ein Code für viele Felder (z.B.: 4 Uhrzeiten mal 7 Tage ~ 28 Feldern) gebraucht wird. Der Code steckt dann als "function" in "Skripte" (zu finden am Fuß der Hierarchie).
"LCD wäre einfacher", als was? Mir fällt da nichts ein, wenn ich mit PDF arbeiten will.
Änderungen gerne, aber dann muss ich das verstehen.
"Bitte nur eine Pause" – erl.
"+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag)" - erl.
"wenn die tägliche Normal AZ erreicht ist beginnen die Überstunden)" - erl.
"Das Feld Wochenarbeitszeit nicht in die berechnung einbeziehen" - ???
"+ Neues Feld ==> Normal Arbeitszeit (für jeden Tag) - erl.
"+ Arbeitsstunden - Normal AZ = Überstunden (sollten mit 2 multipliziert werden) - kann gemacht werden - aber
- ich sehen nicht, wie Fehlzeiten nach diesen Vorgaben ausgeglichen werden.
- gilt Mehrarbeit an einem Tag generell als Überstunde? Oder bei Teilzeitarbeit erst, wenn die Regelarbeitszeit überschritten wird?
- gibt es auch für Arbeit am Samstag, Sonntag oder in der Nacht Zuschläge?
- ist sonst noch etwas zu berücksichtigen?
vg armine
Arbeitszeitaufzeichnung (1 Woche)
das ist das mit abstand (für meine zwecke) beste formular, was ich finden konnte, deshalb möchte ich stellvertretend für alle ähnlichen formulare aus diesem thread, meine frage hier stellen. ich wollte die mir die formeln der jeweiligen felder in acrobat pro ansehen, der menüpunkt "bearbeiten" ist jedoch ausgegraut. liegt das wirklich daran, dass das formular mit einem anderen programm (lifecycle) erstellt wurde oder hat der autor seine funktionen geschützt?
ich hätte gerne einblick in die formeln, kann mir die jemand in diesen post einfügen? handelt es sich dabei um javascript, kann ich die formeln also auch in acrobat pro einsetzen?
vielen dank!
ich hätte gerne einblick in die formeln, kann mir die jemand in diesen post einfügen? handelt es sich dabei um javascript, kann ich die formeln also auch in acrobat pro einsetzen?
vielen dank!
Arbeitszeitaufzeichnung (1 Woche)
Hallo bgzmk,
mit dem Acrobat hast du keinen Zugriff, auf den Code von Formularen, die mit dem LCD erstellt wurden.
Codiert wurde in JavaScript und FormCalc, je nachdem, was mir simpler schien. Generell kann man aber alles in der einen oder der anderen Programmiersprache regeln.
Dass man das Formular mit Acrobat nachbauen kann, halte ich möglich. Das ist aber nicht meine Baustelle. Ob dir der Code weiterhilft? Da habe ich so meine Zweifel. Versteckt oder geschützt ist da nichts. Das würde auch – nach meiner Auffassung – dem Sinn des Forums zuwider laufen.
Nachfolgend der gesamte Code. Heute würde der anders und knapper ausfallen, man lernt ja ständig dazu. Smilies und Bullets sind übrigens nicht Teil des Codes, sondern die Umsetzung des Editors hier.
vg armine
[font=courier new]
Formular1.#variables[0].Skripte - (JavaScript, client)
function Stunden_aufnullen(Eingabe) {
var Z_Arr = Eingabe.split(":") ;
if (Z_Arr[1] === undefined || Z_Arr[1] == "") Z_Arr[1] = "00" ;
if (Z_Arr[1].length == 1) Z_Arr[1] = Z_Arr[1] + "0" ;
return String.concat(Z_Arr[0] + ":" + Z_Arr[1]) ;
}
function Minuten(von, bis) {
var von_Arr = von.split(":") ;
var bis_Arr = bis.split(":") ;
if (bis_Arr[0] < von_Arr[0]) {
bis_Arr[0] = parseInt(bis_Arr[0], 10) + 24
}
return ((parseInt(bis_Arr[0], 10) - parseInt(von_Arr[0], 10)) * 60 + parseInt(bis_Arr[1], 10) - parseInt(von_Arr[1], 10))
}
function InputStd(Eingabe, ZeitString) {
Eingabe = Eingabe.replace(/[:\.,\+\*\/]/, ":") ;
ZeitString = ZeitString.replace(/[:\.,\+\*\/]/g, ":") ;
if(/^(-?(\d{0,3}?):?|-?\d{1,3}:[0-5]\d?)$/.test(ZeitString)) {
return Eingabe ;
} else {
if(Eingabe.length) { // ermöglicht Backspace ohne Fehlermeldung
xfa.host.beep("1") ;
}
return "" ;
}
}
function InputZeit(Eingabe, ZeitString) {
Eingabe = Eingabe.replace(/[:\.,\+\-\*\/]/, ":") ;
ZeitString = ZeitString.replace(/[:\.,\+\-\*\/]/g, ":") ;
if(/^(([01]?\d|2[0-3]?):?|\d{1,2}:[0-5]\d?)$/.test(ZeitString)) {
return Eingabe ;
} else {
if(Eingabe.length) { // ermöglicht Backspace ohne Fehlermeldung
xfa.host.beep("1") ;
}
return "" ;
}
}
function istZeit(Eingabe, Z_min, Z_max) {
var Z_Arr = Eingabe.rawValue.split(":") ;
if (Z_Arr[1] === undefined || Z_Arr[1] == "") Z_Arr[1] = "00" ;
if (Z_Arr[0].length == 1) Z_Arr[0] = "0" + Z_Arr[0] ;
if (Z_Arr[1].length == 1) Z_Arr[1] = Z_Arr[1] + "0" ;
var strZeit = String.concat(Z_Arr[0] + ":" + Z_Arr[1]) ;
var Fehler = 0 ;
if (parseFloat(Z_Arr[0]) < 0 || parseFloat(Z_Arr[0]) > 23) Fehler++ ;
if (parseFloat(Z_Arr[1]) < 0 || parseInt(Z_Arr[1]) > 59) Fehler++ ;
if (strZeit < Z_min || strZeit > Z_max) Fehler = Fehler + 5 ;
if (Fehler == 0) {
return strZeit ;
} else if (Fehler > 4) {
Fehler = "zulässige" ;
} else {
Fehler = "erkennbare" ;
}
xfa.host.messageBox(String.concat("»" + Eingabe.rawValue + "« ist keine " + Fehler + " Zeitangabe!\n\nBitte geben Sie eine sowohl gültige als auch zulässige Uhrzeit ein –\ndie Stunden ein- oder zweistellig,\ndie Minuten zweistellig (z.B. h:mm).\n\nGültigkeitszeitraum: " + Z_min + " bis " + Z_max + " Uhr"), "Keine gültige oder zulässiges Zeitangabe") ;
return " " ;
}
Formular1.#pageSet[0].Seite1.Seitenzähler::initialize - (JavaScript, client)
app.runtimeHighlightColor = ["RGB", 1, 1, 0.6] ; // 1 == 100 Prozent ~ 255 (aus 0 bis 255)
app.runtimeHighlight = true // hier wird die Markierung der Eingabefelder erzwungen
Formular1.#pageSet[0].Seite1.Textfeld1::initialize - (JavaScript, client)
//this.rawValue = event.target.path ;
//this.rawValue = "Dateiname: " + event.target.documentFileName.replace(/\.pdf$/i,"") ; // Dateiname ohne Extension
//this.rawValue = "Dateiname: " + event.target.documentFileName ; // Dateiname mit Extension
//this.rawValue = event.target.documentFileName ;
this.rawValue = "Pfad und Dateiname: " + event.target.path.replace(/\//,"").replace(/\//,":/") ;
/*
Die Anzeige im LCD verweist auf die temporäre Datei,
Acrobat und Reader zeigen auf das PDF.
*/
Formular1.S1.Tabelle.Zeile.Datum::initialize - (FormCalc, client)
if (HasValue(Kopfzeile[1].Teilformular.Datum_A)) then
$ = Num2Date(Date2Num(Kopfzeile[1].Teilformular.Datum_A, "YYYY-MM-DD") + $.parent.index, "YYYY-MM-DD")
// $.caption.value.text.value = Concat(Substr(" SoMoDiMiDoFrSa", (Mod(Date2Num($, "YYYY-MM-DD"), 7) + 1) * 2, 2), ".,") // s/w-Ausgabe
var WoTag = Mod(Date2Num($, "YYYY-MM-DD"), 7) + 1 // Sa + So farb. hervorheben
if (WoTag == "1") then
$.fontColor = "255,0,0"
elseif (WoTag == 7) then
$.fontColor = "86,83,80"
else
$.fontColor = "0,0,0"
endif
$.caption.value.text.value = Concat(Substr(" SoMoDiMiDoFrSa", WoTag * 2, 2), ".,")
else
$.caption.value.text.value = ""
$ = ""
endif
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::enter - (FormCalc, client)
$ = ""
Formular1.S1.Tabelle.Fuß.Vortrag.Vortrag::exit - (JavaScript, client)
this.rawValue = Skripte.Stunden_aufnullen(this.rawValue)
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::exit - (FormCalc, client)
var Korr = Mod(Date2Num($, "YYYY-MM-DD"), 7)
if (Korr == 0) then Korr = 7 endif
var Beginn = Date2Num($, "YYYY-MM-DD") - Korr + 1
Datum_E = Num2Date(Beginn + 6, "YYYY-MM-DD")
$ = Num2Date(Beginn, "YYYY-MM-DD")
Zeile[/font][*][font=courier new].Datum.execInitialize()
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Wochearbeitszeit::exit - (JavaScript, client)
this.rawValue = Skripte.Stunden_aufnullen(this.rawValue)
Formular1.S1.Tabelle.Zeile.A_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.A_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P1_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P1_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P2_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P2_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.#pageSet[0].Seite1.Seitenzähler::calculate - (JavaScript, client)
xfa.layout.pageCount() > 1 ? this.rawValue = "Seite " + xfa.layout.page(this) + " von " + xfa.layout.pageCount() : this.rawValue = null ;
Formular1.S1.Tabelle.Fuß.Ergebnis.Minuten::calculate - (FormCalc, client)
$ = Abs(Übertrag.Minuten - Wochenarbeitszeit)
Formular1.S1.Tabelle.Fuß.Ergebnis.Wochenarbeitszeit::calculate - (JavaScript, client)
var Übertrag_Arr = xfa.resolveNode("Kopfzeile[1].Teilformular.Wochearbeitszeit").rawValue.split(":") ;
this.rawValue = parseInt(Übertrag_Arr[0], 10) * 60 + parseInt(Übertrag_Arr[1], 10)
Formular1.S1.Tabelle.Fuß.Ergebnis.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
if (Wochenarbeitszeit > Übertrag.Minuten) then
$ = Concat("-", oStd, ":", Right(oMinuten, 2))
else
$ = Concat(oStd, ":", Right(oMinuten, 2))
endif
Formular1.S1.Tabelle.Fuß.Summe.Minuten::calculate - (FormCalc, client)
Sum(Zeile[ *].Minuten)
Formular1.S1.Tabelle.Fuß.Summe.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
$ = Concat(oStd, ":", Right(oMinuten, 2))
Formular1.S1.Tabelle.Fuß.Vortrag.Minuten::calculate - (JavaScript, client)
if (Vortrag.rawValue) {
var Vortrag_Arr = Vortrag.rawValue.split(":") ;
Vortrag.rawValue.search(/^\d/) ? parseInt(Vortrag_Arr[0], 10) * 60 - parseInt(Vortrag_Arr[1], 10) : parseInt(Vortrag_Arr[0], 10) * 60 + parseInt(Vortrag_Arr[1], 10)
} else {
this.rawValue = 0
}
Formular1.S1.Tabelle.Fuß.Übertrag.Minuten::calculate - (FormCalc, client)
$ = Summe.Minuten + Vortrag.Minuten
Formular1.S1.Tabelle.Fuß.Übertrag.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
$ = Concat(oStd, ":", Right(oMinuten, 2))
Formular1.S1.Tabelle.Zeile.Bindestrich[0]::calculate - (FormCalc, client)
if (A_von > "" or A_bis > "") then
if (A_von > "") then
A_bis.validate.nullTest = "error"
else
A_von.validate.nullTest = "error"
endif
endif
if (A_von > "" and A_bis > "") then
A_von.validate.nullTest = "disabled"
A_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((A_von == "" or A_von == null) and (A_bis == "" or A_bis == null)) then
A_von.validate.nullTest = "disabled"
A_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Bindestrich[1]::calculate - (FormCalc, client)
if (P1_von > "" | P1_bis > "") then
if (P1_von > "") then
P1_bis.validate.nullTest = "error"
else
P1_von.validate.nullTest = "error"
endif
endif
if (P1_von > "" and P1_bis > "") then
P1_von.validate.nullTest = "disabled"
P1_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((P1_von == "" or P1_von == null) and (P1_bis == "" or P1_bis == null)) then
P1_von.validate.nullTest = "disabled"
P1_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Bindestrich[2]::calculate - (FormCalc, client)
if (P2_von > "" | P2_bis > "") then
if (P2_von > "") then
P2_bis.validate.nullTest = "error"
else
P2_von.validate.nullTest = "error"
endif
endif
if (P2_von > "" and P2_bis > "") then
P2_von.validate.nullTest = "disabled"
P2_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((P2_von == "" or P2_von == null) and (P2_bis == "" or P2_bis == null)) then
P2_von.validate.nullTest = "disabled"
P2_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Minuten::calculate - (JavaScript, client)
if (A_von.rawValue && A_bis.rawValue) {
this.rawValue = Skripte.Minuten(A_von.rawValue, A_bis.rawValue)
if (this.rawValue && P1_von.rawValue && P1_bis.rawValue) {
this.rawValue = this.rawValue - Skripte.Minuten(P1_von.rawValue, P1_bis.rawValue)
}
if (this.rawValue && P2_von.rawValue && P2_bis.rawValue) {
this.rawValue = this.rawValue - Skripte.Minuten(P2_von.rawValue, P2_bis.rawValue)
}
this.rawValue = Math.max(0, this.rawValue) ;
if (this.rawValue <= 0) {
Std.rawValue = null
} else {
var oStd = parseInt(this.rawValue / 60, 10) ;
var oMinuten = "0".concat(this.rawValue - oStd * 60) ;
Std.rawValue = oStd + ":" + oMinuten.substr(oMinuten.length - 2, 2) ;
this.rawValue = Math.max(0, this.rawValue) ;
}
} else {
this.rawValue = "" ;
Std.rawValue = "" ;
}
Formular1.S1.Tabelle.Fuß.Vortrag.Vortrag::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText)
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::change - (FormCalc, client)
if (Date2Num(xfa.event.change , "DD.MM.YY", "de_DE") == 0) then
xfa.event.change = ""
xfa.host.messageBox("Bitte benutzen Sie die Datumsauswahl.", "Hinweis", 3)
xfa.host.setFocus("$")
endif
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Wochearbeitszeit::change - (JavaScript, client)
xfa.event.change = Skripte.InputStd(xfa.event.change, xfa.event.fullText)
Formular1.S1.Tabelle.Zeile.A_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.A_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P1_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P1_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P2_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P2_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.#pageSet[0].Seite1.Seitenzähler::docClose - (JavaScript, client)
app.runtimeHighlightColor = ["RGB", .8, .84, 1] ; // back to Adobe’s default
[/font][font=courier new][/font][/*]
mit dem Acrobat hast du keinen Zugriff, auf den Code von Formularen, die mit dem LCD erstellt wurden.
Codiert wurde in JavaScript und FormCalc, je nachdem, was mir simpler schien. Generell kann man aber alles in der einen oder der anderen Programmiersprache regeln.
Dass man das Formular mit Acrobat nachbauen kann, halte ich möglich. Das ist aber nicht meine Baustelle. Ob dir der Code weiterhilft? Da habe ich so meine Zweifel. Versteckt oder geschützt ist da nichts. Das würde auch – nach meiner Auffassung – dem Sinn des Forums zuwider laufen.
Nachfolgend der gesamte Code. Heute würde der anders und knapper ausfallen, man lernt ja ständig dazu. Smilies und Bullets sind übrigens nicht Teil des Codes, sondern die Umsetzung des Editors hier.
vg armine
[font=courier new]
Formular1.#variables[0].Skripte - (JavaScript, client)
function Stunden_aufnullen(Eingabe) {
var Z_Arr = Eingabe.split(":") ;
if (Z_Arr[1] === undefined || Z_Arr[1] == "") Z_Arr[1] = "00" ;
if (Z_Arr[1].length == 1) Z_Arr[1] = Z_Arr[1] + "0" ;
return String.concat(Z_Arr[0] + ":" + Z_Arr[1]) ;
}
function Minuten(von, bis) {
var von_Arr = von.split(":") ;
var bis_Arr = bis.split(":") ;
if (bis_Arr[0] < von_Arr[0]) {
bis_Arr[0] = parseInt(bis_Arr[0], 10) + 24
}
return ((parseInt(bis_Arr[0], 10) - parseInt(von_Arr[0], 10)) * 60 + parseInt(bis_Arr[1], 10) - parseInt(von_Arr[1], 10))
}
function InputStd(Eingabe, ZeitString) {
Eingabe = Eingabe.replace(/[:\.,\+\*\/]/, ":") ;
ZeitString = ZeitString.replace(/[:\.,\+\*\/]/g, ":") ;
if(/^(-?(\d{0,3}?):?|-?\d{1,3}:[0-5]\d?)$/.test(ZeitString)) {
return Eingabe ;
} else {
if(Eingabe.length) { // ermöglicht Backspace ohne Fehlermeldung
xfa.host.beep("1") ;
}
return "" ;
}
}
function InputZeit(Eingabe, ZeitString) {
Eingabe = Eingabe.replace(/[:\.,\+\-\*\/]/, ":") ;
ZeitString = ZeitString.replace(/[:\.,\+\-\*\/]/g, ":") ;
if(/^(([01]?\d|2[0-3]?):?|\d{1,2}:[0-5]\d?)$/.test(ZeitString)) {
return Eingabe ;
} else {
if(Eingabe.length) { // ermöglicht Backspace ohne Fehlermeldung
xfa.host.beep("1") ;
}
return "" ;
}
}
function istZeit(Eingabe, Z_min, Z_max) {
var Z_Arr = Eingabe.rawValue.split(":") ;
if (Z_Arr[1] === undefined || Z_Arr[1] == "") Z_Arr[1] = "00" ;
if (Z_Arr[0].length == 1) Z_Arr[0] = "0" + Z_Arr[0] ;
if (Z_Arr[1].length == 1) Z_Arr[1] = Z_Arr[1] + "0" ;
var strZeit = String.concat(Z_Arr[0] + ":" + Z_Arr[1]) ;
var Fehler = 0 ;
if (parseFloat(Z_Arr[0]) < 0 || parseFloat(Z_Arr[0]) > 23) Fehler++ ;
if (parseFloat(Z_Arr[1]) < 0 || parseInt(Z_Arr[1]) > 59) Fehler++ ;
if (strZeit < Z_min || strZeit > Z_max) Fehler = Fehler + 5 ;
if (Fehler == 0) {
return strZeit ;
} else if (Fehler > 4) {
Fehler = "zulässige" ;
} else {
Fehler = "erkennbare" ;
}
xfa.host.messageBox(String.concat("»" + Eingabe.rawValue + "« ist keine " + Fehler + " Zeitangabe!\n\nBitte geben Sie eine sowohl gültige als auch zulässige Uhrzeit ein –\ndie Stunden ein- oder zweistellig,\ndie Minuten zweistellig (z.B. h:mm).\n\nGültigkeitszeitraum: " + Z_min + " bis " + Z_max + " Uhr"), "Keine gültige oder zulässiges Zeitangabe") ;
return " " ;
}
Formular1.#pageSet[0].Seite1.Seitenzähler::initialize - (JavaScript, client)
app.runtimeHighlightColor = ["RGB", 1, 1, 0.6] ; // 1 == 100 Prozent ~ 255 (aus 0 bis 255)
app.runtimeHighlight = true // hier wird die Markierung der Eingabefelder erzwungen
Formular1.#pageSet[0].Seite1.Textfeld1::initialize - (JavaScript, client)
//this.rawValue = event.target.path ;
//this.rawValue = "Dateiname: " + event.target.documentFileName.replace(/\.pdf$/i,"") ; // Dateiname ohne Extension
//this.rawValue = "Dateiname: " + event.target.documentFileName ; // Dateiname mit Extension
//this.rawValue = event.target.documentFileName ;
this.rawValue = "Pfad und Dateiname: " + event.target.path.replace(/\//,"").replace(/\//,":/") ;
/*
Die Anzeige im LCD verweist auf die temporäre Datei,
Acrobat und Reader zeigen auf das PDF.
*/
Formular1.S1.Tabelle.Zeile.Datum::initialize - (FormCalc, client)
if (HasValue(Kopfzeile[1].Teilformular.Datum_A)) then
$ = Num2Date(Date2Num(Kopfzeile[1].Teilformular.Datum_A, "YYYY-MM-DD") + $.parent.index, "YYYY-MM-DD")
// $.caption.value.text.value = Concat(Substr(" SoMoDiMiDoFrSa", (Mod(Date2Num($, "YYYY-MM-DD"), 7) + 1) * 2, 2), ".,") // s/w-Ausgabe
var WoTag = Mod(Date2Num($, "YYYY-MM-DD"), 7) + 1 // Sa + So farb. hervorheben
if (WoTag == "1") then
$.fontColor = "255,0,0"
elseif (WoTag == 7) then
$.fontColor = "86,83,80"
else
$.fontColor = "0,0,0"
endif
$.caption.value.text.value = Concat(Substr(" SoMoDiMiDoFrSa", WoTag * 2, 2), ".,")
else
$.caption.value.text.value = ""
$ = ""
endif
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::enter - (FormCalc, client)
$ = ""
Formular1.S1.Tabelle.Fuß.Vortrag.Vortrag::exit - (JavaScript, client)
this.rawValue = Skripte.Stunden_aufnullen(this.rawValue)
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::exit - (FormCalc, client)
var Korr = Mod(Date2Num($, "YYYY-MM-DD"), 7)
if (Korr == 0) then Korr = 7 endif
var Beginn = Date2Num($, "YYYY-MM-DD") - Korr + 1
Datum_E = Num2Date(Beginn + 6, "YYYY-MM-DD")
$ = Num2Date(Beginn, "YYYY-MM-DD")
Zeile[/font][*][font=courier new].Datum.execInitialize()
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Wochearbeitszeit::exit - (JavaScript, client)
this.rawValue = Skripte.Stunden_aufnullen(this.rawValue)
Formular1.S1.Tabelle.Zeile.A_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.A_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P1_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P1_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P2_bis::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.S1.Tabelle.Zeile.P2_von::exit - (JavaScript, client)
if (this.rawValue) { // | kleinstmögliche Uhrzeit, optional
this.rawValue = Skripte.istZeit(this, "00:00", "23:59") ;
} // | größtmögliche Uhrzeit,optional
if (this.rawValue == " ") {
this.rawValue = null ;
xfa.host.setFocus(this) ;
}
Formular1.#pageSet[0].Seite1.Seitenzähler::calculate - (JavaScript, client)
xfa.layout.pageCount() > 1 ? this.rawValue = "Seite " + xfa.layout.page(this) + " von " + xfa.layout.pageCount() : this.rawValue = null ;
Formular1.S1.Tabelle.Fuß.Ergebnis.Minuten::calculate - (FormCalc, client)
$ = Abs(Übertrag.Minuten - Wochenarbeitszeit)
Formular1.S1.Tabelle.Fuß.Ergebnis.Wochenarbeitszeit::calculate - (JavaScript, client)
var Übertrag_Arr = xfa.resolveNode("Kopfzeile[1].Teilformular.Wochearbeitszeit").rawValue.split(":") ;
this.rawValue = parseInt(Übertrag_Arr[0], 10) * 60 + parseInt(Übertrag_Arr[1], 10)
Formular1.S1.Tabelle.Fuß.Ergebnis.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
if (Wochenarbeitszeit > Übertrag.Minuten) then
$ = Concat("-", oStd, ":", Right(oMinuten, 2))
else
$ = Concat(oStd, ":", Right(oMinuten, 2))
endif
Formular1.S1.Tabelle.Fuß.Summe.Minuten::calculate - (FormCalc, client)
Sum(Zeile[ *].Minuten)
Formular1.S1.Tabelle.Fuß.Summe.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
$ = Concat(oStd, ":", Right(oMinuten, 2))
Formular1.S1.Tabelle.Fuß.Vortrag.Minuten::calculate - (JavaScript, client)
if (Vortrag.rawValue) {
var Vortrag_Arr = Vortrag.rawValue.split(":") ;
Vortrag.rawValue.search(/^\d/) ? parseInt(Vortrag_Arr[0], 10) * 60 - parseInt(Vortrag_Arr[1], 10) : parseInt(Vortrag_Arr[0], 10) * 60 + parseInt(Vortrag_Arr[1], 10)
} else {
this.rawValue = 0
}
Formular1.S1.Tabelle.Fuß.Übertrag.Minuten::calculate - (FormCalc, client)
$ = Summe.Minuten + Vortrag.Minuten
Formular1.S1.Tabelle.Fuß.Übertrag.Zelle6::calculate - (FormCalc, client)
var oStd = Floor(Minuten / 60)
var oMinuten = Concat("00", Minuten - oStd * 60)
$ = Concat(oStd, ":", Right(oMinuten, 2))
Formular1.S1.Tabelle.Zeile.Bindestrich[0]::calculate - (FormCalc, client)
if (A_von > "" or A_bis > "") then
if (A_von > "") then
A_bis.validate.nullTest = "error"
else
A_von.validate.nullTest = "error"
endif
endif
if (A_von > "" and A_bis > "") then
A_von.validate.nullTest = "disabled"
A_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((A_von == "" or A_von == null) and (A_bis == "" or A_bis == null)) then
A_von.validate.nullTest = "disabled"
A_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Bindestrich[1]::calculate - (FormCalc, client)
if (P1_von > "" | P1_bis > "") then
if (P1_von > "") then
P1_bis.validate.nullTest = "error"
else
P1_von.validate.nullTest = "error"
endif
endif
if (P1_von > "" and P1_bis > "") then
P1_von.validate.nullTest = "disabled"
P1_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((P1_von == "" or P1_von == null) and (P1_bis == "" or P1_bis == null)) then
P1_von.validate.nullTest = "disabled"
P1_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Bindestrich[2]::calculate - (FormCalc, client)
if (P2_von > "" | P2_bis > "") then
if (P2_von > "") then
P2_bis.validate.nullTest = "error"
else
P2_von.validate.nullTest = "error"
endif
endif
if (P2_von > "" and P2_bis > "") then
P2_von.validate.nullTest = "disabled"
P2_bis.validate.nullTest = "disabled"
$ = "–"
elseif ((P2_von == "" or P2_von == null) and (P2_bis == "" or P2_bis == null)) then
P2_von.validate.nullTest = "disabled"
P2_bis.validate.nullTest = "disabled"
$ = ""
else
$ = ""
endif
Formular1.S1.Tabelle.Zeile.Minuten::calculate - (JavaScript, client)
if (A_von.rawValue && A_bis.rawValue) {
this.rawValue = Skripte.Minuten(A_von.rawValue, A_bis.rawValue)
if (this.rawValue && P1_von.rawValue && P1_bis.rawValue) {
this.rawValue = this.rawValue - Skripte.Minuten(P1_von.rawValue, P1_bis.rawValue)
}
if (this.rawValue && P2_von.rawValue && P2_bis.rawValue) {
this.rawValue = this.rawValue - Skripte.Minuten(P2_von.rawValue, P2_bis.rawValue)
}
this.rawValue = Math.max(0, this.rawValue) ;
if (this.rawValue <= 0) {
Std.rawValue = null
} else {
var oStd = parseInt(this.rawValue / 60, 10) ;
var oMinuten = "0".concat(this.rawValue - oStd * 60) ;
Std.rawValue = oStd + ":" + oMinuten.substr(oMinuten.length - 2, 2) ;
this.rawValue = Math.max(0, this.rawValue) ;
}
} else {
this.rawValue = "" ;
Std.rawValue = "" ;
}
Formular1.S1.Tabelle.Fuß.Vortrag.Vortrag::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText)
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Datum_A::change - (FormCalc, client)
if (Date2Num(xfa.event.change , "DD.MM.YY", "de_DE") == 0) then
xfa.event.change = ""
xfa.host.messageBox("Bitte benutzen Sie die Datumsauswahl.", "Hinweis", 3)
xfa.host.setFocus("$")
endif
Formular1.S1.Tabelle.Kopf_Startseite.Kopfzeile[1].Teilformular.Wochearbeitszeit::change - (JavaScript, client)
xfa.event.change = Skripte.InputStd(xfa.event.change, xfa.event.fullText)
Formular1.S1.Tabelle.Zeile.A_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.A_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P1_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P1_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P2_bis::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.S1.Tabelle.Zeile.P2_von::change - (JavaScript, client)
xfa.event.change = Skripte.InputZeit(xfa.event.change, xfa.event.fullText) ;
Formular1.#pageSet[0].Seite1.Seitenzähler::docClose - (JavaScript, client)
app.runtimeHighlightColor = ["RGB", .8, .84, 1] ; // back to Adobe’s default
[/font][font=courier new][/font][/*]
Arbeitszeitaufzeichnung (1 Woche)
ich sag mal danke, da kann ich sicher die eine oder andere zeile übernehmen. leider ist es auch so, dass wir in der firma mit macs arbeiten, lifecycle gibt es aber nur für windows - sonst hätte ich das einfach geordert.