ValidateWrite mit Hilfe eines Events in einer Augmentation-Klasse erweitern

Im folgenden Beitrag möchte ich zeigen, wie man mit Hilfe eines Events eine Methode einer Tabelle erweitern kann.

Nachdem man sich das gewünschte Projekt erstellt/geöffnet hat kann man über das Kontextmenü des Projektes unter Add > New item eines neues Objekt vom Typ Class erstellen. Dieser Klasse gibt man noch einen Namen, wichtig dabei ist die Endung _Extension.

Screenshot

Danach steht eine einfache Klasse zur Verfügung, die sich wie folgt darstellt

class FMCustomer_DMO_Table_Extension
{
}

Nun ändern wir über das Attribut ExtensionOf die Klasse, ergänzen sie um den Modifier final. Solcherart gekennzeichnete Klassen werden auch als Augmentation-Klassen bezeichnet.

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
}

Nun wechseln wir wieder in den Application Explorer, suchen uns dort jene Tabelle die wir erweitern wollen und öffnen über das Kontextmenü der Tabelle und der Option Open designer diese im Arbeitsbereich.

Screenshot

Hier erweitern wir den Knoten Events, wählen das jeweilige Event aus und wählen im Kontextmenü dieses Events - im Beispiel das onValidatingWrite() - die Option Copy event handler method.

Dadurch wird ein Code-Snippet in die Zwischenablage kopiert welches wir in unserer Augmentation-Klasse einfügen können.

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
    [DataEventHandler(tableStr(FMCustomer), DataEventType::ValidatingWrite)]
    public static void FMCustomer_onValidatingWrite(Common sender, DataEventArgs e)
    {
    }
}

Nun geht’s ans Umsetzen der eigentlichen Logik, im Beispiel habe ich eine sehr einfache Prüfung eines Feldes implementiert.

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
    [DataEventHandler(tableStr(FMCustomer), DataEventType::ValidatingWrite)]
    public static void FMCustomer_onValidatingWrite(Common sender, DataEventArgs e)
    {
        FMCustomer fmCustomer = sender as FMCustomer;
        ValidateEventArgs args = e as ValidateEventArgs;
        boolean ret = args.parmValidateResult();

    If (ret)
        {
            if (fmCustomer.Email
                && strFind(fmCustomer.Email,
                    "@",
                    0,
                    strLen(fmCustomer.Email)) == 0)
            {
                ret = checkFailed("Invalid E-Mail.");
            }
        }

        args.parmValidateResult(ret);
    }
}

Der letzte Schritt ist nun der Build/Rebuild der Solution bzw. des Projektes und ein möglichst erfolgreicher Test der Anpassung.

Dieser Beitrag wurde basierend auf der Version 7.3 mit Platform-Update 12 und installiertem Fleet Management Sample Application erstellt.

Dieser Beitrag bezieht sich auf die Version:
Dynamics 365 for Finance and Operations

Kommentar hinzufügen
 
 

 

Dies ist ein Beitrag aus der Serie »Erste Schritte in Microsoft Dynamics 365 for Finance and Operations«

Microsoft Dynamics 365 for Finance and Operations stellt mich als langjährigen Entwickler von Dynamics AX  vor viele kleine und grössere Herausforderungen. Begleitet mich deshalb in dieser Serie auf meiner Reise durch unbekannte Gewässer ;-)

Alle Beiträge dieser Serie anzeigen

RSS-Feed dieser Blogserie


 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu