SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




View in einem gespeicherten InfoPath Formular benutzerabhängig anzeigen?

Geprüfte Antwort Dieser Beitrag hat 3 Antworten

Ohne Rang
81 Beiträge
Dirk Weinert erstellt 13 Juni 2013 10:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo liebe Forengemeinde,

heute habe ich einen echten Brocken zu knacken. ;-(

Mitels InfoPath habe ich ein Formular für einen Urlaubsantrag erstellt.
Das Formular ist als Content-Type in einer Form-Library hinterlegt.
Dabei arbeite ich mit mehreren Views.

In der ersten View füllt der Antragsteller das Formular aus. Die üblichen Daten wie Urlaub von bis, Urlaubsart (Jahresurlaub usw.) werden dabei abgefragt. Über einen PeoplePicker lese ich aus dem AD den Namen des Antragstellers aus. Ebenso hole ich aus dem AD den hinterlegten Vorgesetzten.

Zusätzlich zu den Urlausbdaten, muss der Antragsteller einen Namen mit angeben, unter dem der Antrag in der Form-Library gespeichert werden soll. Der Grund dafür ist, dass der Antragsteller dann jederzeit in seine Liste schauen kann, um später noch einmal seine Anträge zu sehen/zu prüfen.

Sobald der Antragsteller einen Button wie z.B. 'Senden' oder 'Antrag stellen' klickt, wird die zweite View aufgerufen und der Antragsteller bekommt eine kurze Rückmeldung, dass sein Antrag an den entsprechenden Vorgesetzten gesendet wird.
Danach hat der Antragsteller nur noch die Möglichkeit per Button das Formular zu schließen.

Wenn er später seinen Antrag noch einmal aufruft, ist er nicht mehr bearbeitbar.

Bis hier alles kein Problem. ;-)

Nachdem der Antragsteller das Formular abgesendet hat, wird ein Workflow gestartet, in dem der Antragsteller noch einmal per E-Mail informiert wird, dass sein Antrag an den Vorgesetzten gesendet wurde. Ferner beinhaltet die E-Mail einige Eckdaten seines Antrags. Auch der Link zum gespeicherten Antrag in der Form-Library ist in der E-Mail enthalten.

Zeitgleich bekommt der Vorgsetzte eine E-Mail mit dem Hinweis, dass ein Urlaubsantrag von Person XY gestellt wurde und auf die Genehmigung oder Ablehnung wartet.

Bis hier ebenfalls alles OK. ;-)

Nun geht's aber los.
Der Vorgesetzte öffnet den Antrag und siehe da, er bekommt View 1 zu sehen.
Da soll nicht so sein. Er müsste View 3 sehen, denn in View 3 zeige ich die eingegebenen Daten an und zwar so, dass sie nicht editier bar sind. zusätzlich gibt es dann einen Radio-Button für 'genehmigt' oder 'abgelehnt'.
Nun dachte ich, dass ich einfach eine Spalte 'Status' in die Bibliothek setze und dort z.B. den Wert 'gesendet' eintrage, sobald der Antragsteller das Formular abgeschickt hat. In InfoPath prüfe ich per Regel, welcher Wert in der Spalte zum dazugehörigen Antrag steht.

Kein Problem....der Vorgesetzte öffnet den Antrag und bekommt View 3 angezeigt.

ABER...was ist mit dem Antragsteller?
Wenn er sich seinen Antrag noch einmal ansehen will, dann bekommt er jetzt natürlich auch View 3 angezeigt. ;-)

So wie ich das sehe, wird ja in der gespeicherten Form beim Aufruf keine Regel mehr ausgeführt. Nur ganz am Anfang wenn der eigentliche Antrag (Content-Type) geöffnet wird, dann greifen die Regeln.

Im Prinzip müsste ich in der gespeicherten Form (die schon die Daten des Antragstellers enthält) prüfen, wer die Form eigentlich öffnet. Wenn es der Vorgesetzte ist, dann zeige View 3. Ist es der Antragsteller, dann zeige View 1.

Also z. B. so: Wenn aktueller Benutzer (der, der die Datei öffnet) = Eintrag im Feld 'Vorgesetzter' ...

Geht so etwas überhaupt?

Andere Idee. Ist es möglich über eine Workflow (SharePoint Designer 2010) gezielt eine bestimmte View aufzurufen?

Danke und sorry für so viel Text ;-)
Dirk

 





Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Juni 2013 09:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ganz anderer Vorschlag: normalerweise macht man es in Workflows so, daß nicht das Element selbst bearbeitet wird, sondern es wird jemandem eine Aufgabe zugewiesen. In der Aufgabe gibt es dann die Schalter zum Ablehnen oder Genehmigen und der Workflow schreibt das dann ins Formular zurück (und benachrichtigt den Antragsteller).

Falls Du das nicht möchtest, könnte man das Problem wahrscheinlich auch durch Code-Behind im Formular lösen. Per Code prüfen, ob der aktuelle Benutzer der Vorgesetzte ist und dann die View setzen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
36 Beiträge
M.Specht Als Antwort am 14 Juni 2013 11:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wir haben in unserem Haus auch einen Urlaubsantrag eingeführt, mit den 3 Buttons zum Genehmigen, Ablehen und Abbrechen. Der Workflow schreibt dann in die Status Spalte den jeweilgen Genehmigungsstatus.

Meine Frage wäre, wieso hast du das denn mit mehreren Ansichten gemacht? Ist es notwendig, dass Dokument nach dem Absenden zu ändern?

Sonst hättest du doch einfach ein Dummy Feld erzeugen können, was auf dem Formular nicht angezeigt wird, aber zu Beginn einen bestimmten Wert hat, den du nach dem Absenden des Formulars änderst. Damit könntest du dann die Felder, denen du einen Schreibschutz verpassen möchtest mit einer Regel auf dieses Feld verweisen und die Formatierung davon abhängig machen...

So haben wir das zumindest gemacht. Die Felder verlieren diese Werte auch nach dem Absenden nicht.

PS: Für die Anzeige der Urlaubsanträge haben wir ein eigenes Formular gebaut welches sich auf eine Liste bezieht. Der abgesandte Urlaubsantrag erzeugt ein Listenelement. Die Liste ist so eingestellt, dass nur die Einträge angezeigt werden, die der Antragsteller selbst erstellt hat.

Grüsse

M. Specht

Ohne Rang
81 Beiträge
Dirk Weinert Als Antwort am 27 Juni 2013 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Tach auch,

mittlerweile habe ich das Problem gelöst und
arbeite (wie schon vorgeschlagen wurde) mit
Dummy-Feldern.
Über Regeln prüfe ich, wer das Formular öffnet
und reagiere mit der Anzeige einer entsprechenden
View.

Danke
DW