[Gelöst]Problem mit ROUND im RTC/WebService

8. April 2013 22:07

Hallo zusammen,
in Funktion einer Codeunit, die innerhalb des NAV-WebServices läuft, kommt es zu der Fehlermeldung:
> Der angegebene Wert ist ungütig.

wo viele ROUND()-Funktionen aufgerufen werden. Im Classic-Client funktioniert wunderbar und innerhalb des WebServices kracht es dann mit der gennanten Fehlermeldung.

Hat jemand schon Erfahrung mit so etwas schon gemacht? Kann mir jemand ein Tip geben?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von f.ritz am 11. April 2013 11:47, insgesamt 2-mal geändert.

Re: Problem mit ROUND mit RTC/WebService

9. April 2013 09:45

Hi,

wenn der Webservice eine andere Einstellung bezüglich der Dezimaltrennzeichen hat, liegt das Problem an den 0.01 in den Round-Funktionen. Du könntest das testweise mal durch 1/100 ersetzen.

Re: Problem mit ROUND mit RTC/WebService

9. April 2013 15:36

Meinst du in der CustomSettings.config? Da finde ich diesen Punkt nicht...

Re: Problem mit ROUND mit RTC/WebService

9. April 2013 15:43

Hi,

das ersetzen meine ich in deinem C/AL-Code. (siehe Screenshot erster Beitrag)
Gesetzt ist das Trennzeichen normalerweise im Benutzerprofil (auf dem Rechner, nicht NAV) des ausführenden Benutzers .

Re: Problem mit ROUND mit RTC/WebService

9. April 2013 15:54

Hmmm, dann ist die clientusersettings.config gemeint? Bei mir ist da nichts über die Dezimalstellen angegeben. Auf msdn ist auch nichts dazu hinterlegt...

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 08:05

Nein, ich meine tatsächlich was ich schreibe.
Zum Testen kann der Wert im C/AL-Code auf 1 oder 100/1 ersetzt werden.
Die Einstellungen mit den Nachkommastellen sind unabhängig von NAV.
Wenn du mehr dazu wissen möchtest, sollte dich der Stichpunkt Regionaleinstellungen weiterbringen.

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 08:55

Danjo hat geschrieben:...Zum Testen kann der Wert im C/AL-Code auf 1 oder 100/1 ersetzt werden.
Die Einstellungen mit den Nachkommastellen sind unabhängig von NAV.
Wenn du mehr dazu wissen möchtest, sollte dich der Stichpunkt Regionaleinstellungen weiterbringen.


Das mit dem Einbauen in den Code habe ich sofort ausprobiert(1/100, 1/1000, 1/10000 usw...). Danke für den Tip! Aber der Code ist ohne Probleme, im NAV Web Service, "durchgelaufen". So wie es aussieht ist es ein ganz anderes Problem worauf ich momentan nicht komme. Aber ich wollte trotzdem wissen wo die Regionaleinstellungen für den Web Service vorgenommen werden - und das finde ich einfach nicht... :-( ich suche dann weiter...

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 09:28

Es sollten die Regionaleinstellungen des Dienstkontos des Webservice-Dienstes auf dem WebService-Server verwendet werden.
Zu finden in dem du dich mit dem Dienstkonto des Webservice-Dienstes an dem entsprechenden Rechner anmeldest und in die Systemsteuerung gehst.
Im Englischen hast du hier den Punkt "Change date, time, or number formats".
Dort kannst du dann über "Formats"->"Additional Settings" das "Decimal symbol" definieren.

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 12:42

Kann das hier auch eine Rolle spielen?

http://blogs.msdn.com/b/nav/archive/201 ... guage.aspx

WebService Language-Verhalten änderte sich mit Build 32558.

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 13:26

Zum Language-Verhalten bei Webservices erzählt Vjekoslav Babic hier auch einiges.

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 20:21

Hallo zusammen,
jetzt habe ich zumindest den genauen Wert und wann es passiert raus gefunden. Mit diesen Wert crasht der NAV Web Service(mit der genanten Fehlermeldung), Classic-Client läuft aber durch:

Code:
MyDec := ROUND((-20) * 2.8072);


...es sollte dann -56,14 rauskommen...

Hier ist keine Rundungspräzision angegeben, also zieht er sich diese entweder aus der Codeunit 1 (funktion ReadRounding()) oder die Regionaleinstellungen des Servers, aber warum zum :twisted: ist das Verhalten zwischen RTC und Classic anders!?!?! Ein Bug?
Zuletzt geändert von f.ritz am 10. April 2013 20:37, insgesamt 1-mal geändert.

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 20:35

Was ist mit diesen Versionen?

Code:
MyDec := ROUND((-20) * 2.8072,0.01);

Code:
MyDec := ROUND(-20 * 2.8072,0.01);

Code:
MyDec := ROUND(20 * -1 * 2.8072,0.01);

Re: Problem mit ROUND mit RTC/WebService

10. April 2013 20:43

Wenn ich die Präzision(0.01) angebe dann funktioniert es:
Code:
MyDec := ROUND(((-20) * 2.8072),0.01);

...aber es erklärt nicht warum das Verhalten zwischen RTC und Classic anders ist..

Re: Problem mit ROUND mit RTC/WebService

11. April 2013 09:45

Kann es sein, daß von den Regionaleinstellungen irgendetwas "Seltsames" zurückkommt?
Welche Sprache wird verwendet? Möglicherweise ist der CC in Deutsch und der RTC in Englisch? Wenn von den Regionaleinstellungen "0,01" zurückkommt, dann könnte das ein Englischer Client evtl. nicht verstehen (0.01).

Spricht irgendetwas dagegen die Präzision immer fest zu setzen?

Re: Problem mit ROUND mit RTC/WebService

11. April 2013 11:46

Also, ich werde zunächst die Rundungspräzision fest angeben und nehme an, dass ein Bug in der NAV 2009 SP1 ist, da bei dem Web Service die Regionaleinstllung schon fest vorgegeben ist:

<add key="WebServicesDefaultTimeZone" value="W. Europe Standard Time" />

und diese trotzdem nicht genommen wird.

Vielen Dank an ALLE!!!