Custom Formulare - JScript Zugriff auf Objektattribute

Post Reply
Christoph
Posts: 99
Joined: 30. Mar 2016, 15:47
Contact:

Custom Formulare - JScript Zugriff auf Objektattribute

Post by Christoph » 18. Sep 2018, 14:58

Hallo,

ich möchte in einem Formular zu einem durch den Nutzer ausgewählten Objekt, z.B. einen Standort, weitere Daten abrufen und im Formular verfügbar machen. Mir steht im JScript die Variable für das Auswahlfeld zur Verfügung, diese enthält eine Object-ID. Die zusätzlichen Daten müssen dementsprechend zur Laufzeit per Ajax-Abruf geholt werden. Gibt es dazu für Endkunden nutzbare Funktionen?

Danke für Tipps!

Gruß
Christoph

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by FrankPree » 08. Nov 2018, 08:53

Hallo Christoph,

in der Classic UI oder in der UUX?

Grüße
Frank

Christoph
Posts: 99
Joined: 30. Mar 2016, 15:47
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by Christoph » 15. Nov 2018, 07:26

Hallo,
in der Classic UI.

Gruß
Christoph

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by FrankPree » 15. Nov 2018, 16:33

Servus,

leider bietet die Classic UI keine einfachen Methoden an, auf referenzierende Objekte zuzugreifen. Je nachdem wie komplex Deine Anforderung ist, kann Dein gewünschtes Ziel relativ einfach, oder auch sehr schwierig sein.

Ich versuche Dir hier mal möglichst kurz eine Variante darzustellen.

Nehmen wir an, Du hast ein benutzerdefiniertes Konfigurationselement UD_FormularAufrufType. Diesem liegt die Datendefinition UD_FormularAufrufClassBase zugrunde.
Die Datendefinition UD_FormularAufrufClassBase hat eine N:0/1 Beziehung zu den Standorten (SPSLocationClassBase). Die Relationsenden heißen Standort und UD_Formular.

Im Dialogeditor des Konfigurationselementes UD_FormularAufruf fügst Du Dir nun einen Abschnitt hinzu.

Danach zwei Felder, ein benutzerdefiniertes Steuerlement und das Standardfeld Name, das beim Anlegen der Datendefinition automatisch angelegt wurde.

Sieht dann etwa so aus:
CustomForm.png
(10.52 KiB) Downloaded 334 times
Im benutzerdefinierten Steuerlement nutzt Du folgenden Code:

Code: Select all

<sps:SpsTextBoxLink
                id="Ud_FormularAufrufClassBaseStandort"
                Mandatory="false"
                readonly="false"
                allownavigation="true"
                runat="server"
                spsclass="Ud_FormularAufrufClassBase"
                spsattribute="Standort"
                whereclause=""
                autopostback="true"
                DisplayExpression="T(SPSLocationClassBase).IDName"
                ColumnsLayoutTemplateName="SPSLocationClassBase_Default"
                relateddefaultvaluesmode="OnPrerender">

<sps:DefaultValue
                               displayexpression="T(SPSLocationClassBase).Name"
                               destinationcontrolid="Ud_FormularAufrufClassBaseName"/>

</sps:SpsTextBoxLink>
Damit wird Dir nach Auswahl eines Standortes, das Feld Name aus der Relation SPSLocation in Deinem Attributfeld Name automatisch eingeblendet.
CustomFormCode.png
(120.21 KiB) Downloaded 306 times
Nun kannst Du beliebige Felder hinzufügen und die Felder aus der Relation des Standortes befüllen. Du ergänzt einfach immer wieder um das folgende Konstrukt erweitern.

Code: Select all

<sps:DefaultValue
                               displayexpression="T(SPSLocationClassBase).IRGENDEINATTRIBUT"
                               destinationcontrolid="Ud_FormularAufrufClassBaseIRGENDEINFELDNAME"/>

Merke dazu aber, wenn nur ein kleiner Fehler in der Syntax des ganzen Konstrukts ist, bleibt die Dialogseite leer. Du findest Debug-Informationen auf dem Anwendungsserver im Matrix Verzeichnis im der Datei Console.log.

Ich hoffe das hilft Dir bei Deinen Versuchen.

Viele Grüße
Frank

P.S. In meinen Screenshots hat die Datendefinition einen falschen Namen. Sie ist mit zwei Unterstrichen geschrieben. Nicht täuschen lassen.

Christoph
Posts: 99
Joined: 30. Mar 2016, 15:47
Contact:

Custom Formulare - JScript Zugriff auf Objektattribute [gelöst]

Post by Christoph » 04. Dec 2018, 13:56

Hallo Frank,

das ist genau was ich brauche - funktioniert perfekt! Vielen Dank für die ausführliche Antwort und das gut erklärte Beispiel - ohne dieses hätte ich die Syntax nicht hinbekommen!

Viele Grüße
Christoph

MRadtke
Posts: 10
Joined: 15. Dec 2016, 09:07
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by MRadtke » 04. Feb 2019, 21:28

Hallo Frank,

hast du auch eine Lösung für die UUX? Ich benötige in einem Dialog bei Create Event in einem Feld den CURRENTUSER, das habe ich soweit schon. Dazu benötige ich noch die Position der jeweiligen Person, die dann direkt angezeigt werden soll.
Beim ersten Aufruf des Dialoges füllt er zwar den CurrentUser, aber nicht die Position. Speichere ich das Objekt ab und öffne erneut den Datensatz zeigt er mir die Position der Person an.
Gibt es eine Idee wie ich den User und seine Position Instant angezeigt bekomme?

Gruß
Mario
FrankPree wrote: 08. Nov 2018, 08:53 Hallo Christoph,

in der Classic UI oder in der UUX?

Grüße
Frank

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by FrankPree » 08. Feb 2019, 14:57

Hallo Mario,

wenn Du Dir weitere Informationen zum Current User in einem Dialog anzeigen möchtest, kannst Du zum Beispiel folgendes tun:
Erstelle Dir im Context eine eigenes berechnetes Attribut wie im Screenshot Solution Builder 1.png beschrieben.
Solution Builder 1.png
(109.17 KiB) Downloaded 419 times
Dann klicke auf AddSource und füge Dir eine Datenquelle hinzu (+Add Source). Diese Quelle zeigt dann auf eine Datenquelle, die Deine gewünschten Informationen enthält.

Also:
Add Source -> custom_user -> Quellenausführungsmodus: Bei Initialisierung und Datenupdate -> Implementierung: Datenquelle: SPSUserClassBase_Default

Dann gehst Du auf den Filter und fügst im erweiterten Modus Deine Filterbedingung mit der CurrentUser Variablen ein. Also wie in Solution Builder 2.png
Solution Builder 2.png
(172.83 KiB) Downloaded 406 times
Dann ziehst Du Dir einfach aus dem $first der Datenquelle, die gewünschten Felder in Dein Formular. So zum Beispiel den Standort (Location).
$first deshalb, weil Du in diesem Fall ja nur ein einzelnes Objekt zurück bekommst (weil im Filter nur jeweils die ID des Current Users übergeben wird). Dann musst Du Dich nicht darum kümmern, wie viele zurück gegebene Elemente in dem Array vorkommen
und angezeigt werden. Zum "Rumprobieren" kannst Du in das Java-Script des Return Wertes ein console.log($value); reinschreiben. So siehst Du zum Beispiel im Chrome mit F12 recht schön, was der Return Wert aus der Datenquelle so alles enthält.

Hilft Dir das schon so weit?

Beste Grüße
Frank

User avatar
llaprosper
Posts: 712
Joined: 07. May 2009, 18:27
Location: Burscheid
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by llaprosper » 17. Mar 2022, 09:08

Ich versuche es einmal in diesem Thread.
Ich habe ein eigenes CI, wo ich im Formular einen User (Beziehung zur SPSUserClassBase) abfrage und einen Pickup Wert.
in der eigenen Datendefinition habe ich also hier den CUSTUser (ID aus der SPSUserClassBase) und das Value von meinem Pickup Wert (CUSTfebiSAPRoles)
Image

Wie komme ich jetzt an das CUSTfebiSAPRoles Value des CurrentUser, der ja hier der "CUSTUser" ist?
Ich habe versucht, meine Source hinzuzufügen, den Currentuser im $filter zu filtern. Console.log sagt aber "undefined"

Image
Attachments
2.PNG
(17.88 KiB) Downloaded 564 times
1.PNG
(22.3 KiB) Downloaded 516 times

dodic
Posts: 506
Joined: 03. Feb 2012, 10:51
Location: Salzgitter
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by dodic » 17. Mar 2022, 09:52

Also du musst gar nicht currentUser dort über den Context mit reinziehen. Ich habe eben die Erfahrung gemacht, wenn du Filter nutzt bei der Auswahl eines Objekt reicht es aus CurrentUserID() zu schreiben.

So sieht das z.B. bei mir aus, wenn ich ein Dialog habe, wo der User ein Asset auswählen soll aber nur welche angezeigt werden, wo das Asset der Kostenstelle zugeordnet ist, wo der CurrentUser KeyUser ist:
T(SPSCommonClassBase).CostCenter.Ud_KeyUser.ID = CURRENTUSERID()

Du müsstet bei deinem Feld im Dialog auf den Filter gehen und dort eigentlich nur dein Attribut = CURRENTUSERID() setzen

Grüße

User avatar
llaprosper
Posts: 712
Joined: 07. May 2009, 18:27
Location: Burscheid
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by llaprosper » 23. Mar 2022, 21:20

In welchem Feld meinst du? In der Source bei $filter? Im Ausdruck (JavaScript) des Attributs?

Christoph
Posts: 99
Joined: 30. Mar 2016, 15:47
Contact:

Re: Custom Formulare - JScript Zugriff auf Objektattribute

Post by Christoph » 30. Mar 2022, 13:57

Hallo,
da ich den Thread mal gestartet hatte , vielleicht kurz der Antwortversuch: Ich denke es ist der Parameter "Filterausdruck" des Objektwähler-Controls gemeint.

Gruß Christoph

Post Reply

Return to “Customizing und Reporting”

Who is online

Users browsing this forum: No registered users and 4 guests