[gelöst] [RTC-Frust] Duration und DateTime

13. September 2012 11:46

Hallo Leute,

hier mal wieder was für die Hacker:

Wir hatten das Phänomen, dass bei diversen Objekten im RTC die geliebte "Metadaten für Objekt xy sind in einem fehlerhaften Zustand...." Fehlermeldung kam.

Die Lösung: In den betroffenen Tabellen werden DateTime und Duration Werte addiert. Ich habe darauf eine TestCodeunit gebaut, mit der sich der Fehler reproduzieren lässt:

Code:
TestDateTime := CURRENTDATETIME;
TestDuration := 12345;
MESSAGE(FORMAT(TestDateTime));
MESSAGE(FORMAT(TestDuration));
//MESSAGE(FORMAT(TestDateTime + TestDuration));


Sobald ich die letzte Message wieder "einkommentiere" kommt der Metadatenfehler. Sollte es wirklich möglich sein, dass der RTC diese Datentypen nicht mehr addieren kann? :evil:
Zur Info: Servicetier und Client sind Build 32519.

Da wir für diverse Terminerrechnungen solche Additionen brauchen (z.B. Auftragsbeginn + geplante Dauer = geplantes Auftragsende) brauche ich eine Lösung, mir fällt jedoch gerade kein guter Workaround ein...

Viele Grüße
Simon

P.S. Mache ich aus dem Duration einen Int geht die Rechnung. Aber natürlich ist das auch Krampf, weil ich dann alle Anzeigen der Felder zurechtformatieren müsste.... Denn eine Angabe in Millisekunden ist für den User nicht wirklich lesbar :)
Zuletzt geändert von malkys am 13. September 2012 12:26, insgesamt 1-mal geändert.

Re: [RTC-Frust] Duration und DateTime

13. September 2012 12:01

Schau dir mal die Funktion ROUNDDATETIME an. Ich weiß nicht ob es hilft, aber Versuch macht Klug

Gruß, Fiddi

Re: [RTC-Frust] Duration und DateTime

13. September 2012 12:23

Bedankt!
Wenn ich die Addition durch ROUNDDATETIME jage kommt es zu keinem Fehler mehr.
Code:
TestDateTime := CURRENTDATETIME;
TestDuration := 60000;
MESSAGE(FORMAT(TestDateTime));
MESSAGE(FORMAT(TestDuration));
MESSAGE(FORMAT(ROUNDDATETIME(TestDateTime + TestDuration)));


Im .cs File sieht die Änderung dann so aus:

Ohne ROUNDDATETIME:
Code:
       
// MESSAGE(FORMAT(TestDateTime + TestDuration));
NavDialog.ALMessage(new Guid(50003, 0, 39167, 3, 5, 0, 0, 131, 107, 210, 210), NavFormatEvaluateHelper.Format(ALCompiler.ToNavValue(testDateTime+testDuration)));


Mir ROUNDDATETIME:
Code:
// MESSAGE(FORMAT(ROUNDDATETIME(TestDateTime + TestDuration)));
NavDialog.ALMessage(new Guid(50003, 0, 39167, 3, 5, 0, 0, 131, 107, 210, 210), NavFormatEvaluateHelper.Format(ALSystemDate.ALRoundDateTime(testDateTime+testDuration)));

Re: [gelöst] [RTC-Frust] Duration und DateTime

13. September 2012 13:17

Das müsste ein Hotfix nach sich ziehen.