Home Forum Nuclos Entwicklung Makros und Regeln Zugriff auf Kollektionen von beliebigen Objekten

Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)
  • Autor
    Beiträge
  • #2569
    Carsten Hof
    Teilnehmer

    Hallo,

    ich habe eine Entität A mit einer n:1-Beziehung zu einer Entität B. B wiederum hat eine 1:n Beziehung zu einer Entität S.

    Nun will ich von einem Datensatz von A aus auf eines der S von dessen B zugreifen.
    Habe versucht dies mit server.getDependants(Id von B, „S“) zu machen und dabei folgenden Fehler bekommen:
    org.nuclos.common.NuclosFatalException: Das Feld genericObject ist in der Entität S nicht vorhanden.

    Ist dies der richtige Weg?

    Viele Grüße,
    GP

    • Dieses Thema wurde geändert vor 5 Jahren, 3 Monaten von caf.
    #2573
    Claudia Mangstl
    Teilnehmer

    Hallo Herr GP,

    habe ich das richtig verstanden, dass Sie demnach eine Entität B mit zwei Unterformularen (A und S) haben ?

    Sie können auf A und S jeweils über die Methode getDependants zugreifen.
    Also
    Collection collmdvo_A = server.getDependants(„A“);
    bzw.
    Collection collmdvo_S = server.getDependants(„S“);

    A und S haben aber im Grunde nichts miteinander zu tun. Sie müssen aber beide einen Fremdschlüsselwert auf B besitzen.
    Sie greifen also immer vom „Vaterobjekt“ B aus auf A oder S zu.

    Die „Id von B“ müssen Sie in diesem Fall in getDependants nicht übergeben, da es sich bei B eh schon um das jeweilige Objekt handelt.

    Konnte ich helfen ?

    Viele Grüße,
    Claudia M.

    • Diese Antwort wurde geändert vor 5 Jahren, 7 Monaten von Claudia Mangstl.
    • Diese Antwort wurde geändert vor 5 Jahren, 3 Monaten von caf.
    #2575
    Carsten Hof
    Teilnehmer

    Hallo Frau Mangstl,

    danke für die schnelle Antwort. Die Beziehungen zwischen den Entitäten sind so wie von Ihnen beschrieben. Allerdings schreiben wir die Regel für A. Das heisst, man muss erst zu B, dann von dort zu S navigieren.
    Die ID des Datensatzes von B lässt sich ermitteln. Dann bräuchte man aber die Kollektion der S von diesem B aus, daher der Versuch mit der ID im Funktionsaufruf.

    Viele Grüße,
    GP

    • Diese Antwort wurde geändert vor 5 Jahren, 7 Monaten von Carsten Hof.
    • Diese Antwort wurde geändert vor 5 Jahren, 3 Monaten von caf.
    #2579
    Claudia Mangstl
    Teilnehmer

    Hallo Herr GP,

    bitte versuchen Sie mal diesen Aufruf:
    server.getDependants(iId, sEntityName, sForeignKeyFieldName)

    Früher war der Referenzname „genericObject“ fest vergeben und die Methode ist von diesem Namen ausgegangen.
    In obigem Aufruf können Sie einen anderen Referenznamen mitgeben.

    Gibt es einen speziellen Grund, warum Sie die Regeln für das Unterformular ausführen ? Der Anstoss für der Regelausführung (Speichern, Benutzer, etc.) wird nämlich immer für das Vaterobjekt ausgeführt.

    • Diese Antwort wurde geändert vor 5 Jahren, 7 Monaten von Claudia Mangstl.
    • Diese Antwort wurde geändert vor 5 Jahren, 3 Monaten von caf.
    #2582
    Carsten Hof
    Teilnehmer

    Hallo Frau Mangstl,

    übertragen wir das Beispiel auf die Aufträge:
    – A ist ein Auftrag
    – B ist ein Basisauftrag (das mag nicht so sinnvoll sein)
    – S sind die Auftragspositionen des Basisauftrags

    Der gesamte Auftragswert von A ergibt sich aus der Summe der Auftragspositionen des Basisauftrags sowie weiterer Daten. Bei jeder Änderung dieser weiteren Daten auf der GUI von A muss der gesamte Auftragswert neu berechnet werden.
    Daher die gewählte Vorgehensweise, eine Regel für A zu schreiben, welche die Kollektion S von B einbezieht.

    Die von Ihnen vorgeschlagene Funktion macht genau das richtige, vielen Dank!

Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)