GWS BU-RAH Extension Pack - Vollständige Funktionsdokumentation
Übersicht
Die GWS BU-RAH Extension Pack ist eine speziell für das Projektgeschäft in der BU-RAH entwickelte VS Code-Erweiterung, die verschiedene Automatisierungstools für die Arbeit mit Microsoft Dynamics 365 Business Central AL-Dateien bereitstellt.
Version: 25.8.0
Publisher: BU-RAHExtension
Kompatibilität: VS Code ^1.92.0
Standardisierungsfunktionen
1. BU-RAH: Rename Files (renameFiles
)
Zweck: Automatische Umbenennung von AL-Dateien basierend auf deren Objektdefinition.
Funktionsweise:
- Durchsucht rekursiv alle
.al
-Dateien im src
-Verzeichnis
- Liest die erste Zeile jeder Datei zur Objektidentifikation
- Extrahiert Objekttyp, Nummer und Namen
- Benennt Dateien nach dem Schema um:
{ShortType}{Number}.{PascalCaseName}.al
Beispiel-Transformation:
Vorher: Beliebiger_Dateiname.al
Nachher: Pag-Ext5176832.ItemGroupEvaluationExt.al
Unterstützte Objekttypen:
- Table → Tab
- Page → Pag
- Codeunit → Cod
- Report → Rep
- XMLport → Xml
- Query → Que
- Enum → Enum
- Interface → Int
- ControlAddIn → Ctrl
- PageExtension → Pag-Ext
- TableExtension → Tab-Ext
- EnumExtension → Enum-Ext
- ReportExtension → Rep-Ext
- PermissionSet → Perm
- PermissionSetExtension → Perm-Ext
Zweck: Modernisiert AL-Code durch Umwandlung veralteter Großbuchstaben-Keywords in moderne camelCase-Syntax.
Transformierte Keywords:
IF → if THEN → then
BEGIN → begin END → end
EXIT → exit LOCAL → local
PROCEDURE → procedure ELSE → else
REPEAT → repeat UNTIL → until
FINDSET → FindSet FINDFIRST → FindFirst
TRUE → true FALSE → false
NOT → not WITH → with
DO → do GET → Get
INSERT → Insert DELETE → Delete
MODIFY → Modify UPDATE → Update
Funktionsweise:
- Verwendet reguläre Ausdrücke mit Wortgrenzen (
\b
) für präzise Ersetzung
- Verarbeitet alle
.al
-Dateien rekursiv
- Erhält Code-Funktionalität bei verbesserter Lesbarkeit
Vorher/Nachher Beispiel:
// Vorher
IF Customer.GET(CustomerNo) THEN BEGIN
Customer.MODIFY(TRUE);
END;
// Nachher
if Customer.Get(CustomerNo) then begin
Customer.Modify(true);
end;
Zweck: Automatische Transformation von Tabellen-IDs in Permission Sets basierend auf einer Excel-Mapping-Tabelle.
Funktionsweise:
- Lädt Mapping-Daten aus
resources/table_map.xlsx
- Sucht in allen
.al
-Dateien nach Permissions
-Blöcken
- Ersetzt numerische Tabellen-IDs durch Objektnamen
- Verwendet Excel-Datei als Referenz für ID-zu-Name Zuordnung
Excel-Struktur:
- Spalte A: Tabellen-ID (numerisch)
- Spalte B: Tabellenname (String)
Transformation Beispiel:
// Vorher
Permissions = tabledata 18 = RIMD,
tabledata 27 = RIMD;
// Nachher
Permissions = tabledata "Customer" = RIMD,
tabledata "Item" = RIMD;
4. BU-RAH: Upgrade Extension (upgradeExtension
)
Zweck: Erstellt eine neue Version der Extension für BC-Upgrades mit zwei Modi.
Modus 1: Neuer Ordner
Funktionsweise:
- Kopiert das gesamte Projekt in einen neuen versionsspezifischen Ordner (Format:
BC{MajorVersion}
)
- Aktualisiert die
app.json
mit der neuen BC-Version
- Leert den
.alpackages
Ordner
- Kopiert passende Symbol-Dateien aus dem Netzwerk
- Optional: Wechselt das VS Code Fenster zum neuen Ordner
Modus 2: Neuer Git-Branch
Funktionsweise:
- Wählt einen bestehenden Branch für Checkout aus
- Erstellt einen neuen Git-Branch mit automatischer Namensgebung:
Individual-Extension/{version}/{checkoutBranch}
- Branch-Name ist editierbar vor der Erstellung
- Führt die gleichen Aktualisierungen durch wie im Ordner-Modus
- Behält die Git-Historie bei
Verfügbare Versionen:
- BC 21.0.0.0
- BC 22.0.0.0
- BC 23.0.0.0
- BC 25.0.0.0
Symbol-Management:
- Automatisches Kopieren von BC-Symbolen aus Netzwerkpfaden
- Unterstützung für verschiedene BC-Versionen
- System.app wird aus dem neuesten Hotfix-Ordner kopiert
- Fehlerbehandlung bei fehlenden Netzwerkressourcen
Branch-Naming Beispiel:
Ausgewählte Version: 25.0.0.0
Checkout Branch: main
Vorgeschlagener Name: Individual-Extension/25.0/main
5. BU-RAH: Pull Auslieferungsversion (pullAuslieferungsversion
)
Zweck: Eigenständige Funktion zum Aktualisieren der Symbol-Dateien ohne komplettes Upgrade.
Funktionsweise:
- Wählt die gewünschte BC-Version aus
- Leert den
.alpackages
Ordner vollständig
- Lädt die entsprechenden Symbol-Dateien aus dem Netzwerk:
- Microsoft_System Application.app
- gevis-r-only-onprem.app
- GWS mbH_gevis-erp_*.app
- Kopiert System.app aus dem neuesten Hotfix wenn verfügbar
Netzwerk-Pfade (versionsspezifisch):
- BC 21:
\\gws-muenster.local\Daten\gevis\Releases\gevis\_R21\R21_5_2000_0_freigegeben
- BC 22:
\\gws-muenster.local\Daten\gevis\Releases\gevis\_R22\R22_5_2000_0_freigegeben
- BC 23:
\\gws-muenster.local\Daten\gevis\Releases\gevis\_R23\R23.5.5000.0
- BC 25:
\\gws-muenster.local\Daten\gevis\Releases\gevis\_R25\R25.8.x Auslieferungsversion
Anwendungsfälle:
- Schnelle Symbol-Aktualisierung ohne Projekt-Kopie
- Wechsel zwischen verschiedenen BC-Versionen
- Reparatur beschädigter Symbol-Dateien
6. BU-RAH: Standardize Repository (standardizeRepo
)
Zweck: Kombinierte Ausführung mehrerer Standardisierungsfunktionen in einem Durchgang.
Ausgeführte Operationen:
- BU-RAH: Rename Files - Dateiumbenennung
- BU-RAH: Uppercase Fix - Keyword-Modernisierung
- BU-RAH: Transform Permission IDs - Permission-Transformation
Nutzen:
- Zeitersparnis durch Batch-Verarbeitung
- Konsistente Anwendung aller Standardisierungsregeln
- Ideal für neue Projekte oder Code-Reviews
Dokumentationsfunktionen
1. BU-RAH: Generate Documentation (generateDocumentation
)
Zweck: Automatische Erstellung einer strukturierten README.md basierend auf AL-Code-Analyse.
AI-Unterstützte Analyse:
- Erkennt alle AL-Objekttypen (Table, Page, Codeunit, etc.)
- Identifiziert logische Zusammenhänge zwischen Objekten
- Gruppiert verwandte Komponenten zu Business-Themen
- Erstellt hierarchische Dokumentationsstruktur
Generierte Dokumentation:
# Dokumentation der AL Extension
## Übersicht
- Name der Extension: [Automatisch erkannt]
- Version: [Aus app.json]
- Nummernkreis: [Analysiert aus Objekten]
- Hauptthemen: [Business-Logik gruppiert]
## Themenbereiche
### [Thema 1: z.B. Verkaufsprozess-Erweiterung]
**Beteiligte Komponenten:**
- Table: [Automatisch erkannt]
- Page: [Automatisch erkannt]
- Codeunit: [Automatisch erkannt]
**Beschreibung:**
[AI-generierte Business-Logik Beschreibung]
Analyse-Algorithmus:
- Erkennt SourceTable-Beziehungen zwischen Pages und Tables
- Identifiziert TableRelations und Referenzen
- Gruppiert Objekte nach funktionalen Zusammenhängen
- Erstellt Business-orientierte Beschreibungen
Zweck: Extrahiert die erste Zeile aller AL-Dateien zur schnellen Übersicht über Objektdefinitionen.
Funktionsweise:
- Sammelt alle
.al
-Dateien im Workspace
- Liest die erste Zeile jeder Datei
- Erstellt eine
docu.txt
Datei im Workspace-Root
- Leere Dateien werden als
[Datei ist leer]
markiert
Ausgabeformat:
table 50100 "Customer Extension"
page 50101 "Sales Order Enhancement"
codeunit 50102 "Utility Functions"
Anwendungsfälle:
- Schnelle Inventarisierung aller Objekte
- Überprüfung der Nummerkreise
- Dokumentationserstellung
Beta Funktionen
1. BU-RAH: CherryPicker (openCherryPickTab
)
Zweck: Grafische Benutzeroberfläche für selective Git-Commits zwischen Branches.
Features:
- Webview-Interface mit modernem Design
- Commit-Browser mit Paginierung (10 Commits pro Seite)
- Branch-Auswahl (alle lokalen Branches außer dem aktuellen)
- Multi-Selection für Commits und Ziel-Branches
- Batch-Operations für effizientes Cherry-Picking
Benutzeroberfläche:
- Commit-Liste: Datum, Autor, Hash, Nachricht
- Branch-Liste: Checkbox-Auswahl für Ziel-Branches
- Aktions-Buttons: Cherry-Pick, Clear Selection
- Status-Anzeige: Erfolg/Fehler-Feedback
Workflow:
- Commits aus der Historie auswählen
- Ziel-Branches markieren
- Cherry-Pick Operation ausführen
- Automatisches Logging in Output Channel
Git-Integration:
- Verwendet
simple-git
Library
- Unterstützt komplexe Git-Operationen
- Fehlerbehandlung für Merge-Konflikte
Code-Snippets
Die Extension bietet vorgefertigte Code-Templates für häufig verwendete AL- und JSON-Strukturen.
AL-Snippets
Codeunit Template (codeunit
)
Auslöser: codeunit
+ Tab
Generiert:
codeunit {5176800:5176850} "MyCodeunit"
{
/// <summary>
/// Description
/// </summary>
trigger OnRun()
begin
end;
procedure MyProcedure()
begin
[Cursor]
end;
}
JSON-Snippets
Launch.json Template (al-launch-json
)
Auslöser: al-launch-json
+ Tab
Generiert: Komplette VS Code Launch-Konfiguration für AL-Debugging mit:
- AL-spezifische Einstellungen
- Editierbare Platzhalter für Projektname, Server und ServerInstance
- Vorkonfigurierte Standard-Ports und Authentifizierung
App.json Template (al-app-json
)
Auslöser: al-app-json
+ Tab
Generiert: Vollständige AL-App-Manifest mit:
- Editierbare Platzhalter für ID, Name/Brief und Version
- Automatisch synchronisierte Name- und Brief-Felder
- Vorkonfigurierte Dependencies (System Application, gevis-erp, gevis-r-only-onprem)
- Standard BU-RAH ID-Ranges (5176800-5176849)
Einzelne Launch-Konfiguration (al-config
)
Auslöser: al-config
+ Tab
Generiert: Einzelne Konfiguration für bestehende launch.json Dateien
Snippet-Navigation:
- Tab: Nächster Platzhalter
- Shift+Tab: Vorheriger Platzhalter
- Escape: Snippet-Modus verlassen
Installation & Verwendung
Installation
- VSIX-Datei herunterladen:
bu-rah-extension-pack-25.8.1.vsix
- In VS Code: Ctrl+Shift+P → "Extensions: Install from VSIX..."
- Extension automatisch nach Installation aktiviert
Zugriff auf Funktionen
Befehlspalette: Ctrl+Shift+P → "BU-RAH:" + gewünschte Funktion
Verfügbare Commands
BU-RAH: Rename Files
BU-RAH: Extract FirstLine
BU-RAH: Upgrade Extension
BU-RAH: Uppercase Fix
BU-RAH: Transform Permission IDs
BU-RAH: Standardize Repository
BU-RAH: CherryPicker
BU-RAH: Generate Documentation
BU-RAH: Pull Auslieferungsversion
Systemvoraussetzungen
- VS Code ^1.92.0
- Git (für CherryPicker und Upgrade-Funktionen)
- Netzwerkzugriff zu GWS-Servern (für Symbol-Downloads)
- Node.js Dependencies:
simple-git
, xlsx
Workspace-Struktur
Projekt/
├── .vscode/
│ └── launch.json
├── src/
│ └── *.al Dateien
├── app.json
├── .alpackages/
└── resources/
└── table_map.xlsx