Bodo's Dynamics NAV und Business Central Blog
Bodo ist ein Dynamics NAV Urgestein. Er programmiert Navision seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu Entwicklern ausgebildet. In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics 365 Business Central / Dynamics NAV und Microsoft Azure.Dynamics NAV 2013 – XmlPorts und Option-Felder
Tags: xmlports, option, 2013Mit dem Upgrade Toolkit für Dynamics NAV 2013 bekommen Sie den XmlPort 104002 Import/Export Permissions (enthalten in Upgrade601700.DE.2.fob; NAV 2013 Produkt-DVD, Verzeichnis UpgradeToolkit\Local Objects). Mit diesem XmlPort können Sie die Zugriffsrechte als CSV-Datei sowohl exportieren als auch importieren.
Leider gibt es ein schwerwiegendes Problem (zuletzt getestet mit Build 34664), das ich mit dem folgenden Beispiel demonstrieren möchte.
Der Zugriffsrechtesatz «VERKAUF-DEBITOR« definiert die unten abgebildeten Leserechte für verschiedene Tabellen. Nichts weiter.
Wenn Sie diesen Zugriffsrechtesatz mit dem oben genannten XmlPort exportieren, erhalten Sie eine Textdatei mit unten abgebildetem Inhalt:
So weit so gut oder so langweilig werden Sie denken. Wenn wir allerdings jetzt im nächsten Schritt die vorhandene Zugriffsrechte für «VERKAUF-DEBITOR« löschen und die in der Textdatei gespeicherten Definitionen importieren, sieht das Ergebnis ganz und gar nicht mehr erwartungskonform aus:
Wir haben jetzt nicht mehr nur Leserechte, sondern vollständigen Rechte zum Einfügen, Bearbeiten, Löschen und Ausführen. Schreck lass nach!
Was ist passiert?
In der Tabelle 2000000005 Permission werden die Zugriffsrechte in einem Option-Feld mit den Ausprägungen " ,Ja,Indirekt" gespeichert. Scheinbar setzt der XmlPort die leere Option nicht, sondern ignoriert diese. Und dann schlägt das Schicksal zu. Die Eigenschaft InitValue für die Zugriffsrechte-Felder (Lesen, Einfügen, Bearbeiten, Löschen, Ausführen) ist "Ja" und wird gesetzt…
Was können wir tun? Entweder die InitValue-Eigenschaft ändern oder den XmlPort wie folgt anpassen: Nicht direkt die Option-Felder importieren bzw. exportieren, sondern zunächst über Text-Variablen gehen und die Zuweisung zu den Option-Feldern selber vornehmen. Den geänderten Quellcode können Sie hier herunterladen: XmlPort.104002.ImportExportPermissions.txt.
Quod erat demonstrandum. Wir werden dieses Problem Microsoft melden.