Zugriff auf Entities in FS_LIST unter FirstSpirit 5 wieder ermöglichen.

Hallo zusammen,

momentan ist es unter FS 5 nicht mehr möglich bei einer FS_LIST Type Database auf die gepflegten Elemente als Entities zuzugreifen. Der Rückgabewert ist lediglich als FormData verfügbar.

Unter 4.2 ging noch die Variante(keine öffentliche API, ich weiß) .getDataset().getEntity(). Inzwischen geht der Zugriff nur noch über die Bezeichner der Tabellenvorlage.

Das bedeutet nich unerhebliche Mehraufwände für z.B. folgende Fälle

  • Auslesen von Feldern die nicht über die In der FS_LIST hinterlegte Tabellenvorlage befüllt wurden sonder z.B.
    • durch Imports
    • durch eine andere Tabellenvorlage der gleichen Tabelle
  • Auslesen von Fremdschlüsseln, die gar nicht in der Tabellenvorlage gepflegt werden, sondern von der anderen Tabelle gesetzt werden
    • z.B. bei Firma werden Adressen gepflegt, aber wenn ich mir in einer Liste bestimmte Adressen ausgeben möchte inkl. Attribute der verbundenen Firma.
    • --> Anlegen von versteckten nicht bearbeitbaren Eingabekomponenten, nur damit man auch einen Bezeichner zum Aufrufen hat...
  • Bei FS5 Migrationen müssen die o.g. Anpassungen wesentlich mühsamer nachgezogen und getestet werden

Neben den Mehraufwänden ist auch die Inkonsistenz fragwürdig. Bei DATASET kommt man beispielsweise ganz "legal" auf die Entity (auch mit .dataset.entity)

Wir haben schon einiges in einem Diskussionsbeitrag gepostet, bevor ich jetzt alles doppelt schreibe verlinke ich auf den Rest:

https://community.e-spirit.com/message/14740

Leider wurde hier auch nicht begründet, warum genau (nur) für die FS_LIST diese Möglichkeit entfernt, bzw. nicht mehr implementiert wurde (oder überhaupt irgend was argumentiert).

Nachdem wir gerade mit einer Migration startetn, werden wir wohl nicht mehr in den Genuss kommen die bisherige Variante mit Zugriff auf Entities zu verwenden und müssen so sowohl die Eingabe also auch die Ausgabe umfangreich anpassen, aber hoffentlich wird dieser Request erhört und erspart zukünfitg einiges an Mehraufwänden.

Und jetzt fleißig dafür voten 😉

Viele Grüße

Matthias

11 Comments
pjodeleit
e-Spirit employee

Das "Problem" bei Zugriffen über Entity-Methoden ist, das komplexe Werte nicht in allen Fällen korrekt aufgelöst werden können (mit komplexen Werten sind alle FirstSpirit-Komponenten gemeint, die nicht auf atomare Typen wie Zahl, Nummer, Datum, Text in der Datenbank abgebildet werden). Ein Beispiel dafür ist z.B. ganz aktuell in https://community.e-spirit.com/message/14795 zu sehen. Diese Problematik muss man bei der Benutzung von "Entity" also immer im Hinterkopf haben.

mmarm
e-Spirit employee

Es geht auch nicht darum, den Rückgabewert wieder auf eine Liste an Entities umzustellen, sondern nur den Zugriff auf die Entities wieder zu erlauben, dann hat man das beste aus beiden Welten. Außerdem geht es bei DATASET ja auch, was ja dann das gleiche Problem aufwerfen würde. Die Problematik habe ich dann gerne im Hinterkopf 😉

pjodeleit
e-Spirit employee

Das ist schön Smiley Wink. Und bitte meinen Beitrag nicht als Wertung verstehen, ich wollte nur auf die Problematik aufmerksam machen.

Der Unterschied zu DATASET ist übrigens, das der Zugriff da Teil der API ist, bei LIST war es ein Implementierungsdetail.

Anonymous
Not applicable

Was mich an FormData auch ziemlich stört ist die Möglichkeit sogar die FS_ID unterdrücken zu können. Will man in der Formularanzeige die FS_ID dem Bearbeiter nicht anzeigen, da sie ihn sowieso wenig interessiert, so kann das heftige Konsequenzen haben.

Man könnte das als konsequente Umsetzung nach dem Motto "Alles, was der Bearbeiter nicht sieht, sieht der Entwickler auch nicht" sehen, ich finde es jedoch extrem fehleranfällig. Zudem erschwert es die Suche nach Fehlern ungemein.


Formular:

FS_LIST im Databasemode

mit Zeile <COLUMNS><COLUMN show="no">#fs_id</COLUMN><COLUMNS>

Ausgabe:

$CMS_FOR(for_item, cs_list)$

    $CMS_VALUE(for_item.fs_id)$

$CMS_END_FOR$

--> Fehler, dass Spalte "fs_id" unbekannt ist.

nick
I'm new here

Ich finde die Argumente auch eher schwach. Schließlich kann man in Tabellenvorlagen per #row auch auf Entities zugreifen.

mmarm
e-Spirit employee

Jetzt ist ja schon lange nichts mehr passiert und die Nachfrage scheint ja weiterhin recht groß zu sein. Wird sich hier etwas tun?

Viele Grüße

Matthias

pjodeleit
e-Spirit employee
mmarm
e-Spirit employee

Hallo Peter,

ist das nur ein Querverweis oder eine Antwort? Auch dort werden ja von anderen durchaus noch gute Einwände gebracht (inklusive zumindest der zusätzlichen optionalen Verwendung von Entities). Ich persönlich verstehe immer noch nicht den so zusätzlichen Aufwand für Fremdschlüssel um von beiden Seiten darauf zugreifen zu können (zusätzliche Komponente auch auf der Seite auf der nicht gepflegt wird).

Viele Grüße

Matthias

pjodeleit
e-Spirit employee

Nur ein Querverweis, ist immer etwas unschön, wenn an zwei Stellen über das gleiche Thema diskutiert wird.

[EDIT]

Interessant ist dort der Hinweis von Andreas: https://community.e-spirit.com/message/14814

CVogel
e-Spirit employee

Hallo zusammen,

für die neue Eingabekomponente FS_INDEX steht diese Funktion zur Verfügung.

Nutzt man das "DatasetDataAccessPlugin", gelangt man an eine Collection von Datasets und darüber an das Entity.