14. November 2019 11:34
Hallo,
der Windows Client stürzt bei uns sporadisch ab. In der Ereignisanzeige steht immer das gleiche.
Type: Microsoft.Dynamics.Nav.Types.Exceptions.WatsonReportException
Message: <ii>Watson report failure</ii>
StackTrace:
bei Microsoft.Dynamics.Nav.Watson.WatsonHandler.SendWatsonReport(Exception exception, Boolean showUI, Assembly assembly, String applicationName)
bei Microsoft.Dynamics.Nav.Client.WinClient.StartWinFormsClient.HandleWatson(Exception exception, Int32& runCore)
Source: Microsoft.Dynamics.Nav.Watson
HResult: -2146233088
----------------------------------
Type: System.NullReferenceException
Message: <ii>Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.</ii>
StackTrace:
bei Microsoft.Dynamics.Framework.UI.SelectionCaptureAndReapply.SetCurrentRow(BindingManager bindingManager, RowEntry rowEntry)
bei Microsoft.Dynamics.Framework.UI.SelectionCaptureAndReapply.SetCurrentRowToDraftRow(BindingManager bindingManager)
bei Microsoft.Dynamics.Framework.UI.SelectionCaptureAndReapply.Reapply(BindingManager bindingManager)
bei Microsoft.Dynamics.Framework.UI.LogicalFormRefresher.TryRefreshData()
bei Microsoft.Dynamics.Framework.UI.LogicalFormRefresher.TryRefresh()
bei Microsoft.Dynamics.Nav.Client.UIPatterns.FormUpdateRequestPatternUpdater.Update(LogicalForm form, Boolean saveBeforeUpdate, Boolean useInitialBookmark, Boolean refreshControlAddIns)
bei Microsoft.Dynamics.Nav.Client.UIPatterns.FormUpdateRequestPattern.ProcessUpdateRequest(NavFormUpdateRequestEventArgs e)
bei Microsoft.Dynamics.Framework.UI.ConsumerPort.MessageAvailable(IMessage message)
bei Microsoft.Dynamics.Framework.UI.CommunicationChannel.SendConsumerMessage(IMessage message)
bei Microsoft.Dynamics.Framework.UI.CommunicationChannel.ProcessMessage(MessagePriority minimumMessagePriority)
bei Microsoft.Dynamics.Framework.UI.CommunicationBroker.<>c__DisplayClass26_0.<HandleOneMessage>b__0()
bei Microsoft.Dynamics.Framework.UI.CommunicationBroker.ProcessMessage(Func`1 handleMessage)
bei Microsoft.Dynamics.Framework.UI.WinForms.CommunicationMessageHandler.HandleHighPriorityMessages()
bei Microsoft.Dynamics.Framework.UI.WinForms.CommunicationMessageHandler.PreFilterMessage(Message& m)
bei System.Windows.Forms.Application.ThreadContext.ProcessFilters(MSG& msg, Boolean& modified)
bei System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei Microsoft.Dynamics.Nav.Client.WinClient.NavWinFormsClientSession.RunMessagePump()
bei Microsoft.Dynamics.Nav.Client.WinClient.NavWinFormsClientSession.RunCore()
bei Microsoft.Dynamics.Nav.Client.WinClient.NavClientErrorHandler.ExecuteAndCatchExceptions(Func`1 execute)
bei Microsoft.Dynamics.Nav.Client.WinClient.ExceptionHandler.DoExecute(Func`1 execute)
bei Microsoft.Dynamics.Nav.Client.WinClient.StartWinFormsClient.RunCore()
Source: Microsoft.Dynamics.Framework.UI
HResult: -2147467261
Das passiert immer beim freigeben einer Zwischenprüfung (kein NAV Standard). Das interessante ist, dass wenn man eine Datensicherung zurückspielt und die gleiche Aktion durchführt, funktioniert es ohne Absturz.
Microsoft ist da auch im Moment ratlos.
Hat von Euch jemand vielleicht eine Idee?
Gruß
Michael
14. November 2019 11:44
Hallo,
habe diese Woche gerade eine undokumentierte "Funktion" gefunden, um den Client zu crashen.
Wenn man in den Tabellentriggern (OnAfterGetRecord, OnAfterGetCurrentRecord, OnModify,..) einer Page ein "Currpage.Close" macht, kann das dazu führen, dass der Client nach kurzer Verzögerung beendet wird.
Das es nach dem Zurückspielen der DaSi funktioniert, kann natürlich daran liegen, das andere Daten vorliegen, und die Aktion nicht ausgeführt wird.
Gruß Fiddi
14. November 2019 14:06
Hallo Fiddi,
vielen Dank für den Tipp. Die Freigabefunktion ist in dem Fall sehr simpel. Es erstellt mit Transferfields einen archivierten Beleg und löscht den aktuellen.
Die Daten sind zwischen der Sicherung und aktuellem System in dem Beleg absolut identisch.
Gruß
Michael
19. November 2019 20:46
Hallo Michael, handelt es sich bei den beiden records um verschiedene Tabellen (wie etwa "Verkaufskopf" und "Verkaufskopfarchiv") oder doch um eine und dieselbe? Wenn dieselbe: wird der TRANSFERFIELDS mit TRUE oder mit FALSE ausgeführt? Wenn mit TRUE: bei TRUE (default) wird ja bekanntlich auch der Timestamp mitkopiert, deshalb evtl. mit FALSE probieren (und natürlich die PK-Felder per Programmierung dem zu archivierenden record zuweisen. Ansonsten vlt. schauen, ob es für die betroffenen Tabellen die Event-Subscriber vorhanden snd und was diese machen, evtl. testweise diese dann deaktivieren.