DCM

Na Super.

Eigentlich war die Ol.dcm gut wenn man eine Anpassung nur an einem Client testen wollte. Demnach ist das nicht mehr möglich.

Gibt es workaround?
 
Guten Morgen Polat,
wenn ich die alte Oberfläche einschalte werden bei mir keine Makros mehr ausgeführt und die OL.DCM wird ignoriert sowohl auf dem Server wie auch auf dem Client. Haben Sie eine Idee was ich falsch mache?
 
Das Verfahren des "Aufrufens/Ausführens" von DCMs hat sich mit der Hinterlegung in den Metadaten nicht geändert. Beim Lesen der hinterlegten DCMs werden zuerst die Einträge in OL.dcm geladen und dann die Einträge aus den Metadaten der DCM-Collection hinzugefügt. Der DCM-Manager unterscheidet nicht nach Client- oder Serveraufruf, sondern führt die DCM aus, die im aktuellen Kontext angefordert wird.

Beispiel DCMs der BelegEngine:
Wird die alte Erfassung (oder jede andere Bereich, der die COM-Objekte verwendet) ausgeführt, wird die BelegEngine clientseitig ausgeführt. Damit werden auch alle in den DCMs hinterlegten Assemblies auf der Clientseite ausgeführt.
Wird die neue Erfassung ausgeführt, wird die BelegEngine serverseitig ausgeführt. Damit werden auch alle in den DCMs hinterlegten Assemblies auf der Serverseite ausgeführt.

Hinweis: es gibt zurzeit eine Konstellation bei der das korrekte Ausführen der DCMs nicht gewährleistet ist. Das ist die Kombination AddIn auf Basis des Template-AddIns mit Einträgen in USysDCM und Einträgen in den Metadaten. Beim Installieren des AddIns (z.B. auch über LiveUpdate) werden dann auch die in den Metadaten hinterlegten DCM-Definitionen in die OL.dcm geschrieben. Wird also ein solches AddIn verwendet, muss man sich entscheiden, ob man die DCMs in USysDCM oder in den Metadaten hinterlegt. Eventuell kann auch der im Thread "Fehler beim Debuggen" aufgeführte Fehler damit zusammenhängen. Ich konnte ihn allerdings nicht nachvollziehen.

Zum Thema Makros client- oder serverseitig: Alle Ereignisse in allen Elementen (außer OnLoad der Datenstruktur) werden clientseitig ausgeführt. Die Ereignisse vom Datensatz und Datenstruktur inklusive Felder werden danach auch serverseitig ausgeführt. Soll nach Client- und Serveraufruf unterschieden werden, ist der Ausdruck IsRunningOnServer() = False oder True im "Wenn"-Makro zu verwenden.

Das Makro "AufrufenDLL" führt einen serverseitigen Aufruf aus. Einzig der Funktionsaufruf "AppLibraryCall.Sage.System" ruft eine clientseitige DLL auf.
 
Zurück
Oben