Ich versuche, eine Entität mit einem Plugin zu aktualisieren. Ich verwende Image (pre) und stage Post mit asynk ... Die Datenbank wird in Echtzeit aktualisiert, aber nicht in der Form. Weiß jemand, warum ich zwei Mal "Updaten" muss, um den aktualisierten Text im Webformular zu sehen, und der Wert wird sofort in der Datenbank aktualisiert? Ich will es "sofort" sehen. DankeUpdate-Formular werfen ein Plug-in crm 4
Antwort
Mit asynchroner Plugin-Ausführung wird die Datenbank nie wirklich "in Echtzeit" aktualisiert; Die asynchrone Ausführung könnte einfach so schnell passieren, dass sie für die "langsame" Wahrnehmung eines Menschen so aussieht. Auf einer Serverprozessstufe wird jedoch der Code eines asynchronen Plugins "wenn es Zeit gibt" ausgeführt, während der Code, der das Formular neu erstellt und an den Client zurücksendet, "sofort" ausgeführt wird und auf synchrone Plugins wartet. aber nicht für asynchrone.
Wenn Sie möchten, dass die Änderungen, die Ihr Plugin vornimmt, unmittelbar nach dem Reload im Entity-Formular angezeigt werden, muss das Plugin für die synchrone Ausführung registriert werden.
Soweit ich weiß, gibt es für asynchrone Plugins sowie für Workflows keinen Zeitrahmen, in dem sie nach dem Auslösen garantiert laufen.
Danke, aber ich möchte, dass das Webformular "sofort" aktualisiert wird, nachdem ich die Schaltfläche Speichern gedrückt habe. Die Datenbank wird aktualisiert, nicht jedoch das Webformular. Wenn eine Berechnung durchgeführt wird, wird das Ergebnis angezeigt, nachdem ich das Webformular zweimal gespeichert habe. –
Das Formular wird * nie * sofort die Änderungen widerspiegeln, die an der Datenbank durch ein * asynchrones * Plugin vorgenommen wurden, das durch das Speichern des Formulars ausgelöst wurde. Wie gesagt, was Sie tun wollen, kann nur erreicht werden, indem das Plugin im synchronen Modus ausgeführt wird. – TeaDrivenDev
Es ist in PRE-Phase und synchroner Modus, und das Bild in PRE auch ... Habe ich es korrekt registriert? DynamicEntity updateEntity = (DynamicEntity) context.InputParameters.Properties ["Ziel"]; und update mit updateEntity ["new_total"] = new CrmMoney ("value"); –