Objekt gegenseitig überschreiben

22. Februar 2008 15:21

Hi,

ich wollte fragen ob Ihr schon mal diese Erfahrung erlebt und wie ihr das löst.

Im Moment entwickeln ich und mein Partner in gleicher Datenbank.
Besonders bei Form und Codeunit. (ich weiss nicht ganz genau ob bei anderen Bereichen auch vorgekommen ist)
Wenn mein Partner einen Codeunit modifiziert hat, wird der Codeunit in meine Session nicht automatisch aktualisiert. D.h. wenn ich (ohne Session neu starten) den CU hinterher modifiziere dann wird meine Version in der Datenbank gespeichert und die Änderungen von meinem Partner vorhin gehen dann verloren.

Ich habe versucht den Window Watcher Light aus Mibuso zu testen aber nicht sehr befriedigend.

Habt ihr vielleicht ein sinvolle Tips um dieses Problem umzugehen?

Vielen Dank im voraus.

22. Februar 2008 16:03

Grundregel Nummer 1 wenn mehrere Leute gleichzeitig auf derselben Datenbank programmieren:
"Object Cache" explizit auf Null setzen!
Menü Extras -> Optionen -> "Object Cache (KB)" = 0

So muss Navision immer wieder die Objekte neu aus der Datenbank abrufen.

Dies löst jedoch nicht das Problem, dass zwei (oder mehr) Leute "gleichzeitig" an demselben Objekt arbeiten.

Dazu haben wir bei uns intern die Regel aufgestellt, dass man (sofern kein CVS-System wie Visual Source Safe & Co. eingesetzt wird) immer vor einer Änderung eine Raute (#) zzgl. des eigenen Benutzerkürzels vor die Versionsliste des zu ändernden Objektes setzt.
(z. B. #TL,NAVW14.00,NAVDACH4.00)
Dadurch sehen die anderen Programmierer sofort, dass dieses Objekt
a) gerade bearbeitet wird
b) welcher Programmierer das Objekt gerade im Zugriff hat (z. B. für Rückfragen)
c) dieses Objekt fehlerbehaftet sein könnte

Dieser Workaround setzt allerdings eine entsprechende Disziplin unter den Programmierern voraus, da sie auf jeden Fall die Raute vorher setzen müssen und nicht vergessen dürfen, sie anschließend wieder zu entfernen, wenn das Objekt wieder freigegeben ist.
Aber eine solche Disziplin gilt auch bei dem Einsatz eines CVS-Systems, wo die Objekte dann vor der Bearbeitung "ausgecheckt" werden müssen.

22. Februar 2008 16:44

Es gibt das Tool WindowWatcher, das für solche Zwecke entwickelt wurde.

25. Februar 2008 14:02

Timo Lässer hat geschrieben:Grundregel Nummer 1 wenn mehrere Leute gleichzeitig auf derselben Datenbank programmieren:
"Object Cache" explizit auf Null setzen!
Menü Extras -> Optionen -> "Object Cache (KB)" = 0

So muss Navision immer wieder die Objekte neu aus der Datenbank abrufen.



Hallo Timo,

Danke für die Lösung.
Ich konnte aber die Object Cache am Client nicht ändern. Es wird automatisch vom Server zugewiesen.
- Wie kann ich die denn sonst ändern?
- Wenn man die grundsetzlich nullen, gibt es Auswirkungen für die Anwender?

MrBurns hat geschrieben:Es gibt das Tool WindowWatcher, das für solche Zwecke entwickelt wurde.


MrBurns, ich habe auch WindowWatcher aus Mibuso gefunden. Nun, mein Partner arbeitet über Citrix und ich nicht. Muss ich noch mal schauen ob der über Citrix funktioniert.
Vielen Dank.

25. Februar 2008 15:26

navsyst hat geschrieben:
Timo Lässer hat geschrieben:Grundregel Nummer 1 wenn mehrere Leute gleichzeitig auf derselben Datenbank programmieren:
"Object Cache" explizit auf Null setzen!
Menü Extras -> Optionen -> "Object Cache (KB)" = 0

So muss Navision immer wieder die Objekte neu aus der Datenbank abrufen.



Hallo Timo,

Danke für die Lösung.
Ich konnte aber die Object Cache am Client nicht ändern. Es wird automatisch vom Server zugewiesen.
- Wie kann ich die denn sonst ändern?
- Wenn man die grundsetzlich nullen, gibt es Auswirkungen für die Anwender?

Du kannst den Parameter objectcache=0 an die Verknüpfung zur fin(sql).exe anhängen.
Diese Einstellung gilt nur für den Client, bei dem der Cache auf 0 gesetzt wurde.

Dies direkt am Server einzustellen wäre für die Anwender fatal, da die Objekte dann nicht mehr gecached werden und somit die Performance einbricht.
Für eine separate Entwicklungs-DB als Serverdienst wäre diese Einstellung aber sicher zu befürworten, damit kein Programmierer es vergißt.