lobanova
Elite Observer

Daten aus dem Systemobjekt als Parameterwert in einer Abfrage setzen

Jump to solution

Hallo FirstSpirit Community,

die Frage ist: gibt es in FirstSpirit die Möglichkeit Daten aus dem Systemobjekt in einer Abfrage innerhalb von CMS_INCLUDE_OPTIONS als den Parameterwert zu setzen?

Und zwar: in einer Tabellenvorlage im CMS_INPUT_LIST Feld sollen Datensätze der Datenquelle dargestellt werden, welche auch über diese Vorlage angelegt werden, ausser den aktuellen Datensatz, also der aktuelle Datensatz soll ausgeschlossen sein. Das Feld dient zur Pflege der Parent-Child Relation zwischen Datensätzen der selben Datenquelle. Mittels der Abfrage soll die Möglichkeit, die Verknüpfung "auf sich selbst" zu setzen, vermieden werden. Auf welche Art und Weise kann auf das Systemobjekt des aktuellen Datensatzes innerhalb des Formulars zugegriffen werden?

Hier die Query:

<QUERY entityType="Foobar">

   <FILTERPARAM parameter="paramId" datatype="java.lang.Integer"/>

   <NEQ attribute="fs_id" parameter="paramId"/>

</QUERY>

Hier das Formular Feld:

<CMS_INPUT_LIST name="tt_children_list" allowEmpty="yes" hFill="no" noBreak="no" sortOrder="ascending" useLanguages="no">

   <CMS_INCLUDE_OPTIONS type="database">

      <LABELS>

         <LABEL lang="*">#item.name</LABEL>

      </LABELS>

      <QUERY name="db_schema.query_all_except_this">

         <PARAM name="paramId">#row.getId()</PARAM>

       </QUERY>

       <TABLE>db_schema.foobar</TABLE>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

       <LANGINFO lang="*" label="Label"/>

    </LANGINFOS>

</CMS_INPUT_LIST>

Über #row.getId() geht das nicht, kommt Fehlermeldung, dass der Parameter nicht gesetzt ist. Geht das über ein anderes Objekt  wie z.b. #this.id oder #global.id oder #cs.dataset.entity.fs_id oder was anderes und ob überhaupt?

Eine ähnliche Frage hier in der Community gefunden: Re: CMS_INCLUDE_OPTIONS (Database) mit Query

Da steht als Antwort, dass es nicht möglich ist, aber die Frage wurde im Jahr 2014 gestellt, gibt es eventuell bereits eine Lösung dafür?

Und wenn es immer noch nicht über ein Systemobjekt innerhalb der Abfrage geht, dann auf welche andere Art und Weise können wir das oben beschriebene Problem "Relation auf sich selbst" umgehen? Rules? Kann man da auf die ID des aktuellen Datensätzes zugreifen? Oder gibt es vielleicht eine ganz andere Alternative?

0 Kudos
1 Solution

Accepted Solutions

Hallo Stefan,

Ich habe keinen speziell für die ID gefunden. Du kannst natürlich gerne hier in der Community eine Feature-Anfrage stellen.

Ok, das Feature Request erstellt: Element ID innerhalb von Form/Rules in Vorlagen auslesen  Smiley Wink

Unser Problem haben wir mittels einen Workaround gelöst: ein hidden Feld eingefügt, wo das Erstellungsdatum des Datensatzes gespeichert wird, welches dann für die Abfrage statt fs_id verwendet wird.

Danke nochmal.

Mit freundlichen Grüßen,

Olga

View solution in original post

0 Kudos
4 Replies
StefanSchulz
I'm new here

Hallo,

das ist so leider nicht möglich. Wenn ich den Anwendungsfall und die Lösungsidee richtig verstanden habe, würde dieser Weg über eine Query auch nur direkte Selbstreferenzen vermeiden. Ein Redakteur kann dann immer noch Ringschlüsse bilden (A -> B -> A).

Eine mögliche Lösung kann ich mir durch den Einsatz eines FS_BUTTON vorstellen. Dieser erhält als Kontextelement unter Anderem das aktuell bearbeitete StoreElement und Zugriff auf mitgegebene Formularfelder. Da an dieser Stelle ein Skript eingebunden werden kann, ist es möglich, die wählbaren Elemente in einem eigenen Formular mit selbst berechneten Abhängigkeiten zu bestimmen und anzuzeigen. Den ausgewählten Wert speichert man dann in einer versteckten Dataset-Komponente im Datensatzformular.

Hoffe, dies hilft weiter.

Mit besten Grüßen

Stefan

0 Kudos

Hallo Stefan,

vielen Dank für die Antwort und den Vorschlag Smiley Happy

Die indirekte Relation A->B->A ist bei uns ausgeschlossen, da Children keine weitere Children haben dürfen, und das fangen wir einfach mittels Abfrage&Rule ab.

Den FS_BUTTON hier zu benutzen - ist eher ein Workaround, und wenn ich den richtig verstanden habe, ziemlich umständlich im Vergleich zum direkten Zugriff auf ein unique Attribut (fs_id) des Datensatzes, um dieses weiter in der Abfrage zu benutzen. Leider die fs_id Spalte an ein Formular-Feld (mit nur lesendem Zugriff) zu mappen geht auch nicht.

Aus welchem Grund gibt es keinen lesenden Zugriff auf id/uid/fs_id des gerade editierten Elements innerhalb von Form/Rules Tab in Vorlagen?

Gibt es eventuell ein Feature Request auf eurer TODOs-Liste dafür?

Mit freundlichen Grüßen,

Olga

0 Kudos

Hallo Olga,

Olga Lobanova schrieb:


Aus welchem Grund gibt es keinen lesenden Zugriff auf id/uid/fs_id des gerade editierten Elements innerhalb von Form/Rules Tab in Vorlagen?

hier gibt es keinen konkreten Grund außer dem, dass die ID nicht bereitgestellt wird.

Gibt es eventuell ein Feature Request auf eurer TODOs-Liste dafür?

Ich habe keinen speziell für die ID gefunden. Du kannst natürlich gerne hier in der Community eine Feature-Anfrage stellen.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

Ich habe keinen speziell für die ID gefunden. Du kannst natürlich gerne hier in der Community eine Feature-Anfrage stellen.

Ok, das Feature Request erstellt: Element ID innerhalb von Form/Rules in Vorlagen auslesen  Smiley Wink

Unser Problem haben wir mittels einen Workaround gelöst: ein hidden Feld eingefügt, wo das Erstellungsdatum des Datensatzes gespeichert wird, welches dann für die Abfrage statt fs_id verwendet wird.

Danke nochmal.

Mit freundlichen Grüßen,

Olga

0 Kudos