Zum Inhalt

Namenskonvention

In Business Central gibt es klare Namenskonventionen, die vorgeben, wie Objekte oder Variablen zu benennen sind. Microsoft hat einige Regeln hier definiert.

Suffix

Namenskonflikte in Business Central können entstehen, wenn zwei Erweiterungen die selben Namen verwenden. Das kann z.B. passieren, wenn zwei Apps eine neue Tabelle mit dem selben Namen beinhalten oder ein Feld mit dem identischen Namen zu einer Base App Tabelle hinzufügen. Werden diese beiden Apps dann in eine Datenbank installiert, schlägt das Deployment fehl.

Um dies zu verhindern, sind Suffixe bei der Benamung zu verwenden. Dabei werden alle Namen, die außerhalb der eigenen App sichtbar sind, mit einem Suffix versehen. Mindestens ist der Suffix TSO zu verwenden, da dieses Kürzel ist bei Microsoft angemeldet und für uns reserviert ist. Es kann also keine App eines anderes Partners dieses Suffix verwenden.

Es ist nicht notwendig pro Kundenprojekt ein eigenes zusätzliches "Kunden-Suffix" zu nutzen. Die individuell entwickelten Kundenapps würden sich sowieso nicht überschneiden. Die erste App in einem Projekt könnte somit einfach das "TSO"-Suffix erhalten. Bei weiteren eigenen Apps in einem Kundenprojekt sollte dann zu dem "TSO"-Suffix noch genau ein Buchstabe vorangestellt werden.

TSO-eigene Module haben immer mehr als einen führenden Buchstaben im Suffix, z.B. „SysTSO“, etc.

  • Beispiel
    • Eine TableExtension der "Customer"-Tabelle in der 1. App in einem Kundenprojekt, würde dann "CustomerTSO" heißen.
    • Eine TableExtension der "Customer"-Tabelle in der 2. App in einem Kundenprojekt (beispielsweise eine DataMigration-App), würde dann "CustomerDTSO" heißen.

Namespaces

Info

Muss noch besprochen werden

Schema

Suffix: +TSO

  • Extension-Objekte:
    • z. B. Table- und Page-Extensions
    • Objektname: +Suffix
    • Namen von Felder, Actions, (globale und lokale) Procedures und Groups --> mit Suffix: +Suffix
  • Eigene Objekte:
    • z. B. eigene Tables, Pages, Codeunits
    • Objektname: +Suffix
    • Namen von Felder, Actions, (globale und lokale) Procedures und Groups --> ohne Suffix:

Automatismus

Um sich nicht bei jedem Namen an die Konventionen erinnern zu müssen, kann in der "Settings.json" ein Automatismus aktiviert werden. Eine Erläuterung findet sich dafür hier

Beispiele

Hier sind ein paar Codeausschnitte, die eine beispielhafte Umsetzung zeigen. Die grün-markierten Suffixe wurden bei der oben gezeigten Einrichtung automatisch gesetzt.

Eine eigene neue Tabelle:

SuffixTable.png Eine TableExtension (mit falschem Funktionsnamen):

SuffixTableExtension Eine TableExtension (mit manuell korrigiertem Funktionsnamen):

SuffixTableExtension2

Hinweis: Der CodeAnalyzer "AppSourceCop" sorgt dafür, dass man eine Warnung erhält, wenn eine Funktion nicht das notwendige Suffix erhält. Hierfür muss in der "AppSourceCop.json" noch <"MandatorySuffix" ="TSO"> eingetragen werden.

Eine PageExtension:

SuffixPageExtension