mahnak
Occasional Observer

Formular im CC aktualisieren (nach Ausführung einer Executable)

Hallo,
ich habe aktuell im ContentCreator das Problem, dass ein Formular eines Datensatzes nicht aktualisiert wird, wenn ein FS_CATALOG des Datensatzes über eine Executable gefüllt wird. Die Executable wird über ein Skript, das sich innerhalb eines FS_BUTTONs des Formulars befindet, ausgeführt.
Über das Skript wird ein neues Dialogfenster geöffnet, in dem relevante Daten für die Erzeugung der neuen Datensätze eingegeben werden können. Diese neu angelegten Datensätze werden dann im FS_CATALOG des Datensatzes gespeichert.

Nun zum Problem:
Über die Klasse "OpenElementDataFormOperation" kann zwar das Formularfenster des Datensatzes (inkl. aktualisierter FS_CATALOG-Eingabekomponente) nochmal geöffnet werden. Dieses legt sich aber über das Dialogfenster, das sich nicht aktualisiert hat.
Schließt der Redakteur das Fenster, wird hier das Formular des Datensatzes (ohne Aktualisierung) angezeigt.
Kann das Formular nach der Ausführung der Executable nicht aktualisiert werden?

Viele Grüße

0 Kudos
4 Replies
mbergmann
Crownpeak employee

Hallo,

mangels Screenshots/Code ist mir nicht ganz klar, was genau gemeint ist aber ich habe zumindest eine Vermutung 😉

Die Erwähnung von OpenElementDataFormOperation hört sich danach an. als würde diese von innerhalb des Datensatz-Formulars auf dem Datensatz selbst aufgerufen. Diese Operation arbeitet aber auf den persistierten Daten eines Datensatzes. Inbesondere gibt es so keine „Verbindung“ zum schon geöffneten Formular. Wenn auf diesen Weg „hintenherum“ Daten des aktuellen Datensatzes geändert werden, schlägt sich das nicht im bereits geöffneten Formular nieder.

Der übliche Weg in solchen Fällen ist es, die zu ändernden Eingabekomponente(n) dem Executable als Parameter zu übergeben (per #field.xyz) und dann im Executable nur auf den FormField(s) zu arbeiten. Insbesondere ohne Speichern im Executable - das passiert dann durch das aufrufende Formular.

Viele Grüße 

Michael

 

mahnak
Occasional Observer

Hallo Michael,

danke für Deine schnelle Antwort. Mit Deiner Vermutung liegst Du richtig. Ich habe trotzdem nochmal einen Screenshot aus dem CC angehangen.

Deine vorgeschlagene Umsetzung werde ich so testen.

 

fs_comm.png

0 Kudos
mbergmann
Crownpeak employee

Hallo,

dann war mein Verdacht anscheinend richtig 😉

Der Weg wäre also, dem FS_BUTTON per <param name="myCatalog">#field.nameOfTheCatalog</param> den Catalog zu übergeben. Der kommt im Executable dann in der Parameter-Map unter dem Key „myCatalog“ (bzw. natürlich sollte hier ein sinnvoller Name benutzt werden) als FormField an das man dann „ganz normal“ lesen/ändern/befüllen kann.

Den Teil zum Befüllen müsstest du ja schon haben, musst den „Ansatzpunkt“ halt nur ändern - und eher einiges rauswerfen das davon ausgeht, auf einem kompletten Datensatz zu arbeiten.

Viele Grüße

Michael 

0 Kudos
mahnak
Occasional Observer

Mit Deinem Ansatz hat das wunderbar funktioniert. Die Eingabekomponente wird so nach jedem Setzen des Formfields korrekt aktualisiert.

Vielen Dank nochmal 😊