Automatisches Anlegen einer Debitoren Nummer über C/Front

13. Juni 2008 11:15

Hallo,
ich bin sehr neu mit Navision und suche eine Möglichkeit der Anprogrammierung (Navision 5 mit SQL-Server Datenbank): Es soll über ein anderes Programm ein neuer Debitor angelegt werden. Das ist soweit kein Problem, habe in C# über C/Front ein Programm dazu schreiben können. Im CSide Client habe ich hinterlegt, dass die Nummer eines neuen Debitors automatisch erzeugt wird. (über Verwaltung-Finanzmanagement-Debitoren & Verkauf-Debitorennumern - Nummern Serien) - das funktioniert im CSideClient wunderbar. Wenn ich mein Programm verwende, wird dies aber nicht berücksichtigt. Es gibt ja wahrscheinlich noch mehr automatisierte Prozesse, die über C/Front nicht berücksichtigt werden.
Meine Frage: gibt es eine Möglichkeit das zu berücksichtigen oder ist diese Funktionalität im CSide Client hinterlegt und nicht zugreifbar? Oder wo sonst kann ich diese Funktionalität aufrufen? Gibt es eine Möglichkeit Business Objects aus Navision zu bilden und in einer Programmierung aufzurufen, die solche Sachen berücksichtigen? Muss ich einen ganz anderen Weg einschlagen? Bin für jeden Hinweis dankbar.

Re: Automatisches Anlegen einer Debitoren Nummer über C/Fron

13. Juni 2008 11:42

[nummernserie]

Im Client muß der 'validate'-Trigger der "No." aufgerufen, dann klappts auch mit der Nummernserie, falls diese existiert/eingerichtet ist.

Markus

13. Juni 2008 17:35

Hallo Markus, Danke für den Hinweis. Wo ist dieser validate-Trigger hinterlegt und wie kann ich ihn ausserhalb des CSide Clients aufrufen. In der Datenbank habe ich ihn nicht gefunden. Kerstin

13. Juni 2008 17:41

Hallo Kerstin,
über C/FRONT kann man von anderen Anwendeungen heraus auf die Daten der NAVISION-DB lesend oder schreibend zugreifen. Es kann nur auf die Daten zugegriffen werden und nicht auf die Triggerprogrammierung.

13. Juni 2008 18:02

Hallo FraMi, danke, schade. Gibt es denn einen anderen Weg, Daten in die Datenbank zu bekommen und auf die Triggerprogrammierung zuzugreifen als über C/front? Kerstin

13. Juni 2008 18:48

Hallo Kerstin,
der einfachste Weg wäre, es in NAVISION zu machen. Aber Du willst ja die Sache von "außen" machen. Da die Programmierung, die an den Triggern von Tabelle, Feld ... nicht zu packen ist, mußt Du die gabnze Sache in Deinem Programm realisieren. Also in Tabelle der Nummernserien nach letzter Nummer gucken, erhöhen, zurückschreiben und Debitor mit neuer Nummer einfügen. us.w.
Sorry, für die schlechte Nachricht.
Frank

13. Juni 2008 18:54

Hallo Frank, danke für die Rückmeldung, ja, ich wollte es von "außen" machen. Wie war das mit Überbringer schlechter Nachrichten? Nein, Scherz, danke für deine Antworten, hat mir auf jeden Fall etwas Klarheit gebracht! Wo sind denn diese Trigger in Navision versteckt? Sind die Clientseitig gelagert? Kerstin

13. Juni 2008 19:02

Hallo Kerstin,
die Triger sind an den Objekten gelagert.
Z.B. Tabelle 18 -> Objektdesigner -> Tabelle auswählen -> Design -> Feld 1 auswählen -> AltA C (oder F9) und da siehst z.B. denTrigger OnValidate für das Feld "No.".
(Das gilt für jedes Objekt.)
Natürlich brauchst Du dazu die entsprechende Lizenz.
Viel Spaß aus Leipzig von
Frank

13. Juni 2008 20:01

Ich würds über einen Umweg machen (wenn so überhaupt möglich):
Schreibe in NAV einen Codeunit, die den Debitor anlegt. Dabei ist es wichtig, dass einzelne anzulegende Felder zu validieren sind, damit die Business-Logic durchlaufen wird. Bei der Erstellung sind wir dir gern behilflich, aber ein wenig NAV-Programmierungskenntnisse solltest du dir schon vorher aneignen (welche Objekte gibt es, wo trage ich Variablen ein, was sind Trigger....).
Und dieses Codeunit startest du über CFRONT.

Auch ich rate dir unbedingt davon ab, die Business-Logic per CFRONT nachbilden zu wollen. Das würde selbst alte NAV-Programmierhasen überfordern (entweder fachlich oder zeitlich) und hat außerdem als logische Konsequenz, dass bei einer Änderung immer zwei Baustellen parallel gepflegt werden müssen: der NAV-Quelltext und dein Code in CFRONT.

14. Juni 2008 07:50

Hallo Natalie,
wie kann man eine NAV-Codeunit von außen heraus über CFRONT starten?
Im voraus vielen Dank für deine Info!

14. Juni 2008 10:38

Hallo Frank, hallo Natalie,
danke, ihr habt mir sehr weitergeholfen. Die Nav-Codeunits kann ich nicht ansehen, da fehlen mir die Rechte (ich habe im Moment nur die Demoversion, aber ist das eine andere Lizensierung als die "normale" Benutzerlizenz?). Was ich eigentlich suche, ist, ob Navision seine BL-Prozesse über eine Schnittstelle so zur Verfügung stellt, dass das Anlegen eines Debitors von "aussen" immer funktioniert egal wie NAV an der Stelle eingerichtet ist. Aber anscheinend gibt es das nicht, oder? Die Frage von Frank interressiert mich trotzdem auch! grüsse aus der Schweiz (leider verregnet)

14. Juni 2008 11:00

KerstinS hat geschrieben:Was ich eigentlich suche, ist, ob Navision seine BL-Prozesse über eine Schnittstelle so zur Verfügung stellt, dass das Anlegen eines Debitors von "aussen" immer funktioniert egal wie NAV an der Stelle eingerichtet ist. Aber anscheinend gibt es das nicht, oder?

Nicht dass ich wüsste.

Die Frage von Frank interressiert mich trotzdem auch!

Da muss sich euch leider auf jemanden vertrösten, der sich damit auskennt :-(

16. Juni 2008 15:24

Hallo Kerstin,

wenn Du von außen einen neuen Debitor z.B. anlegen möchtest, solltest Du selber für eine eindeutige Nummerierung sorgen. A) die NummernSerie lesen und selber setzen oder B) Einen seperarten Nummernbereich verwenden.

Die Trigger zu verwenden bzw. nachnach zu suchen wird nicht gehen, da diese aufrufe in den verschiedensten Objekten verursachen.

ich würde die Variante B bevorzugen.

Bin gespannt wie Du Dein Problem nun gelöst hast.

Servus

16. Juni 2008 17:42

Hi,

wie genau sieht deine Anforderung aus? Muessen die Daten sofort erstellt bzw. verfuegbar sein? Habt ihr schon bestehende EDI- oder Queue- Schnittstellen

Wir verwenden fuer solche Sachen Queues. Die Daten werden vom einen Programm reingeschrieben, der NAS liest sie fuer Navision auf der anderen Seite aus und verarbeitet sie gleich. In dem Fall wuerde er einen Customer erstellen und mit den mitgelieferten Daten befuellen.

Wenn es nicht so schnell gehen muss, kann man auch mit Files arbeiten.

Gruesse
feri