[gelöst] Angebot per Web-Service erzeugen

Bild Microsoft Dynamics NAV 2015 (aka "NAV 8")

[gelöst] Angebot per Web-Service erzeugen

Beitragvon dpoe2014 » 1. März 2015 19:40

Hallo,

für die Erstellung von Angeboten durch Übernahme aus einem Fremdprogramm, möchte ich einen WebService mit oData erstellen. Beim Speichern der Angebotspositionen erhalte ich jedesmal eine Exception und das Programm stürzt ab.

Folgendes habe ich versucht:

SalesQuoteSalesLines lines = new SalesQuoteSalesLines();
lines.Document_No = "1006";
lines.Document_Type = "Quote";
//lines.No = "1001";
//lines.Type = "Item";
//lines.Quantity = 1;
nav.AddToSalesQuoteSalesLines(lines);
nav.SaveChanges();

Das Angebot konnte ich zuvor erfolgreich anlegen. Sobald ich eine der 3 kommentierten Zeile aktiviere, tritt die Exception auf. Mit den kommentierten Feldern läuft das Programm durch.

Fehlen hier weitere notwendige Felder oder mache ich generell etwas falsch?

Vielen Dank, Dirk
Zuletzt geändert von dpoe2014 am 2. März 2015 15:39, insgesamt 1-mal geändert.
dpoe2014
 
Beiträge: 4
Registriert: 1. März 2015 19:30
Realer Name: Dirk Polke
Arbeitsort: Cuxhaven
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015

Re: Angebot per Web-Service erzeugen

Beitragvon matthias_roesinger » 2. März 2015 09:34

Servus Dirk,

ich weiß zwar nicht ob es die Lösung ist, aber der Primärschlüssel der Sales Line besteht aus Belegart, Belegnr. und Belegzeilennummer, die Belegzeilennummer fehlt in deiner Zuweisung. Kannst ja testhalber mal in 10000er Schritten hochzählen und zuweisen.
Dann würde ich persönlich die Art (Type) vor der Artikelnummer übergeben, wenn du einen Beleg von Hand erfasst "sagst" du auch erst um was für eine Art es sich handelt (Artikel, Sachkonto, Ressource)

Viel Erfolg,
Matthias
matthias_roesinger
 
Beiträge: 48
Registriert: 10. März 2009 10:50
Wohnort: Heilbronn
Realer Name: Matthias Rösinger
Arbeitsort: Weinsberg
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2009 R2

Re: Angebot per Web-Service erzeugen

Beitragvon dpoe2014 » 2. März 2015 12:00

Hallo Matthias,

danke, ich habe das mal geändert. Funktioniert leider noch nicht. Zumindestens habe ich jetzt mal einen Hinweis gefunden:

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="en-US">Document No. must have a value in Sales Line: Document Type=Quote, Document No.=, Line No.=0. It cannot be zero or empty.</m:message></m:error>

Das verwirrt mich jetzt etwas, da ich doch die Document No. bereits gefĂĽllt habe.

Der Code sieht momentan so aus:

SalesQuoteSalesLines lines = new SalesQuoteSalesLines();

lines.No = "10010";
lines.Type = "Item";
lines.Line_No = 10000;
lines.Document_No = "10006";
lines.Document_Type = "Quote";

nav.AddToSalesQuoteSalesLines(lines);

nav.SaveChanges();

Hab dies auch in unterschiedlicher Reihenfolge durchgespielt, ebenfalls ohne Erfolg.

GruĂź, Dirk
dpoe2014
 
Beiträge: 4
Registriert: 1. März 2015 19:30
Realer Name: Dirk Polke
Arbeitsort: Cuxhaven
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015

Re: Angebot per Web-Service erzeugen

Beitragvon fiddi » 2. März 2015 12:09

Hallo,

ich bin jetzt nicht gerade der Wbservices- Spezi aber NAV arbeitet in den Pages im Standard eigentlich immer so:

1. Datensatz.INIT;
2. Primärschlüssel setzen
3. Datensatz.INSERT(true);
4. weitere Felder setzen
5. Datensatz.Modify(true);

Evtl. umgeht das deine Fehlermeldung, da die Sales Line bereits existiert, wenn du weitere Felder füllst, die u.U. eine Referenz auf eine existierende Sales Line benötigen (Textbausteine,...)

Gerade die Textbausteine können auch dazu führen, dass du die Zeilennummer jedes mal neu vor dem INSERT ermitteln musst.

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: 7088
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: Angebot per Web-Service erzeugen

Beitragvon dpoe2014 » 2. März 2015 13:39

Folgendes läuft ohne Fehler durch, speichert allerdings auch nicht die Position:

SalesQuote quote = new SalesQuote();
quote.Sell_to_Customer_No = "13111";

nav.AddToSalesQuote(quote);
nav.SaveChanges();

SalesQuoteSalesLines lines = new SalesQuoteSalesLines();

lines.Document_Type = "Quote";
lines.Document_No = quote.No;
lines.Line_No = 10000;
lines.No = "10010";
lines.Type = "Item";
lines.Quantity = 1;
lines.Unit_Price = 1;

quote.SalesQuoteSalesLines.Add(lines);
nav.SaveChanges();

Im Debugger enthält das quote-Objekt nach .Add(lines) die zugewiesenen Werte.

Irgendwie alles sehr merkwĂĽrdig.....

Dirk
dpoe2014
 
Beiträge: 4
Registriert: 1. März 2015 19:30
Realer Name: Dirk Polke
Arbeitsort: Cuxhaven
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015

Re: Angebot per Web-Service erzeugen

Beitragvon dpoe2014 » 2. März 2015 15:36

Folgendes funktioniert unter Verwendung der Seifenschnittstelle:

SalesQuote_PortClient client = new SalesQuote_PortClient();

SalesQuote quote = new SalesQuote();
quote.Sell_to_Customer_No = "13111";
client.Create(ref quote);

// Anzahl der Artikelpositionen erzeugen
quote.SalesLines = new Sales_Quote_Line[1];
quote.SalesLines[0] = new Sales_Quote_Line();
client.Update(ref quote);

Sales_Quote_Line line = quote.SalesLines[0];
line.Type = ServiceReference1.Type.Item;
line.No = "10010";
line.Quantity = 10;

client.Update(ref quote);

Angebot + Position angelegt.....

Für mich damit erstmal gelöst, wenn auch nicht befriedigend....
dpoe2014
 
Beiträge: 4
Registriert: 1. März 2015 19:30
Realer Name: Dirk Polke
Arbeitsort: Cuxhaven
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2015


ZurĂĽck zu NAV 2015

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast