Navision24.de-Trickkiste

11. April 2006 21:51

Navision24.de-Trickkiste

Trickkiste

Tipps & Tricks, Codeschnipsel und Kniffe, die sowohl Endanwendern als auch Entwickler helfen werden, findest du hier.
  • Automatische Zeilennummern [NEU]
    Zeilennummern kennt man unter anderem aus den Verkaufs- und Einkaufszeilen. Als Teil des Primärschlüssels stellen sie sicher, dass die Datensätze eindeutig zu identifizieren sind. Dynamics NAV kümmert sich automatisch um die Vergabe dieser Zeilennummern. Dieser Trick zeigt, wie es funktioniert.
  • Freigabe-Status ignorieren
    Beim Ändern von Belegzeilen prüft Dynamics NAV das Feld Status aus dem dazugehörigen Belegkopf. Sofern dies auf Freigegeben steht, sind Änderungen in den Zeilen nicht möglich. Erst ein Zurücksetzen dessen lässt Änderungen zu. Müssen per C/AL-Code Änderungen durchgeführt werden, gibt es einen kleinen Trick.
  • Unterschied zwischen SETRANGE und SETFILTER
    Sowohl mit SETRANGE als auch mit SETFILTER können die in einer Record-Variable befindlichen Datensätze gefiltert werden. Während mit SETRANGE ein Bereich eingegrenzt wird, bietet SETFILTER weitaus mehrere Filtermöglichkeiten.
  • Farbe bekennen
    Navision kennt viele Farben. 16.777.215 um genau zu sein. Entscheidest du dich für eine Farbe und möchtest diese in Navision angeben, verlangt Navision einen Farbwert. Dieser Farbwert lässt sich durch eine simple Multiplikation des Rot-, des Grün- und des Blauwertes errechnen.
  • Code-Reduzierung: Boolean-Wert prüfen
    Immer dann, wenn eine Variable vom Typ "Boolean" geprüft wird, kann die Angabe TRUE bzw. FALSE entfallen.
  • Mandanten kopieren
    Leider gibt es in Navision keine direkte Funktion um einen bestehenden Mandanten in einem Rutsch zu kopieren. Um dennoch eine Kopie eines Mandanten anzufertigen benutzen wir die Funktion zur Erstellung einer Datensicherung.
  • Übersicht der Bitmaps des Hauptmenüs
    Mit der 4er Version bekam Navision unter anderem den neuen Objekttyp "MenuSuite". Mit ihm werden die Menüs nun nicht mehr über den Objekttype "Form" dargestellt sondern in einem eigenen Navigationsbereich. Mit einer an Outlook angelehnten Optik werden jetzt auch schön kleine Icons im Hauptmenü angezeigt. 16 Stück stehen zur Auswahl.
  • Code-Reduzierung: Variablenwert erhöhen/verringern
    Gerade in REPAT- oder WHILE-Schleifen kommt es in der Praxis häufig vor, dass der Wert einer Variable um einen bestimmten Wert erhöht bzw. verringert werden soll. Auch hier gibt es in Navision eine Abkürzung.
  • Code-Reduzierung: Form-ID 0 (null) öffnen
    Mit FORM.RUN kann jede beliebige Form geöffnet werden. Über den ersten Parameter wird die ID der Form angegeben, die geöffent werden soll. Diese Angabe ist aber - sofern der zweite Parameter angegeben ist - nicht zwingend erforderlich.
  • Versionsnummer anpassen
    Über das Menü des Navision-Clients lässt sich die aktuelle Version des Clients und der Datenbank anzeigen. Letzteres lässt sich einfach und bequem in der Codeunit 1 anpassen.
  • Sicherstellen, dass eine Datei nicht in Benutzung ist
    Beim Handling mit Dateien ist es oft wichtig zu wissen, ob die Datei gerade von einem anderen Programm bzw. Prozess genutzt wird. Da Dateien auch oft für Schnittstellen genutzt werden, ist es dann auch dort wichtig zu wissen, ob die Datei im Zugriff ist oder nicht.
  • Direktes Rechnen in Tabellenfeldern
    Auf den Schreibtischen der Navision-Benutzer findet man oft noch einen Taschenrechner. Mit ihm werden – vor der Eingaben von Zahlen in ein Tabellenfeld - noch schnell ein paar Berechnungen durchgeführt. Dabei unterstützt Navision die Grundrechenarten in allen Tabellenfeldern vom Typ „Decimal“ und „Integer“.
  • Gesetzte Filter vor dem Benutzer verstecken
    Mit dem C/AL-Befehl FILTERGROUP bietet Navision die Möglichkeit, Filter zusetzen und ggf. diese vor dem Benutzer zu verstecken. Der Benutzer bekommt somit nicht mit, dass Filter gesetzt sind.
  • Datum eingeben
    Navision bietet viele Möglichkeiten ein Datum in ein Eingabefeld einzugeben. Wenn du diese Möglichkeiten benutzt, kannst du dir viel Zeit bei der täglichen Navision-Arbeit sparen.
  • Platzhalter einsetzen
    Mit drei verschiedenen Arten von Platzhaltern gibt Navision dem Navision-Entwickler die Möglichkeit, Teile eines Textes für Inhalte - die erst zur Laufzeit entstehen - freizuhalten.
  • Stammdaten zusammenführen
    Tabellen wie die Debitorenbuchungsgruppen, Produktbuchungsgruppen, Herkunftscodes, Lagerorte, etc. tauchen in vielen anderen Tabellen (Verkaufskopf, Postentabellen, etc.) in Form eines eigenen Feldes auf. Oft sollen aber diese Tabellen eine inhaltliche Überarbeitung bekommen und dann kommt auch meistens der Wunsch, dass bestehenden Daten zusammengefasst werden sollen.
  • Daten importieren und dabei die Spaltenüberschriften überspringen
    Mit einem Dataport kann eine Textdatei bequem in eine Navision-Tabelle importiert werden. Wenn die Textdatei jedoch am Anfang eine oder mehrere Zeilen (Spaltenüberschriften, etc.) enthält, die nicht importiert werden sollen, muss etwas passendes Programmiert werden.
  • Tabellen- und Feldbezeichnungen immer in der Einzahl (Singular)
    Die Standardtabellen und die dazugehörigen Felder machen es vor: Deren Name als auch die in mehreren Sprachen hinterlegten Bezeichnungen stehen immer in der Einzahl (Singular). Das hat mehrere gute Gründe und sollte auch bei deinen eigenen Tabellen und Felder so sein.
  • Registerkarten bei Reports & Dataports ausblenden
    Für jedes DataItem eines Reports oder Dataports wird eine eigene Registerkarte beim Starten angezeigt. Neben dem Setzen von Filtern kann dort auch ein Sortierschlüssel gewählt werden. In einigen Fällen kann es aber sinnvoll sein, dass eine oder mehrere Registerkarten ausgeblendet werden.
  • Fenster lässt sich nicht mehr verschieben
    Es kann passieren, dass sich die Fenster innerhalb des Navision-Clients so „blöd” positionieren, dass ein Verschieben dessen nicht mehr möglich ist. Das liegt daran, dass die Titelleiste nicht mehr sichtbar ist und somit sich das Fenster nicht mehr verschieben lässt. Es gibt hier zwei, maximal drei Lösungen.
  • Lästige fin.zup
    Die Datei fin.zup benutzt Navision um Einstellungen vom Benutzer zu speichern. Egal wieviele Navision-Clients du installiert hast, es gibt nur immer die eine fin.zup pro Windows-Anmeldung. Und genau das ist oftmals ein Problem.
  • Unterschied zwischen den Standardvariablen Rec und xRec
    Navision stellt dir die Standardvariablen Rec und xRec zur Verfügung. Beide Variablen präsentieren die gleiche für einem Objekt zugeordnete Tabelle.
  • Verschieben der Datenbankdateien
    Eine Aufteilung der kompletten Navision-Datenbank in mehrere Dateien ist für Navision kein Problem. Dabei wird in der ersten Datenbankdatei der Pfad zur Zweiten angegeben. In der Zweiten dann der Pfad zur Dritten, usw. Werden die Dateien später verschoben, lässt sich die Datenbank nicht mehr ohne Weiteres öffnen.
  • Schnelles Finden eines bestimmten Datensatzes
    Gerade in Tabellen wie die Postentabellen dauern bestimmte Suchvorgänge schon eine Weile bis ein erstes Resultat in Form eines Datensatze angezeigt wird. Der Grund ist in den meisten Fällen nicht ein zu langsamer Client oder Server sondern ein falsch gewählter Sortierschlüssel.
  • Einen Zeilenvorschub im Mailbody erzeugen
    Die Codeunit 397 stellt einige E-Mail-Funktionen zur Verfügung. Das automatische Versenden von E-Mails über Microsoft Outlook ist damit kein Problem. Jedoch ist es nicht so einfach einen simplen Zeilenvorschub im Mailbody zu erzeugen.

Mit freundlicher Unterstützung von http://www.navision24.de
Zuletzt geändert von Timo Lässer am 17. Juli 2007 10:43, insgesamt 4-mal geändert.

7. Januar 2007 12:28

Mandanten kopieren
Leider gibt es in Navision keine direkte Funktion um einen bestehenden Mandanten in einem Rutsch zu kopieren. Um dennoch eine Kopie eines Mandanten anzufertigen benutzen wir die Funktion zur Erstellung einer Datensicherung.

Bei einer SQL Server gestützten NAV Datenbank ist davon dringend abzuraten!!! :shock:
Das Umbenennen eines Mandanten bedeutet hier nämlich, daß ...
... zuerst alle Tabellen mit dem neuen Namen zusätzlich erstellt werden
... dann die Daten von den "alten" Tabellen in die neuen kopiert werden
... und danach die alten Tabellen gelöscht werden.

Je nach DB Größe ist dies ÄUSSERST Zeitaufwendig, abgesehen davon ist das System in der Zwischenzeit soz. "offline".
(Und das TransactionLog quillt soz. über; d.h. auch physikalische Problem sind zu erwarten)

Unter SQL Server ist daher wie folgt zu Verfahren:

1. Den neuen Mandanten anlegen
2. Die Daten via DTS/SSIS kopieren (alternativ kann auch das Utility "Company Copy" http://www.mibuso.com/dlinfo.asp?FileID=275 hier eingesetzt werden)

Wenn die Datenbank eh nur einen Mandanten enthält, dann ist es am einfachsten eine SQL Datensicherung der DB zu erstellen (Full Backup) und dieses als neue Datenbank (gleicher Mandantenname) zu restoren.

Außerdem hätte ich folgenden Änderungs-Vorschlag zur dargestellten Vorgehensweise:

1. Datensicherung (FBK) des Ursprungs-Mandanten erstellen
2. Umbenennen des Ursprungs-Mandanten in neuen Namen
3. Datensicherung aus 1. importieren (dabei wird der Ursprungs-Mandant wieder angelegt)

Hier ist nur einmalig ein Umbenennen notwendig - das spart Zeit!

Gruß,
Jörg

17. Juli 2007 10:44

Historie:
  • 11.04.2006: Tipps & Tricks von http://www.Navision24.de verlinkt (8 Tipps & Tricks)
  • 14.04.2006: 1 weiteren Trick aufgenommen
  • 14.08.2006: 1 weiteren Trick aufgenommen
  • 15.08.2006: 1 weiteren Trick aufgenommen
  • 30.08.2006: 1 weiteren Trick aufgenommen
  • 20.09.2006: 1 weiteren Trick aufgenommen
  • 25.10.2006: 1 weiteren Trick aufgenommen
  • 15.11.2006: 1 weiteren Trick aufgenommen
  • 21.11.2006: 1 weiteren Trick aufgenommen
  • 06.12.2006: 2 weitere Tricks aufgenommen
  • 06.01.2007: 2 weitere Tricks aufgenommen
  • 14.01.2007: 1 weiteren Trick aufgenommen
  • 21.01.2007: 1 weiteren Trick aufgenommen
  • 15.04.2007: 1 weiteren Trick aufgenommen
  • 23.06.2007: 1 weiteren Trick aufgenommen
  • 17.07.2007: 1 weiteren Trick aufgenommen [NEU]
    ___________________________________________
    25 Tipps & Tricks

17. Juli 2007 11:08

von der Vorgehensweise
Außerdem hätte ich folgenden Änderungs-Vorschlag zur dargestellten Vorgehensweise:

1. Datensicherung (FBK) des Ursprungs-Mandanten erstellen
2. Umbenennen des Ursprungs-Mandanten in neuen Namen
3. Datensicherung aus 1. importieren (dabei wird der Ursprungs-Mandant wieder angelegt)

Hier ist nur einmalig ein Umbenennen notwendig - das spart Zeit!

würde ich abraten.
Folgender Grund, sobald in irgendeiner Einrichtung auf Mandantenübergreifenden Tabellen (und sei es nur mandantenspezifische Zugriffsrechte der Mandantenname auftaucht, wird der konsequent mit renamed, was zur Folge hat, dass diese Verlinkungen alle auf den neuen testmandanten zeigen.

Wir favourisieren in diesem Fall das Einspielen des Backupsin eine C/Side Datenbank u.U. mit deaktivieren aller Schlüssel. Dort den Mandanten umbenennen, wieder sichern, und dann als Copy auf dem SQL Server wieder einspielen.
hat u. anderen auch den Vorteil, dass der Benutzer in der Zwischenzeit weiterarbeiten kann.