[Gelöst] Allgemeine Verständnisfrage

9. Januar 2009 13:07

Hallo alle zusammen...

Erstmal bitte beachten, dass ich eher aus der VB-Welt komme und mit Navision bislang nicht gearbeitet habe. Ein Bekannter von mir betreibt Navision und möchte in einigen Formularen einige Felder abgeändert haben. Da ich allgemein gesprochen nicht unerfahren in Formulardesign und -Änderungen bin, habe ich ihm pauschal gesagt, dass ich versuchen würde, ihm zu helfen. Nach einiger Einarbeitung bestehen bei mir nun einige Verständnisfragen, die ich hoffe, hier beantwortet zu bekommen.

Zuersteinmal: Im Reportdesigner, genauergesagt in der Sections-Ansicht, ist es möglich, einer Textbox entweder einen eigenen Text, ein DB-Feld, Variable oder eine Funktion anzugeben und einige Skripte zu verwenden, um die Ausgabe weiter zu formattieren, etc... Der ursprüngliche Entwickler hat für eine vorhandene Textbox eine Funktion oder eine Variable genutzt, die ich auch in C/AL-Symbol Menu sehen kann. Jedoch wie findet man nun heraus, welche Funktion, bzw. aus welcher Quelle diese SourceExpression seine Daten bezieht? Im C/AL-Globals ist meine Variable als Code deklariert. Wie kann man jedoch diesen Quellcode einsehen? Ich finde diesen partout nicht....

Für den Tipp, wie man diesen Code einsehen kann, wäre ich dankbar.

Gruß Space
Zuletzt geändert von spaceace am 9. Januar 2009 18:04, insgesamt 1-mal geändert.

Re: Allgemeine Verständnisfrage

9. Januar 2009 13:19

spaceace hat geschrieben:Hallo alle zusammen...
Hallo und herzlich Willkommen in unserer Community.

spaceace hat geschrieben:Jedoch wie findet man nun heraus, welche Funktion, bzw. aus welcher Quelle diese SourceExpression seine Daten bezieht? Im C/AL-Globals ist meine Variable als Code deklariert. Wie kann man jedoch diesen Quellcode einsehen? Ich finde diesen partout nicht....
Variablen erhalten ihre Werte aus den Triggern.
In aller Regel werden die Werte im Trigger OnAfterGetRecord() zugewiesen, manchmal wird in dem Trigger aber nur eine Funktion aufgerufen, welche die Variable füllt.
An den C/AL-Code kommst du mit der Taste [F9]. Solltest du keinen C/AL-Code sehen können, so erlaubt dir deine Lizenz keinen Zugriff darauf.

Re: Allgemeine Verständnisfrage

9. Januar 2009 13:48

Hallo Timo,

danke für Deine Antwort.... Zufriedengestellt bin ich jedoch leider noch nicht.
Da ich mit dem admin-Login in Navision unterwegs bin, gehe ich davon aus, dass ich alle benutzerdefinierten Einstellungen einsehen kann, insbesondere von einem benutzerdefinierten Report. Ich kann verstehen, dass Navision mir keine Änderung oder Nutzung von nicht lizenzierten Modulen ermöglicht - da erhält man auch vor der Einsicht des Reports eine entsprechende Meldung. Also gehe ich davon aus, dass ich die entsprechenden Bestandteile nutzen und sehen können müsste. Falls nicht, welche Berechtigung müsste ich mir geben, um entsprechend diese Bestandteile einsehen und modifizieren zu können?

Wenn ich mir den C/AL-Code anzeigen lasse, wird mir der Documentation()-Abschnitt geboten - mit entsprechenden Anmerkungen desjenigen, der das ganze entwickelt hat - jedoch nicht irgendwelche Funktion mit den im Globals-Abschnitt sichtbaren Variablen/Funktionen. Oder lässt sich der entsprechende Code aus- und einblenden?

Irgendwie ist Navision sehr verwirrend. Da lässt sich schon fast SAP leichter verstehen... :-(

Mit der Hoffnung auf ein oder zwei weitere Tipps...
Gruß Space

Re: Allgemeine Verständnisfrage

9. Januar 2009 14:04

spaceace hat geschrieben:Im C/AL-Globals ist meine Variable als Code deklariert. Wie kann man jedoch diesen Quellcode einsehen? Ich finde diesen partout nicht....

Für den Tipp, wie man diesen Code einsehen kann, wäre ich dankbar.


Ich glaub Du verwechselst da grad was. "Code" ist ein Datentyp in C/AL. In Basic ungefähr string.toupper().

Volker
Zuletzt geändert von vsnase am 9. Januar 2009 14:17, insgesamt 1-mal geändert.

Re: Allgemeine Verständnisfrage

9. Januar 2009 14:07

spaceace hat geschrieben:Da ich mit dem admin-Login in Navision unterwegs bin, gehe ich davon aus, dass ich alle benutzerdefinierten Einstellungen einsehen kann, insbesondere von einem benutzerdefinierten Report.

Deine Entwicklerrechte sind nicht an deinem NAV-Login gebunden, sondern an der NAV-Lizenz, mit der du arbeitest.
Wenn du in einem Report nur den Documentation-Trigger sehen kannst (und keine andere dunkel hinterlegte Zeile = ein anderer Trigger bzw. Funktion), dann reicht diese Lizenz für eine normale Reportbearbeitung nicht aus.

Re: Allgemeine Verständnisfrage

9. Januar 2009 14:38

Wenn du in einem Report nur den Documentation-Trigger sehen kannst (und keine andere dunkel hinterlegte Zeile = ein anderer Trigger bzw. Funktion), dann reicht diese Lizenz für eine normale Reportbearbeitung nicht aus.


Aha... Das erklärt das ein oder andere Problem. Es stellt sich nur noch die Frage: Wie hat der Entwickler bei der Einrichtung von Navision gearbeitet? Wie ist er denn vorgegangen? Er hat damals vor meinen Augen einige Reports am gleichen System wie ich auf die gleiche Art und Weise modifiziert, wie ich es zu tun versuche... Damals hat er das jedoch in einem Tempo gemacht, bei welchem es schwer ist, zu folgen, wenn man nicht firm in der Thematik ist. Oder hat er die Lizenz nach Fertigstellung seiner Entwicklungsarbeit geändert? Ist das überhaupt der normale Weg, um Navision beim Kunden einzuführen? Und was bringt einem eine Lizenz für eine anpassbare Software, die sich gar nicht anpassen lässt?

Folgende Ausgangssituation: Die Lagerführung der Firma hat sich geändert und damit die Lagerortsangabe (6-->8 Stellen). Einige Reports mussten einfach nur etwas angepasst werden, damit der eingegebene String vollständig ausgegeben werden kann und nicht abgeschnitten wird. Andere Reports enthielten in der SourceExpr. ein Skript, das den String aus der DB anders formattiert hat. Zwei der noch zu ändernden Reports haben jedoch anscheinend eine benutzerdefinierte Variable, die durch einen eigenen Code bei der Ausführung des Reports gefüllt wird, welcher einen bereits bearbeiteten String liefert, den ich somit nicht gebrauchen kann.... Der Entwickler hat da irgendwie konfus gearbeitet, aber vielleicht hatte er seine Gründe... Wer weiß. Wie kann man denn diesen Code nun ändern? Ist es überhaupt möglich? Oder bleibt mir nichts anderes übrig, als den damaligen Entwickler zu suchen und zu kontaktieren (Dies mindert jedoch den Lerneffekt und das AHA-Erlebnis enorm) und hoffen, dass er noch die Thematik von damals (5 Jahre her) im Kopf hat?!

Je mehr meiner Fragen beantwortet werden, umso mehr Fragen entstehen daraufhin bei mir....

Ich bitte um noch etwas Input, um zu verstehen....

Gruß Alex

PS:
Erkläre mir - und ich vergesse.
Zeige mir - und ich erinnerre.
Lass es mich tun - und ich verstehe.
Konfuzius (551-479 v. Chr.) hatte schon damals weise Sprüche drauf!

Re: Allgemeine Verständnisfrage

9. Januar 2009 15:26

Vermutlich hat er während der Entwicklung mit seiner (Enwickler-)lizenz gearbeitet, und seitdem wird Navision wieder mit der Lizenz gestartet, die dein Bekannter erworben hat. Logisch, dass er seine Lizenz nicht auf dem Server liegen lassen kann.

Das Problem erklärt sich aber letztendlich dadurch, dass ihr keine Lizenz mit Rechten zum Bearbeiten der Objekte habt.

Das wird aber bei jeder Software dieser Art so gehandhabt, schätze ich.

Re: Allgemeine Verständnisfrage

9. Januar 2009 17:32

McClane hat geschrieben:Vermutlich hat er während der Entwicklung mit seiner (Enwickler-)lizenz gearbeitet, und seitdem wird Navision wieder mit der Lizenz gestartet, die dein Bekannter erworben hat. Logisch, dass er seine Lizenz nicht auf dem Server liegen lassen kann.


Dein Posting habe ich gerade auf meinem System hier nachvollziehen können. Es wurden mehrere Mandanten eingerichtet, wobei der Produktivmandant anscheinend keine Entwicklung erlaubt, was ich auch nachvollziehen kann. Das wird auch üblicherweise gemacht. Entwicklung auf einem DEV-System und Import der entwickelten Bestandteile in ein Produktivsystem. Im anderen (Test-)Mandanten kann ich auch den Code einsehen und verändern. Ich habe dort also weiterreichende Berechtigung, die Reports zu manipulieren und auch zu programmieren als im Produktiv-Mandanten.

Es kommt also die folgende Möglichkeit in Betracht:
1) Ändern des Reports
2) Export aus dem Testmandanten und Import in den Produktivmandant.

Ist dies in Navision prinzipiell möglich?

Davon ausgehend ergibt sich das nächste Problem: in dem einsehbaren Quellcode wird die im Report genutzte Variable weder belegt noch genutzt. Wo kann sie denn sonst noch referenziert werden? Gibt es weitere Stellen in Navision, die es erlauben könnten, eine Variable zum Ausführungszeitpunkt eines Reports mit Werten zu belegen, ohne sie zu triggern?

Vielen Dank für die Antwort
Gruß Space

Re: Allgemeine Verständnisfrage

9. Januar 2009 17:38

spaceace hat geschrieben:Es kommt also die folgende Möglichkeit in Betracht:
1) Ändern des Reports
2) Export aus dem Testmandanten und Import in den Produktivmandant.

Ist dies in Navision prinzipiell möglich?

Ja, genau so wird es auch gemacht, wenn der Report getestet und für gut befunden worden ist.

Davon ausgehend ergibt sich das nächste Problem: in dem einsehbaren Quellcode wird die im Report genutzte Variable weder belegt noch genutzt. Wo kann sie denn sonst noch referenziert werden? Gibt es weitere Stellen in Navision, die es erlauben könnten, eine Variable zum Ausführungszeitpunkt eines Reports mit Werten zu belegen, ohne sie zu triggern?

Hast du wirklich alle DataItems (die Zeilen nach Report -> Design) durchsucht? Auch die erste leere Zeile ist relevant.
Um ganz sicher zu gehen, exportiere den Report im txt-Format und suche in dieser Datei nach der Variablen. Möglicherweise wird die Variable in den Sections verwendet. Alternativ kannst du dich auch auf jede einzelne Section stellen und F9 drücken ;-)

Aber ist es wirklich eineVariable? Meistens ist es ein Feldname, der direkt angesprochen und geändert werden kann.

Re: Allgemeine Verständnisfrage

9. Januar 2009 18:03

Natalie hat geschrieben:Hast du wirklich alle DataItems (die Zeilen nach Report -> Design) durchsucht? Auch die erste leere Zeile ist relevant.
Um ganz sicher zu gehen, exportiere den Report im txt-Format und suche in dieser Datei nach der Variablen. Möglicherweise wird die Variable in den Sections verwendet. Alternativ kannst du dich auch auf jede einzelne Section stellen und F9 drücken ;-)


:idea: Du bist klasse! Das war die Information, die mir gefehlt hat!
Ich wäre nie auf den Gedanken gekommen, jede Zeile des Report-Designers, oder jede Section des Sections-Designers nach vorhandenem Quellcode zu durchsuchen! Bislang war ich es gewöhnt, dass bei der Ansicht des Code-Behinds man im schlimmsten Falle von Quellcode erschlagen wird, aber dass man wie hier im wahrsten Sinne des Wortes bei der Suche der Nadel im Heuhaufen erst den richtigen Heuhaufen suchen muss, habe ich noch nie gesehen! Dabei beherrsche ich 10 Programmiersprachen zzgl. derer Derrivate und Skripte und habe schon Vieles gesehen... Aber sowas... tztztz...

Und siehe da! Schon habe ich auch die gleiche Stelle im Produktivmandanten gefunden! Wenn man weiß, wo man suchen muss, ist es wiederum simpel. Oh man! Jetzt fällt es mir wie Schuppen von den Augen!

Vielen lieben Dank! Ich könnte Dich glatt knutschen!

Gruß Space

Re: Allgemeine Verständnisfrage

9. Januar 2009 18:58

spaceace hat geschrieben:Bislang war ich es gewöhnt, dass bei der Ansicht des Code-Behinds man im schlimmsten Falle von Quellcode erschlagen wird, aber dass man wie hier im wahrsten Sinne des Wortes bei der Suche der Nadel im Heuhaufen erst den richtigen Heuhaufen suchen muss, habe ich noch nie gesehen!

Wer Navision beherrschen lernt, lernt das Umdenken ;-)

Dabei beherrsche ich 10 Programmiersprachen zzgl. derer Derrivate und Skripte und habe schon Vieles gesehen... Aber sowas... tztztz...

Wenn du ein Pascal-Derivat beherrscht, dann ist dir wenigstens die Syntax etwas vertraut. Den Rest kannst du getrost vergessen :twisted:

Ich könnte Dich glatt knutschen!

Nun, da jeder dies hier mitgelesen hat und auch bezeugen kann, werde ich dich bei passender Gelenheit darauf festnageln - kommst du zum Communitytreffen? :mrgreen: