24. September 2018 10:03
Hallo,
wenn dem so sein sollte, das der Event-Publisher keinen CHANGECOMPANY für den Event macht, dann heißt das heißt also, dass ein Event- Subscriber grundsätzlich für jeden Record prüfen muss ob er sich im gleichen Mandanten befindet, wie der eigene, und zwar immer folgender Code:
- Code:
If COMPANYNAME <> Rec.CURRENTCOMPANY THEN BEGIN
RecVar1.CHANGECCOMPANY(Rec.CURRENTCOMPANY);
RecVar2.CHANGECCOMPANY(Rec.CURRENTCOMPANY);
RecVar3.CHANGECCOMPANY(Rec.CURRENTCOMPANY);
RecVar4.CHANGECCOMPANY(Rec.CURRENTCOMPANY);
..
END;
Wobei nicht immer sicher ist, ob er das wirklich tun muss, da er nicht weiß was der Anwender beabsichtigt hat, was der Event tun soll.
Sollen z.B. mit dem Event Daten aus einem Untermandanten in einem Hauptmandanten konsolidiert werden, kann es sinnvoll sein, dem Event kein CHANGECOMPANY mit zugeben, ansonsten ist das eigentlich immer nötig.
Mir fällt im Moment allerdings kein weiterer Anwendungsfall ein, bei dem es sinnvoll sein könnte, den Event nicht in dem Mandanten auszuführen, in dem sich der zugehörige Record gerade befindet.
Außerdem ist mir noch kein Event- Subscriber untergekommen, der das wirklich berücksichtigt. Die gehen alle davon aus, dass die Daten sich im aktuellen Mandanten befinden.
EDIT: Man lernt doch immer wider etwas dazu: Das Verhalten ist aber auch so, wenn man direkt über lokale Variablen im OnInsertTrigger auf weitere Tabellen zugreift. Diese Tabellen werden auch im ursprünglichen Mandanten geändert.
Ich glaube daran denkt auch nicht jeder.
Gruß Fiddi