NAS Datenmanipulation vor Schreiben in die DB

24. August 2016 15:50

Hallo,
wir arbeiten mit Dynamics CRM und dem Connector (WebServices), der Daten in verschiedene Modultabellen unseres DL's schreibt und abgleicht.

Hier habe ich jetzt das Problem, dass ich Daten (Customer No.) anpassen muss, bevor diese in die Tabelle geschrieben werden, da ansonsten nicht der passende Customer gefunden wird.
Ich habe das schon in der Page im OnNewRecord und im OnInsertRecord-Trigger versucht, genauso in der Tabelle im OnInsert-Trigger versucht.
Hierbei habe ich aber immer das Problem, dass ich die Daten, die ich in den WebService reinfülle (per Debugging des NAS mit Visual Studio) nicht sehen kann bzw. nicht ersichtlich sind.
Sprich der Rec ist leer und hat die Daten nicht. Später kommt dann aber eine Meldung, wo ich noch auf der Suche bin woher, dass der Customer nicht existiert. Das ist auch korrekt so.

Hat von euch einer eine Idee, wie ich an die Daten rankomme, die in den WebService reingegeben werden, damit ich mit diesen Daten auch arbeiten kann?

Danke und Gruß
rif

Re: NAS Datenmanipulation vor Schreiben in die DB

25. August 2016 11:57

Hallo,
hat niemand eine Idee?
Um das Thema vielleicht etwas verständlicher zu machen:
Ich benötige den Trigger (Table oder Page), mit dem ich Daten anpassen kann, bevor sie in die Tabelle geschrieben werden.
Zu diesem Zeitpunkt benötige ich aber zusätzlich den Zugriff auf die Daten, die in die Tabelle geschrieben werden sollen.
Ich muss die Debitorennummer anhand der Kontaktnummer herausfinden und diese dann in die Debitorennummer schreiben, da ich über die Schnittstelle nur die Kontaktnummer bekomme. Dannlaufe ich immer in den Fehler, dass die Debitorennummer nicht existiert.

Gruß
rif

Re: NAS Datenmanipulation vor Schreiben in die DB

25. August 2016 14:09

Ich kenne die CRM-NAV-Schnittstelle nicht. Daher mal ganz laienhaft: Wenn der Import keine Debitoren liefert warum dann in den Debitor importieren? Ich würde in NAV eine neue/eigene Tabelle anlegen, in diese importieren und dann innerhalb NAV aus dieser Zwischentabelle mit Debitor abgleichen.

Re: NAS Datenmanipulation vor Schreiben in die DB

14. September 2016 13:53

Hmm,
das wird leider nicht so einfach gehen durch die Schnittstelle mit einer weiteren Tabelle.
Aber man kann das Problem auch komplett ohne die CRM-NAV-Schnittstelle betrachten.

Wenn ich den WebService aufrufe, übergebe ich die Kontaktnummer. Bevor diese jetzt in die Datenbank geschrieben wird, muss ich diese in einem Trigger der Page oder Tabelle nochmal abändern.
Nur leider finde ich den passenden Trigger nicht, in dem ich auf die Daten zugreifen kann, die ich in den WebService hineingebe um die Änderung vorzunehmen.

Vielleicht hilft das ja nochmal weiter.

Gruß
rif

Re: NAS Datenmanipulation vor Schreiben in die DB

14. September 2016 14:04

Hallo,

1. Debuggen kannst du einen Webservice indem du auf den Servicetier des WS den Debugger auf die nächste Session los läst.
2. Frage: gibt es den Debitor schon, oder noch nicht?

Gruß Fiddi

Re: NAS Datenmanipulation vor Schreiben in die DB

14. September 2016 15:14

Hallo Fiddi,
ich debugge direkt im Visual Studio die WebServices bzw. auch im normalen Debugger.
Aber egal in welchem Trigger (in der Page oder in der Table, Trigger: OnNewRecord, OnInsertRecord, OnInsert etc.) ich die Daten anschaue habe ich im Rec oder xRec nicht die gewünschten Informationen um den entsprechenden Debitor anhand der Kontaktnummer, die ich ja als Neuanlage reingebe, zu finden.
Der Debitor existiert. Problem ist einfach, dass aus einem externen System nur die Kontaktnummer übergeben wird und die sind in ein paar speziellen Fällen unterschiedlich zu der Debitorennummer, daher das umswitchen bevor der Datensatz angelegt wird.

Gruß
rif

Re: NAS Datenmanipulation vor Schreiben in die DB

14. September 2016 15:31

Der Debitor existiert. Problem ist einfach, dass aus einem externen System nur die Kontaktnummer übergeben wird und die sind in ein paar speziellen Fällen unterschiedlich zu der Debitorennummer, daher das umswitchen bevor der Datensatz angelegt wird.

Kannst du den Kontakt denn nicht in NAV mit der gleichen Kontaktnummer anlegen bzw. finden, wie im CRM (sollte eigenlich so sein). Dann kannst du über den NAV- Kontakt den NAV-Debitor finden.

Den Debugger

Re: NAS Datenmanipulation vor Schreiben in die DB

14. September 2016 16:34

Hi Fiddi,
das ist genau der Plan. Im CRM, wie im NAV haben beide die gleiche Kontaktnummer.

Diese Kontaktnummer wird auch in die Page gegeben, nur leider muss in der Page die Debitorennummer und nicht die Kontaktnummer gefüllt werden, da es gar kein Feld für die Kontaktnummer gibt.
Daher war mein Plan, im OnInsert oder OnNewRecord einfach die Debitornummer anhand der gegebenen Kontaktnummer herauszusuchen und dann damit die Debitornummer in der Page zu belegen (anstatt der Kontaktnummer).
Nur leider kann ich in keinem Trigger auf die Daten zugreifen, die in den neuen Datensatz geschrieben werden sollen um so die Nummer abzuändern.

Aber vielleicht denke ich auch zu kompliziert. Ich werde es mal testen, ein Feld für die Kontaktnummer einzufügen und dann zu schauen, ob ich nach Anlage des Datensatzes erst die Debitorennummer füllen kann.

Gruß
rif

Re: NAS Datenmanipulation vor Schreiben in die DB

15. September 2016 13:47

Vielleicht denke ich ja zu einfach, aber wenn du aus CRM Kontakte nach NAV importieren willst, warum dann nicht in die Tabelle Kontakt statt Debitor?