[Gelöst]c# NAV 2013 R2 öffnen & direkt an Stelle X springen

27. Februar 2015 11:06

Hallo Liebe Community,

Ich bin relativ neu in der Programmierwelt.
Aktuell versuche ich das ich über c# den NAV 2013 R2 client öffnen kann und das ich direkt an eine beliebige stelle springe, meinetwegen zu den Artiekln.

Problem welches ich habe, ist das ich nicht weiß, wie ich c# den Pfad von NAV mitteile.
Aktuell bekomme ich bei folgendem code folgende Fehlermeldung.

Code:

Code:
class MyProcess
    
{

        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("Microsoft.Dynamics.Nav.Client.exe");

            startInfo.Arguments = "DynamicsNAV://localhost:7106/DynamicsNAV71/CRONUS AG/Abteilungen/Verkauf & Marketing/Lager & Preise/Artikel";

            Process.Start(startInfo);
        }

        static void Main(string[] args)
        {
             MyProcess myProcess = new MyProcess();
             myProcess.OpenWithStartInfo();
        }
    }

 
Fehlermeldung:
"Die URL muss genau fünf Schrägstriche vor einem optionalen Fragezeichen besitzen."
----------

Leider kann Ich mit dieser Fehlermeldung gar nichts anfangen.

Es kann natürlich auch am Code liegen, das ich die Befehle falsch benutze bzw. falsche befehle benutze, fange wie gesagt damit erst an.

Lasse ich den Teil "DynamicsNAV://localhost:7106/DynamicsNAV71/" vorher weg, bekomme ich die Fehlermeldung. "Die angegebenen Daten können nicht als URL interpretiert werden.

Weiß einer, wie ich einen Pfad von NAV in c# angeben muss ?
Ich arbeite mit Visual Studio 2012 Professional

Vielen Dank im Voraus
Daniel
Zuletzt geändert von DWE am 5. März 2015 10:12, insgesamt 1-mal geändert.

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

27. Februar 2015 14:24

Habe das Problem nun endlich gelöst.

Code:
namespace NAV_öffnen_und_auf_Seite_X_springen
{
    class MyProcess
    
{

        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("Microsoft.Dynamics.Nav.Client.exe");

            startInfo.Arguments = "\"DynamicsNAV://localhost:7106/DynamicsNAV71/CRONUS AG/runpage?page=21\"";
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;
            Process.Start(startInfo);
        }
        static void Main(string[] args)
        {
            MyProcess myProcess = new MyProcess();
            myProcess.OpenWithStartInfo();
        }
    }

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

27. Februar 2015 14:38

Vielen Dank fürs Teilen!
Ich habe zur Verdeutlichung noch Code-Tags hinzugefügt.

Wenn du jetzt noch den blauen Teil meiner Signatur beachten würdest, wäre ich dir noch einmal dankbar :-)

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

3. März 2015 10:34

Soweit sogut ...

Leider stellte sich heraus, dass mein kleines Programm noch die ein oder andere Schwachstelle hat.
Durch das ausführen meines Programms, öffnet sich zwar einwandfrei NAV 2013 R2, und es öffnet sich auch die angegebene Page (Dabitorenkarte), jedoch leider im Ansichtsmodus, sprich ich bekomme ein Debitor gezeigt.
Ich hätte aber gerne, das ich eine leere Debitorenkarte bekomme. Ich muss c# also irgendwie sagen, das der Seitenmodus "create" sein soll und bei Datensatz soll er keinen bestehenden laden, sondern einen neuen anlegen.
Kann ich c# diese Informationen mitteilen ?


Die zweite Schwachstelle die mein Programm beinhaltet hat, ist das ich die localhost Adresse fest vergebe.
Wenn ich das Programm auf einem anderen PC ausführen will, sagt er mir logischerweise das er keine Verbindung zum Server herstellen konnte.
Wie kann ich es schaffen, dass ich dieses Problem nicht mehr habe?

Mit Freundlichen Grüßen
Daniel

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

3. März 2015 12:33

Zuerst zwei Links die interessant sein könnten:

MSDN
MSDN Blog

zu 1. Ich würde per C# einen neuen Datensatz anlegen und diesen dann darstellen. Dann muss der Benutzer höchst wahrscheinlich nur noch die Action "Bearbeiten" anklicken. Oder du öffnest statt der Karte die Liste und der Benutzer klickt auf "Neu". Ich habe jedenfalls keine Möglichkeit gefunden, die URL so zu gestalten, dass sie im Create Mode geöffnet wird.

Zu 2. Entweder du erstellst eine Konfigurationsdialog für dein Programm, in welchem du die richtigen Informationen hinterlegst oder du führst den Link einfach so aus:

"DynamicsNAV:////runpage?page=<page id> "

Dann wird die letzte Einstellung zu Server und Mandant aus dem NAV Client verwendet.

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

3. März 2015 16:41

Hallo Michael,

erst mal vielen Dank für die beiden links.
Waren durchaus beide interessant. Werde mir die aufjedenfall gut weglegen.

Zu deinen Vorschlägen:
zu 1. Die Frage ist ja, wie lege ich einen neuen Datensatz an ? Gehe ich im Client auf Debitor und sage da "Neu", öffnet sich die Page "Debitorkarte", wo ich einen neuen Debitor anlegen kann. Diese Page hat die ID 21.
Öffne ich ein bestehenden Debitor, ist dies ebenfalls die page ID 21.
Und wenn ich meinem Programm in c# sage, öffne bitte die Page mit der ID 21, öffnet er mir auch diese Page, aber leider nicht in dem "create Modus", sondern er zeigt mir den ersten Debitor an.
Die Alternative, mit der Liste, kam mir auch schon in den Sinn, ist halt nur nicht ganz so Komfortabel. Trotzdem noch besser als nichts.

zu 2. habe den Link mal so wie unten in mein Programm eingefügt. Auf meinen Rechner läuft es einwandfrei. Werde Donnerstag prüfen, ob es auch auf anderen Rechnern läuft.

Aufjedenfall vielen Dank. Hat mich ein gutes Stück weiter gebracht. Werde mich Donnerstag bzgl des Link´s nochmal melden und sagen ob es geklappt hat. Danach werde ich den Thread, wie von Natalie gewünscht beenden :)

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

4. März 2015 00:37

Ich kann dir die MSDN Seiten zu Dynamics NAV 2013 nur nochmal nahelegen. Die sind mittlerweile richtig gut, wenn auch auf englisch.

Für dich im Speziellen sind die Seiten zu den Webservices interessant.

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

5. März 2015 08:05

Ich bin etwas unsicher, ob du nur übersehen hast, dass es spezielle Parameter für "runpage" gibt (wie "mode"), oder ob bei dir ein Problem dabei auftritt. Schau dir mal bitte noch die folgenden Links an, in denen es darum geht, per URL Objekte zu starten und auch in Kombination mit dem Client.

Code:
Microsoft.Dynamics.Nav.Client.exe "DynamicsNAV://localhost/DynamicsNAV80/CRONUS%20AG/runpage?page=21&mode=create"
Hier die zwei Links: Creating and Running Hyperlinks und Starting the Windows Client at the Command Prompt.

Re: per c# NAV 2013 R2 öffnen und direkt an Stelle X springe

5. März 2015 10:08

Michael, ja, die werde ich mir gut weglegen. Danke :)

SilverX, genau das habe ich gesucht, aber leider nicht gefunden. Danke :)
Habe es eben ausprobiert und es funktioniert. Perfekt.

Ich danke euch beiden

Mfg
Daniel