11. Januar 2023 16:15
Hi Zusammen,
ich bräuchte bitte mal wieder Eurer Schwarmwissen.
ich versuche gerade testweise eine sehr große eigene Lösung von BC14 (CU18)zu einer höheren BC Version zu migrieren BC21 (CU2).
Die Lösung beinhaltet 100 % eigene Objekte, es werden keine MS Objekte verwendet.
Fürs Testszenario habe ich im ges. BC14 C/AL Code sämtliche .NET und Automation Verweise entfernt, um dies kümmere ich mich später,
ich wollte einfach unsere komplette Lösung in reinem C/AL Code durch den AL Konverter (txt2al) jagen
und schauen ob sich das als neue Extension dann zumindest kompilieren lässt, in eine frische BC21 Cronus Datenbank.
VSCode Projekt ist angelegt und Symbole können heruntergeladen werden.
Im Projekt ist als target OnPrem definiert.
Um eine Datenkonvertierung kümmere ich mich auch später, es soll wirklich nur um die Konvertierung der
eigenen Lösung von C/AL in eine neue al Extension gehen.
Zu meinem Erschrecken sind es, obwohl es reiner C/AL Codewar und in BC14 0 Kompilierfehler sind,
jetzt in VSCode über 600 Kompilierfehler.
Ich versuche nun die Fehlerarten etwas zu klassifizieren und dann im Bündel abzustellen.
Aber eine Fehlerart kann ich abs. nicht nachvollziehen,
es ist eigentlich ein ganz einfacher Fall:
-eine Page ruft eine Funktion einer Codeunit auf (mit Funktionsname "CheckUserEmployeeDataConfig"). Diese Codeunit ist in der Page als glob. Variable deklariert.
Der Funktionsaufruf ist rot unterkringelt, die Fehlermeldung sieht ungefährt so aus (habe den Firmenname, genauen Bezeichnungen etwas generalisiert...):
'Codeunit "XX RFQ Mgmt."' does not contain a definition for 'CheckUserEmployeeDataConfig'AL(AL0132)
In der entsprechenden Codeunit ist die Funktion ganz normal enthalten, aber mir fällt auf, dass ganz am Anfang der Codeunit
der Objektname rot unterkringelt ist und es ist dieser Kompilierfehler:
An application object of type 'Codeunit' with name 'XX RFQ Mgmt.' is already declared by the extension 'ExtName by ExtCreator (1.0.0.0)'AL(AL0197)
Die Meldung kann nicht korrekt sein, weder ein zweites Objekt mit gleichem Namen, noch zwei mal die gleiche ID ist in der Extension angelegt.
Durch einen Zufall, habe ich den Punkt des Codeunit Namens entfernt, und nun ist der Kompilierfehler weg.
-> kann es sein, dass in al keine Punkte mehr in den Objektnamen erlaubt sind?
-> jetzt kommt aber der Oberhammer. Nach Änderung des CU Objektnames wird dieser nicht in den anderen al Objekten mitgezogen,
die mit dieser Codeunit arbeiten.
Im alten Objekt Designer wurden ja alle Referenzobjekte automatisch mitgeändert.
Nur wenn ich in der besagten Page bei der Variable für die Codeunit auch den Punkt entferne,
wird die Codeunit und die aufgerufene Funktion erkannt.
Ist das wirklich Stand der Technik in der al Welt? Wenn ja, wie geht Ihr damit um?
Danke Euch im Voraus
Viele Grüße
Zuletzt geändert von Gollum83 am 20. Januar 2023 13:04, insgesamt 1-mal geändert.