CHANGECOMPANY im NAV 2009 RTC vs. CC

Mittels folgender beiden Ansätze möchte ich beispielhaft aufzeigen, wie die Funktion CHANGECOMPANY insbesondere für den RTC ab NAV 2009 genutzt werden kann, wenn ein Debitorenübersicht nach Mandantenwechsel gezeigt werden soll:

1) Beispiel für den Aufruf von CHANGECOMPNY im aufrufenden Objekt
2) Beispiel für die Abarbeitung von CHANGECOMPANY im Zielobjekt

zu 1)

OBJECT Codeunit 90000
{
OBJECT-PROPERTIES
{
Date=19.04.10;
Time=16:53:02;
Modified=Yes;
Version List=;
}
PROPERTIES
{
OnRun=VAR
cus@1000 : TEMPORARY Record 18;
BEGIN
Cust.CHANGECOMPANY(CRONUS Tochter GmbH);
IF ISSERVICETIER THEN BEGIN   //<—Hier die Realisierung für den RTC
Cust.FINDFIRST();
REPEAT
cus.INIT();
cus.COPY(Cust);
cus.INSERT();
UNTIL Cust.NEXT = 0;
PAGE.RUNMODAL(PAGE::"Customer List",cus);
END
ELSE
FORM.RUNMODAL(0,Cust); // <—Hier die Realisierung für den CC
END;
}
CODE
{
VAR
Cust@1000 : Record 18;
BEGIN
END.
}
}

zu 2)

In der Page (Zielobjekt) wird eine neue Funktion angelegt:
DoChangeCompany(CompanyName : Text[30])
CurrentCompany := TheCompanyName;
CHANGECOMPANY(TheCompanyName);

In dieser wird einfach der CHANGECOMPANY-Befehl auf den Datensatzzeiger der Page aufgerufen. Sollte Bedarf bestehen, an anderer Stelle in der Page auch auf den Mandanten zugreifen zu wollen, so wird der Name des Mandanten noch in der globalen Variable 'CurrentCompany' gespeichert.

Um nun die Page auch mit Datensätzen eines anderen Mandanten aufzurufen muss die Anzeige der Page programmiert werden, bspw. über:
...
PageVariable.DoChangeCompany('CRONUS Tochter GmbH');
PageVariable.RUN;
...

Viele Grüße
Stefan Rißling
Specialist Support Engineer Dynamics NAV
EMEA Customer Support & Services - SMS&P