Webservice - create fĂĽgt nicht alles ein

Bild Microsoft Dynamics NAV 2009 (aka "NAV 6")
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie

Bitte unbedingt angeben, ob sich eure Frage auf den RoleTailored-Client (RTC) oder den Classic-Client (CC) bezieht!

Webservice - create fĂĽgt nicht alles ein

Beitragvon Stefan_M » 23. April 2009 15:31

Hi,
ich bin da auf ein Problem im Umgang mit den NAV 2009 Webservices gestossen und weiĂź im Moment nicht mehr so recht weiter.

Situation:
Ich habe eine NAV 2009 Seite als Webservice freigegeben. Dabei handelt es sich um das "Istmeldungs Buchungsblatt" (oder auch Output Journal, ID 99000823) aus dem Bereich Produktion/Auftragssteuerung.

Mittels der Create-Methode des Webservices möchte ich nun in einem C#-Programm eine Zeile neu anlegen. Das funktioniert auch soweit, nur erhalten nicht alle Felder der Zeile die Werte, die ich im Programm zugewiesen habe. Speziell die Felder "Fertig gestellte Menge" (Output_Quantity) und "Ausschussmenge" (Scrap_Quantity) erhalten immer den Wert 0, egal was ich ihnen im Programm als Wert zuweise.

Hier mal ein Codefragment zur Veranschaulichung:
Code: Alles auswählen
Output_Journal_Service ojs = new Output_Journal_Service();
ojs.UseDefaultCredentials = true;
Output_Journal oj = new Output_Journal();
...
oj.Posting_Date = DateTime.Today;  // Dieser Wert und die meisten anderen tauchen später korrekt im Buchungsblatt auf
...
oj.Output_Quantity = 42; // Egal was ich hier zuweise, im Buchungsblatt steht immer 0
oj.Scrap_Quantity = 2; // hier genauso
...
ojs.Create("STANDARD", ref oj);


Ich habe außerdem während des Programmlaufs mal den SQL Profiler mitlaufen lassen, um zu sehen was die NAV Webservices auf der Datenbank machen.
Im Wesentlichen führt der Webservice zunächst einen SQL Insert auf der Tabelle "Item Journal Line" durch, wobei alle Felder zunächst mit Standard-Werten belegt werden.

Dann folgt einSQL Update auf die selbe Zeile, erst hier werden dann die Werte gesetzt, die ich im Programm zugewiesen habe. Allerdings wiederum mit Ausnahme der oben aufgefĂĽhrten Felder. Die tauchen nur im Insert auf (dort werden sie mit Standard-Werten belegt), im Update fehlen sie hingegen ganz. Dadurch ist klar, warum die fraglichen Felder immer den Wert 0 erhalten, nur stellt sich mir weiterhin die Frage, wie bekomme ich diese Werte doch noch eingetragen?

Ist das ein bekannter Bug? Oder gibt es beim AusfĂĽhren der Create-Methode noch irgendwas zu beachten, was mir bisher entgangen ist?
Zuletzt geändert von Stefan_M am 24. April 2009 08:41, insgesamt 1-mal geändert.
Stefan_M
 
Beiträge: 3
Registriert: 23. April 2009 15:03
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009

Re: Webservice - create fĂĽgt nicht alles ein

Beitragvon fiddi » 24. April 2009 07:53

Hallo,

hast du mal nach alter Navision Taktik versucht die Felder in NAV von Hand einzugeben und zwar genau in der gleichen Reihenfolge und mit den gleichen Werten, wie du Sie in deinem Programm zuweist?

NAV hat auch in der normalen Umgebung die Angewohnheit durch Nebeneffekte von Validates Felder wieder zu löschen, die man vorher schon mal zugewiesen hat :wink:

GruĂź, Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Webservice - create fĂĽgt nicht alles ein

Beitragvon Stefan_M » 24. April 2009 08:25

fiddi hat geschrieben:hast du mal nach alter Navision Taktik versucht die Felder in NAV von Hand einzugeben und zwar genau in der gleichen Reihenfolge und mit den gleichen Werten, wie du Sie in deinem Programm zuweist?

Zufälligerweise (also ohne das ich mir dieser alten Navision Taktik bewusst war ;)) werden die Werte im Program tatsächlich in genau der gleichen Reihenfolge zugewiesen, wie ich sie auch von Hand direkt in NAV eingeben würde.

Wenn die gleichen Werte direkt ins Istmeldungsbuchungsblatt eingegeben werden, dann werden sie auch korrekt in die DB ĂĽbernommen. Nur bei Ăśbergabe aus meinem Programm werden die fraglichen Werte auf 0 gesetzt.
fiddi hat geschrieben:NAV hat auch in der normalen Umgebung die Angewohnheit durch Nebeneffekte von Validates Felder wieder zu löschen, die man vorher schon mal zugewiesen hat :wink:

Was hat es mit diesem "Validates" auf sich? Kann ich dazu irgendwelche weitergehenden Informationen finden?
Stefan_M
 
Beiträge: 3
Registriert: 23. April 2009 15:03
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009

Re: Webservice - create fĂĽgt nicht alles ein

Beitragvon Stefan_M » 24. April 2009 14:05

Hi, ich bin mit ein bisschen Hilfe auf die Lösung gestoßen.
Mein Code musste in dieser Art abgeändert werden:
Code: Alles auswählen
            Output_Journal_Service ojs = new Output_Journal_Service();
            ojs.UseDefaultCredentials = true;
            Output_Journal oj = new Output_Journal();
            ...
            oj.Posting_Date = DateTime.Today;
            ...
            ojs.Create("STANDARD", ref oj);
            ...
            oj.Output_Quantity = 42;
            oj.Scrap_Quantity = 2;
            ...
            ojs.Update("STANDARD", ref oj);

Einige Felder können offenbar schon mit dem Create-Befehl befüllt werden. Andere erst über ein Update-Statement.
Stefan_M
 
Beiträge: 3
Registriert: 23. April 2009 15:03
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009

Re: Webservice - create fĂĽgt nicht alles ein

Beitragvon fiddi » 24. April 2009 14:18

Könnte ein Auswuchs des NAV-Standards sein.
NAV legt bei Forms/Pages beim Einfügen eines neuen Datensatzes zunächst den Datensatz nur mit den gefüllten Primärschlüsseln in der Datenbank ab. Die eigentlichen Daten werden dann später mit einem Update in die DB geschrieben.

GruĂź, Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell


ZurĂĽck zu NAV 2009

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Bot, Unbekannter Spider und 1 Gast