[gelöst] Buchen im fremden Mandant

1. März 2010 18:04

Hallo,
ich muss zunächst etwas ausholen.
Wir haben 2 Mandanten, 1 Produktionsmandant und einen Vertriebsmandant.
Diese Mandanten sind über Schlüsseltabellen verkoppelt, die die automatische Erstellung von Aufträgen und Bestellungen ermöglichen.

Jetzt soll folgendes automatisiert werden:

Wir haben ein Tool der Fa. Comsol zur Versandabwicklung im Einsatz (Multiship). Dieses Tool erzeugt beim Scannen des Warenausgangs Versandeitketten. Jetzt soll folgendes passieren: Für bestimmte Zusteller soll neben der Erzeugung des Versandeitetts auch der Warenausgang in beiden Mandanten, sowie eine WE-Buchung einer Einkaufbestellung gebucht werden.
Dieser Vorgang wurde bisher manuell im jeweilgen Mandanten ausgeführt.
Nun möchte ich diese Abwicklung über den NAS laufen lassen. Wie kann ich steuern, auf welchen Mandant sich der NAS bezieht?
Die Buchungen im Produktionsmandant kann ich durch einen Scannvorgang triggern, aber wie kann ich die Buchungen im Vertriebsmandant auf dem NAS starten?

Ich benötige hierzu die Codeunits 80 und 90. Und da möchte ich vermeiden, für alle Trigger und Tabellen den Changecompany-Befehl zu programmieren.

Meine Idee wäre, 2 NAS in unterschiedlichen Mandanten zu haben...
Hat jemand das schon mal gemacht bzw. gibt es eine andere Lösung?
Zuletzt geändert von rallnus am 2. März 2010 13:07, insgesamt 1-mal geändert.

Re: Buchen im fremden Mandant

1. März 2010 18:45

rallnus hat geschrieben:Wie kann ich steuern, auf welchen Mandant sich der NAS bezieht?

Bei jeder NAS-Einrichtung muss (entweder grafisch per SnapIn oder direkt per Kommandozeile) ein Mandantenname mitgegeben werden. Dies muss bei eurem bestehenden NAS-Dienst schon einmal durchgeführt worden sein, sonst würde der NAS nämlich gar nicht laufen.
rallnus hat geschrieben:Meine Idee wäre, 2 NAS in unterschiedlichen Mandanten zu haben...

Eine Alternative gibt es auch nicht: Pro Mandant ein eigener NAS-Dienst.

Aber jetzt wird es spanned:
Per CHANGECOMPANY kannst du nur auf Tabllendaten zugreifen (lesen, und schreiben/löschen, jedoch OHNE jedgliche Trigger = OHNE Business Logic). Unter CHANGECOMPANY kannst KEINE Funktionen ausführen und insbesondere auch KEINE Objekte wie Codeunits ausführen. Tust du es dennoch, wird der Code stattdessen und ohne Vorwarnung im aktuellen Mandanten, und nicht im Zielmandanten durchgeführt.
Der Ansatz, Arbeiten im Zielmandanten den NAS (des Zielmandanten) ausführen zu lassen, ist die einzig richtige Lösung. Doch woher soll der NAS in Mandant 2 nun wissen, was er wie auszuführen hat? Welche Bestellung soll z.B. gebucht werden? Und wann soll das alles ausgeführt werden?

rallnus hat geschrieben:aber wie kann ich die Buchungen im Vertriebsmandant auf dem NAS starten?

Per CHANGECOMPANY könntest du "hart" (weil ohne Trigger) einen Datensatz im Zielmandanten erzeugen, der alle benötigten Informationen enthält, die wiederum vom NAS entsprechend erkannt werden können.

Weiterhin müssen die Objekte , die durch den NAS (direkt oder indirekt) verwendet werden sollen, gegen Aufruf von Dialog-Variablen sowie Forms und Dataports abgesichert werden.
Der Standard machts in (glaub ich) Codeunit 90 schon vor (IF GUIALLOWED THEN ...), muss aber z.B. in CU 80 nachgezogen werden.

Übrigens: nicht umsonst bietet mein Arbeitgeber eine hübsches Add-On zu genau diesem Thema an ;-)
Wir erzeugen über ein Regelwerk eine XML-Datei, die in der Datenbank in beiden Mandanten abgelegt wird und vom Zielmandanten entsprechend nach einem eigenen Regelwerk verarbeitet werden kann. Buchungen sind so auch möglich.

Re: Buchen im fremden Mandant

2. März 2010 13:04

Hallo Natalie,
deine Antworten sind immer wieder beeindruckend, vielen Dank.
Wie kann ich weiterführende Informationen zu dem addon deines Arbeitsgebers kommen?

Re: [gelöst] Buchen im fremden Mandant

2. März 2010 19:00

PN ist raus.