lobanova
Elite Observer

Reihenfolge von Entries in FS_INDEX Feld und in Entity

Jump to solution

Hallo FirstSpirit Community,

Wir haben eine Datenquelle verknüpft mit einer anderen per M:N Beziehung. In der Tabellenvorlage zur Pflege dieser benutzen wir ein FS_INDEX Feld.

Unser Kunde hat gemeldet, dass die Reihenfolge von Entries im FS_INDEX Feld im Formular, welche per Drag&Drop verschoben werden können, der Reihenfolge der Entries auf der gerenderten Seite nicht übereinstimmt. Nach der Analyse haben wir das bestätigt: die Reihenfolge von Datensätzen in der FS_INDEX Liste nicht der Reihenfolge von Datensätzen in der Liste der Entity selbst (genauso über diese lassen wir sie in der Tabellenvorlage ausgeben) entspricht.

Frage: handelt es sich hier um einen Bug? Wie können wir die Sortierung der Enträgen der Liste, die aus der Entity via getValue(name) ausgelesen wird, entsprechend der Reihenfolge im FS_INDEX Feld bekommen (ausser direkt aus dem Feld via feld_name.values auszulesen)?

Danke!

1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Olga,

welche FS-Version nutzt ihr? Seit 5.2R17 wird eine zusätzliche "Metadaten-Spalte" benutzt, über die "neben" der Relation noch die Reihenfolge gespeichert wird. Siehe auch die entspr. Release Notes Kapitel 2 und 5.2.

Wichtig ist hier auch der folgende Hinweis in den Release Notes:

Hinweis: In einer Ausgabe über das Systemobjekt #row (beispielsweise in einer Content-Projektion,

siehe dazu FirstSpirit Online Dokumentation, „Vorlagen (Grundlagen) / Aufbau von Vorlagen /

Datenbank-Schemata / Datensatz-Ausgabe“, Abschnitt „...über Content-Projektion“) wird die Reihenfolge

nicht berücksichtigt.

D.h. die Ausgabe muss über tt_variable.values() erfolgen bzw. eine Iteration darüber, damit das funktioniert. #row ist ja letztlich auch eine Entity. Hintergrund ist, dass Zu-N-Relationen in DBs "eigentlich" gar keine Reihenfolge haben und FirstSpirit hier über eine zusätzliche Systemspalte (mit der "Quellspalte" als key) die Reihenfolge separat speichert. D.h. die Reihenfolge ist eine Art zusätzliche Eigenschaft.

Viele Grüße

Michael

View solution in original post

4 Replies
mbergmann
Crownpeak employee

Hallo Olga,

welche FS-Version nutzt ihr? Seit 5.2R17 wird eine zusätzliche "Metadaten-Spalte" benutzt, über die "neben" der Relation noch die Reihenfolge gespeichert wird. Siehe auch die entspr. Release Notes Kapitel 2 und 5.2.

Wichtig ist hier auch der folgende Hinweis in den Release Notes:

Hinweis: In einer Ausgabe über das Systemobjekt #row (beispielsweise in einer Content-Projektion,

siehe dazu FirstSpirit Online Dokumentation, „Vorlagen (Grundlagen) / Aufbau von Vorlagen /

Datenbank-Schemata / Datensatz-Ausgabe“, Abschnitt „...über Content-Projektion“) wird die Reihenfolge

nicht berücksichtigt.

D.h. die Ausgabe muss über tt_variable.values() erfolgen bzw. eine Iteration darüber, damit das funktioniert. #row ist ja letztlich auch eine Entity. Hintergrund ist, dass Zu-N-Relationen in DBs "eigentlich" gar keine Reihenfolge haben und FirstSpirit hier über eine zusätzliche Systemspalte (mit der "Quellspalte" als key) die Reihenfolge separat speichert. D.h. die Reihenfolge ist eine Art zusätzliche Eigenschaft.

Viele Grüße

Michael

Hallo Michael,

wir benuzen zur Zeit die FS Version 5.2.2109 und die Funktionalität "manuelle Sortierung" für die FS_INDEX Komponenete ist da, und die Reihenfolge von Entries in dieser stimmt auch bei der Ausgabe, aber nur wenn man genau über tt_variable.values() iteriert. Wenn man aber die Entries via Entity.column_name (Name der Spalte, die die N:M Beziehung präsentiert) holt (da kommt das Objekt der Klasse de.espirit.or.impl.PersistentList) - dann stimmt die Reihenfolge von Entries dieser Liste nicht der Reihenfolge in der FS_INDEX Komponente.

Also, d.h. wir sollen Einträge nur via tt_variable.values() ausgeben? Und nach welcher Regel werden Entries der PersistentList sortiert?

Gruß,

Olga

0 Kudos

Hallo Olga,

wir benuzen zur Zeit die FS Version 5.2.2109 und die Funktionalität "manuelle Sortierung" für die FS_INDEX Komponenete ist da, und die Reihenfolge von Entries in dieser stimmt auch bei der Ausgabe, aber nur wenn man genau über tt_variable.values() iteriert. Wenn man aber die Entries via Entity.column_name

(Name der Spalte, die die N:M Beziehung präsentiert) holt (da kommt das Objekt der Klasse de.espirit.or.impl.PersistentList) - dann stimmt die Reihenfolge von Entries dieser Liste nicht der Reihenfolge in der FS_INDEX Komponente.

Ja, das ist das Verhalten so wie es in den Release Notes beschrieben ist.

Also, d.h. wir sollen Einträge nur via tt_variable.values() ausgeben?

Wenn ihr auf die Reihenfolge Wert legt: Ja 😉

Und nach welcher Regel werden Entries der PersistentList sortiert?

Nach keiner definierten bzw. festgelegten. Das ist letztlich ähnlich wie ein Select-Statement gegen eine DB ohne ein Sortierkriterium.

Viele Grüße

Michael

0 Kudos

Hallo, Michael.

Damit ist meine Frage geklärt Smiley Wink

Vielen Dank,

Olga

0 Kudos