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:
- 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:
Eine TableExtension (mit falschem Funktionsnamen):
Eine TableExtension (mit manuell korrigiertem Funktionsnamen):
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:

