Berechnung in Java Script und FormCalc

Grundsätzliche Themen zur Bedienung, Erstellung von Formularen, Datenbankanbindung und Beispiele ...
Antworten
Üsch
Beiträge: 13
Registriert: 28.03.2011, 12:04

Berechnung in Java Script und FormCalc

Beitrag von Üsch » 15.03.2012, 13:07

Hallo,

ich habe ein Formular in dem die geleisteten Mehrarbeitsstunden berechnet werden.

Hierfür habe ich JavaScript verwendet, da ich im Forum eine passende Formel finden konnte. Nun habe ich aber ein zweites Feld, welches die Ergebnisse über mehrere Zeilen addieren soll. Alle Versuche es mit Script oder Formcalc hinzubekommen funktionieren nicht. Kann mir jemand die korrekte Formulierung verraten und woran es liegt?:)

Einsatz Remote: von - bis = Std -> dieses Ergebnis dann addiert in das Feld  Stunden gesamt funktioniert nicht.:(

Eine weitere Frage zu meinem Formular:

Ist es möglich ein Datumsfeld so zu programmieren, dass bei Auswahl eines Samstag oder Sonntag bereits automatisch ein Kontrollkästchen aktiviert wird?

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Berechnung in Java Script und FormCalc

Beitrag von radzmar » 16.03.2012, 09:45

Das mit den Kontrollkästchen kannst du folgendermaßen lösen.
Erstmal löscht du die bestehende Skripte aus Kontrollkästchen.
Dann fügst die diese Skript (FormCalc) in das claculateEvent von Std_Rufbereitschaft hinzu.

Code: Alles auswählen

var hours
if (Num2Date(Date2Num(System1.formattedValue, "DD.MM.YYYY"), "E") eq 7) then
	hours = 24
	Sa.rawValue = 1
	So.rawValue = 0
elseif (Num2Date(Date2Num(System1.formattedValue, "DD.MM.YYYY"), "E") eq 1) then
	hours = 24
	Sa.rawValue = 0
	So.rawValue = 1
else
	if (Nacht.rawValue eq 1) then
		hours = 24
	else
		hours = 13
	endif
	Sa.rawValue = 0
	So.rawValue = 0
endif

$ = hours
Frage: Wie sollen die zusammengerechneten Stunden angezeigt werden? Nur voll als volle Stunden ausgerundet oder als Dezimalzahl (z.B. 3,75) oder wie eine Uhrzeit (03:45)

Üsch
Beiträge: 13
Registriert: 28.03.2011, 12:04

Berechnung in Java Script und FormCalc

Beitrag von Üsch » 16.03.2012, 09:50

Super, das werde ich gleich mal ausprobieren.

Die Stunden sollen als Uhrzeit dargestellt werden.

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Berechnung in Java Script und FormCalc

Beitrag von radzmar » 16.03.2012, 11:23

Ok,

die Zeitberechnung in Remote_Std hab ich folgendermaßen realisiert:

Code: Alles auswählen

var fullTime = 0
var result = 0
var msPerHr = 3600000

if (HasValue(von_R) and HasValue(bis_R)) then
	if (Time2Num(von_R.formattedValue, "HH:MM") lt Time2Num(bis_R.formattedValue, "HH:MM")) then
		fullTime = Abs(Time2Num(von_R.formattedValue, "HH:MM") - Time2Num(bis_R.formattedValue, "HH:MM")) / msPerHr
	else
		fullTime = 24 - Abs(Time2Num(bis_R.formattedValue, "HH:MM") - Time2Num(von_R.formattedValue, "HH:MM")) / msPerHr
	endif
	result = fullTime
endif

$ = Num2Time(-3599999 + (result * msPerHr + 1), "HH:MM")

Und um nun die Gesamtstunden in Gesamtsumme_Std zu berechen:

Code: Alles auswählen

var hours = 0
var minutes = 0
var instances = SAP_Zeile1.instanceManager.count - 1

for i = 0 upto instances step 1 do 
	hours = hours + Num2Time(Time2Num(SAP_Zeile1[i].Remote_Std, "HH:MM"), "H")
	minutes = minutes + Num2Time(Time2Num(SAP_Zeile1[i].Remote_Std, "HH:MM"), "M")
endfor

$ = Concat(Format("z99", hours + Floor(minutes / 60)), ":", Format("99", Mod(minutes, 60)))
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Üsch
Beiträge: 13
Registriert: 28.03.2011, 12:04

Berechnung in Java Script und FormCalc

Beitrag von Üsch » 16.03.2012, 12:15

Ein Traum!!!

Vielen, vielen Dank schon mal!

Eine Bitte habe ich noch. Es gibt den Fall, das an einem Wochentag die "Anzahl der Stunden Bereitschaft" nicht immer gleich sind oder gar nicht anfallen, also individuell eingegeben werden müssen. Kann man dies  so steuern, dass nur an normalen Wochentagen keine automatische Befüllung eintritt?

Schon mal Danke im Voraus.

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Berechnung in Java Script und FormCalc

Beitrag von radzmar » 16.03.2012, 15:58

Ja, auch das ist möglich. Dafür muss das Skript nur etwas erweitert werden.

Code: Alles auswählen

var hours
if (Num2Date(Date2Num(System1.formattedValue, "DD.MM.YYYY"), "E") eq 7) then
	hours = 24
	Sa.rawValue = 1
	So.rawValue = 0
elseif (Num2Date(Date2Num(System1.formattedValue, "DD.MM.YYYY"), "E") eq 1) then
	hours = 24
	Sa.rawValue = 0
	So.rawValue = 1
else
	if (Nacht.rawValue eq 1) then
		hours = 24
	else
		hours = 0
	endif
	Sa.rawValue = 0
	So.rawValue = 0
endif

if (hours ne 24) then
	$.access = "open"
	$.calculate.override = "disabled"
else
	$.access = "readOnly"
	$.calculate.override = "warning"
endif

$ = hours

Üsch
Beiträge: 13
Registriert: 28.03.2011, 12:04

Berechnung in Java Script und FormCalc

Beitrag von Üsch » 19.03.2012, 14:28

Vielen Dank, jetzt klappt alles nach Wunsch.

Hätte ich alleine nie im Leben hinbekommen :D

Antworten