Diese Funktion darf keine Datenänderungen vornehmen
Hallo,
ich hatte für die in meiner DB verwalteten Artikel die Idee, mir eine Benachrichtigung zukommen zu lassen, wenn der Mindestbestand unterschritten wird. Ich hab das testweise mit Slack umgesetzt, die Benachrichtigung selbst klappt soweit auch. Da ich die Benachrichtigung aber natürlich nur beim ersten mal, wenn der Mindestbestand unterschritten wird, bekommen will, wollte ich noch ein verstecktes Ja/Nein-Feld ("Bestandswarnung") in's Spiel bringen. Die Benachrichtigung sollte dann nur erfolgen, wenn das Ja/Nein-Feld "false" ist. Auch das klappt soweit. Ich schaffe es nur nicht, das Ja/Nein-Feld nach der Benachrichtigung auf "true" zu setzen.
Folgendes habe ich in meinem Berechnungsfeld "Bestand" hinterlegt:
let myBestand := sum(Zugang.Anzahl) - sum(Abgang.Anzahl) - cnt(Komponenten.Projekt.'Projekt-Name');
if myBestand - Mindestbestand < 0 and Bestandwarnung != true then
http("POST", "https://hooks.slack.com/services/API/KEY/HIER/NATUERLICH/ERSETZT", {
'Content-type': "application/json",
text: "Mindestbestand " + 'Artikel-Nr.' + " unterschritten"
})
end;
if myBestand - Mindestbestand < 0 and Bestandwarnung != true then
Bestandwarnung = true
end;
myBestand
Bei der Variante ändert er das Ja/Nein-Feld "Bestandwarnung" nicht, ersetze ich es durch "Bestandwarnung := true" wie ich es von andererstelle gewohnt bin, erhalte ich die Meldung "Diese Funktion darf keine Datenänderungen vornehmen" und ich kann die Berechnung nicht speichern.
Wie ich mich kenne, ist die Lösung mal wieder recht simpel - ich komm' nur partout nicht drauf... :-/
lg, Torsten
5 Antworten
-
Örgs,
natürlich hab ich keine zwei gleichen if-Abfragen gemacht, die hatte ich nur testweise mal reingenommen, weil ich mir nicht sicher war, ob das Script sich an mehreren Befehlen zwischen then und end stört. Grundschuld-Debugging also :-)
lg, Torsten
-
Hallo Torsten,
ein Berechnungsfeld darf wirklich keine Datenänderungen vornehmen. Ich würde die Formel als Trigger nach Änderung auf Tabellenebene packen:
---
let myBestand := sum(Zugang.Anzahl) - sum(Abgang.Anzahl) - cnt(Komponenten.Projekt.'Projekt-Name');
if myBestand - Mindestbestand < 0 and Bestandwarnung != true then
http("POST", "https://hooks.slack.com/services/API/KEY/HIER/NATUERLICH/ERSETZT", {
'Content-type': "application/json",
text: "Mindestbestand " + 'Artikel-Nr.' + " unterschritten"
});Bestandwarnung := true
end;---
und Berechnetes Feld sollte einfach das tun, wofür es gedacht wurde:
---
sum(Zugang.Anzahl) - sum(Abgang.Anzahl) - cnt(Komponenten.Projekt.'Projekt-Name')
---
Leo
-
Hallo Leo,
ja, den Weg habe ich auch schon angetestet - und bereits genau so wie von Dir vorgeschlagen dort eingetragen. Leider funktioniert dort bei Datensätzen mit zutreffenden Kriterien weder die Benachrichtigung noch die Feldänderung... :-/
lg, Torsten
-
Ergänzung:
- In der App werden weder die Benachrichtigung noch die Feldänderung getriggert,
- ebenso auf dem iPad,
- in der Web-App wird die Benachrichtigung getriggert, aber das Feld nicht geändert. :-/
lg, Torsten
-
In der Tat is es oft schwierig, den korrekten Trigger genau zu finden.
Buchen Sie einen Support-Termin:
Content aside
- vor 6 JahrenZuletzt aktiv
- 5Antworten
- 3034Ansichten