Konkurrierender Zugriff

dreamar

Mitglied
Hallo zusammen,

wir arbeiten noch nicht produktiv mit unserem System. Ich würde mir gerne mal eine fundierte Zweitmeinung anhören. Folgendes Problem:
Wir wollen eine eigene Liste haben in der das beauftragte Material aufgelistet wird, damit unser Lager das Material kommissionieren kann.
Denn wir arbeiten ohne Lagerführung. In der Liste soll der Lagermitarbeiter nach dem kommissionieren in ein Feld eintragen, wie viele er bereit gelegt hat.
Bei einer Differenz (kommissioniert < bestellt) geht die Differenz weiter zum Einkauf.
Ich würde diese Info gerne in ein Userfeld in die Belegpositionen schreiben um diese Informationen auch weiterhin im System passend zur Position zu haben.
Es wurde uns gesagt das dies ein konkurrierender Zugriff bedeuten kann, wenn der Beleg von einem anderen Mitarbeiter geöffnet ist. Daher kann es zum Verlust von Informationen (eventuell Verlust der eingetragenen kommissionierten Menge) beim speichern des Belegs kommen.
Kann man diesen konkurrierenden Zugriff irgendwie umgehen oder kann man vor Speicherung des Beleg prüfen ob dieser eine Wert verändert wurde?
Oder gibt es da noch andere Lösungen?
Es wird nicht bei der einen Information (kommissionierte Menge) bleiben, wahrscheinlich kommen noch 2 oder 3 weitere hinzü.
 
Moin @dreamar,

unabhängig von der Anforderung würde man solche Probleme immer mit einem separaten Datensatz umgehen (sprich: eigene Tabelle mit Zuordnung über BelPosID).

Ein Überschreiben eines Datensatzes mit konkurrierenden Zugriffs wird bei seitens Sage normalerweise über den Timestamp des Datensatzes und folgende Meldung bei Speicherung abgefangen.

1711619435236.png

Bei Änderung am Beleg funktioniert dies einwandfrei, aber auf Positionsebene wird dies meine ich bei Belegspeicherung nicht geprüft - ein Überschreiben würde also erfolgen. Ein Workaround wäre also die Auslagerung in eine eigene Tabelle mit Fremdschlüsselverweis, welche in der Erfassungsmaske nicht eingebunden ist, sondern nur in der editierbaren Liste für den Lagermitarbeiter.

Alternative Lösung wäre das Setzen eines Kennzeichens im referenzierenden Belegdatensatzes, wenn auf Positionsebene etwas in einem Userfeld geändert wurde, sodass die Sageautomatik s.o. auf ein Überschreiben hinweist.

Die letzte Möglichkeit und aus meiner Sicht die eleganteste, wäre das Arbeiten mit Semaphoren, sodass der Datensatz gar nicht geändert werden kann, solange er woanders noch geöffnet ist.
 
Zuletzt bearbeitet:
Die letzte Möglichkeit und aus meiner Sicht die eleganteste, wäre das Arbeiten mit Semaphoren, sodass der Datensatz gar nicht geändert werden kann, solange er woanders noch geöffnet ist.

Hallo R.Ziemer,

vielen Dank für deine interessante Antwort. Als Laie verstehe ich das so in der Praxis. Ist ein VK Beleg geöffnet, kann der Lagermitarbeiter diese Infos in der Position nicht speichern. Bekommt er dann eine Meldung?
Und er müsste es dann zu einem anderen Zeitpunkt erneut versuchen.
 
Moin, genau nehmen wir folgendes an:

Ein Mitarbeiter im Verkauf hat den Beleg 2024-1111 auf und nimmt gerade Änderung vor. Die Semaphore wird gesetzt (Sperre).
Ein Mitarbeiter im Lager öffnet ein Listenelement mit dahinterliegendem Daten-Edit-Element, in welchem die Positionen der Belege bearbeitet werden können. Eine Position des Beleges 2024-1111 wird ausgewählt. In Theorie öffnet sich dann eine Meldung, "Es liegt ein konkurrierender Zugriff durch Station x vor. Bitte versuchen Sie es später nochmal erneut". Resultat: Der Datensatz kann im Listenelement nicht ausgewählt und somit auch keine Änderung in diesem gespeichert werden.

Siehe hierzu auch: https://www.sage-forum.de/threads/konkurrierender-zugriff-auf-vk-beleg.3585/#post-12960
 
Zurück
Oben