"do as server" vs. Änderungstrigger - merkwürdiges Verhalten
In einem Button steht bspw.:
do as server
A := 1;
B := 2;
C := 3
end
Im Änderungstrigger von B steht:
C := 5;
Das erwartete Ergebnis wäre 1/2/3, es ist aber 1/2/5.
Kann mir das bitte jemand erklären?
Vielen Dank vorab.
10 Antworten
-
Ergänzung: auch das Einbauen eines x-beliebig langen sleep() vor dem letzten Befehl ändert nichts am Verhalten.
Inzwischen bin ich davon überzeugt, dass es ein Bug ist, weil man das Spiel auf weitertreiben kann. Bei deinem Skript mit 20 Anweisungen innerhalb des "do as server" und dabei bspw. 5 ausgelösten Triggern, werden alle 5 Trigger-Skripte erst nach der 20. Anweisung geschlossen ausgeführt.
-
Aber wenn im Änderungstrigger vom B steht C := 5; dann ist das Ergebnis 1/2/5 doch korrekt ?
-
Hallo Ralf,
die erste Frage ist hier natürlich ob deine Geschäftslogik hier richtig ist. Wenn nach der Änderung von B der Wert von C als 5 erwartet wird, warum Ist im Code dann C:=3?
Generell ist es aber so: die Trigger nach Änderung erwarten eine Änderung auf client-Seite (entweder Direkteingabe oder Änderung auch einen Button).
Wenn die Daten als do as server, do as transaction, Massendatenänderung, Datenimport oder API geändert werden, bleibt der Trigger nach Änderung unberührt.
Leo
-
In diesem Fall würde ich den Script nach Änderung abändern z.B.
if Kunde then if not Zahlung then Zahlung := Kunde.Zahlung end else Zahlung := null end
Und bei dem Script zuerst die Zahlungsmethode in der Rechnung ändern und erst dann den Kunden verknüpfen.
Content aside
- vor 1 JahrZuletzt aktiv
- 10Antworten
- 103Ansichten
-
3
Folge bereits