Der wiederholte Bereich – Nintex für Fortgeschrittene

Neben den Formatierungsmöglichkeiten bietet Nintex eine Vielzahl nützlicher Funktionen zur Erstellung von Formularen in SharePoint. Eine Funktion davon ist der “Wiederholte Bereich” (Repeating Section).

Mit diesem Steuerelement lassen sich mehrere Steuerelemente zusammenfassen und, wie der Name schon vermuten lässt, wiederholt anzeigen und ausfüllen.

Wofür braucht man sowas?

Im SharePoint-Standard begegnen man häufig dem Problem, mehrere gleichartige Datensätze erfassen zu wollen. Im Standard ist das nur bedingt lösbar. Nehmen wir an, wir wollen eine Rechnung mit mehreren Rechnungspositionen in SharePoint erfassen. Als Felder sollen “Position”, “Bezeichnung” und “Betrag” erfasst werden.

Variante 1: Felder für alle Datensätze in der Liste anlegen Wir legen für jede Rechnungsposition die benötigen Spalten an (Pos1, Bez1, Betr1, Pos2, Bez2, Betr2, … , PosN, BezN, BetrN). Hier ergeben sich zwei Probleme:

  1. Die Anzahl an Spalten in SharePoint-Listen in begrenzt. Zwar hängt die Begrenzung vom Spaltentyp ab, aber im Schnitt ist bei 255 Spalten Schluss.
  2. Alle Spalten wären immer sichtbar. Wenn ich nur 2 Rechnungspositionen erfassen möchte, habe ich trotzdem alle N Positionen auf dem Formular.

Variante 2: Erfassen über eine Lookup-Liste Möglichkeit 2 ist das Erfassen der Positionen in einer separaten Liste. Dabei würden die Positionen dann per Lookup der Rechnung zugeordnet. Hier ergeben sich wieder zwei Probleme:

  1. Ohne Erweiterung mit JavaScript o.ä. ist es nicht möglich, die Rechnungspositionen direkt beim Erfassen der Rechnung zu erstellen. Das ginge nur nacheinander und über einen separaten Dialog.
  2. Das Auswählen der Rechnung über ein Lookup ist eine nicht zu unterschätzende Fehlerquelle. Zudem wird das Lookup nach einer Weile sehr lang, was die Auswahl noch fehleranfälliger macht.

Wiederholter Bereich Der wiederholte Bereich löst die Probleme der beiden oben beschriebenen Varianten. Das Steuerelement funktioniert ähnlich wie ein Bereichs-Steuerelement. Alle benötigten Steuerelemente werden per Drag-and-Drop in den wiederholten Bereich geschoben und angeordnet. Ein Klick auf “Element hinzufügen” unterhalb des Bereichs dupliziert alle Steuerelemente unter Berücksichtigung der Anordnung und Formatierung. Da die Daten gesammelt gespeichert werden (mehr dazu im nächsten Abschnitt), müssen für die einzelnen Werte keine Spalten in der Liste angelegt werden. Die Anzahl der Elemente ist theoretisch endlos und nur durch die Datenbank limitiert (max. 2GB, bzw. etwas über 1 Milliarde Zeichen).

Wie funktioniert der wiederholte Bereich?

Der wiederholte Bereich speichert die Daten in einem mehrzeiligen Textfeld. Wichtig: es muss ein “Nur Text”-Textfeld sein, Rich-Text-Felder funktionieren nicht. Alle Informationen aus dem wiederholten Bereich (Feldtyp, Feldname, Wert, usw.) werden als XML gespeichert. Auf diese Weise kann die Information immer wieder mit den korrekten Steuerelementen dargestellt werden. Das XML hat immer folgendes Format:

<?xml version="1.0" encoding="utf-8"?>
<RepeaterData><Version />
<Items>
<Item>
<[FeldName1] type="[FeldTyp1]">[Wert1]</[FeldName1]>
<[FeldName2] type="[FeldTyp2]">[Wert]</[FeldName2]>
</Item>
<Item>
<[FeldName1] type="[FeldTyp1]">[Wert1]</[FeldName1]>
<[FeldName2] type="[FeldTyp2]">[Wert]</[FeldName2]>
</Item>
</Items>
</RepeaterData>

Da die Informationen im XML gespeichert werden, werden keine separaten Felder für die einzelnen Werte benötigt. Man sollte aber darauf achten, die Steuerelemente im wiederholten Bereich ordentlich zu benennen, damit die Informationen im XML nachvollziehbar bleiben.

Beispiel

Bleiben wir bei unserem Beispiel vom Anfang. Zur Erinnerung: Wir möchten Rechnungen mit allen Rechnungspositionen erfassen. Zunächst wird die Liste “Rechnungen” angelegt und die benötigten Spalten erstellt:

  • Datum | Datum (Nur Datum) | Standard: Heute
  • Betrag | Währung
  • RechnungsXML | Mehrzeiliger Text | Nur-Text
  • Die Titel-Spalte wird nicht benötigt und kann z.B. später per Workflow gesetzt werden.

Als nächstes erstellen wir unsere Nintex Form. Für meine Form habe ich nach dem automatischen Generieren alle Steuerelemente entfernt und bei null angefangen.

Der wiederholte Bereich enthält 4 Steuerelemente:

  • Ein berechneter Wert für die Positionsnummer
  • Ein Textfeld für die Bezeichnung
  • Ein Textfeld für den Betrag
  • Ein Label für das Euro-Zeichen (optional)

Für die Darstellung der Rechnungsposition kann eine Inlinefunktion von Nintex verwendet werden.

Die beiden Textfelder sind weitestgehend im Standard. Das Feld für den Betrag ist so eingestellt, dass es nur “Währung” als Eingabe zulässt, also Zahlen und “.” bzw. “,” als Trennzeichen.

Der wiederholte Bereich wurde wie folgt konfiguriert:

Die wichtigste Einstellung ist die Verbindung zum mehrzeiligen Textfeld in der Liste. Gut zu sehen sind die anderen Einstellungsmöglichkeiten. Ich habe für mein Beispiel lediglich den “Add row”-Text angepasst.

Zu guter Letzt habe ich noch ein berechnetes Feld eingefügt, dass die Gesamtsumme berechnet und in die Spalte “Betrag” schreibt.

Ergebnis

So sieht unsere fertige Nintex Form im Einsatz aus:

Und so werden die Daten in der Liste angezeigt:

Das XML für unsere Rechnungsdaten sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8"?>
<RepeaterData><Version />
<Items>
<Item>
<Position type="System.String">1</Position>
<Bezeichnung type="System.String">Artikel 1</Bezeichnung>
<Betrag type="System.Decimal">200</Betrag>
</Item>
<Item>
<Position type="System.String">2</Position>
<Bezeichnung type="System.String">Artikel 2</Bezeichnung>
<Betrag type="System.Decimal">415.16</Betrag>
</Item>
<Item>
<Position type="System.String">3</Position>
<Bezeichnung type="System.String">Artikel 3</Bezeichnung>
<Betrag type="System.Decimal">1368.83</Betrag>
</Item>
</Items>
</RepeaterData>

Wie kann ich die Daten weiterverarbeiten?

Der einzige Nachteil daran, dass die Daten im XML-Format gespeichert werden, ist, dass sie nicht direkt ausgewertet werden können. Mit der Aktion “XML-Abfrage” in Nintex Workflow kann das XML bequem ausgelesen werden.

Eingabe ist die Listenspalte mit unserem XML. Über XPath können wir die benötigten Werte auslesen und z.B. in einer Sammlung speichern. Wer sich nicht mit XPath auskennt, kann den mitgelieferten XPath Builder verwenden. Hierzu muss das XML manuell eingegeben werden. Also Element in der Liste erstellen, XML-Spalte in der Ansicht anzeigen, XML kopieren und in das Feld XML (siehe Screenshot oben) einfügen, auf “XPath Builder” klicken. Anschließend wird das XML als Baumansicht dargestellt.

Der ausgewählte XML-Tag wird für die XML-Abfrage übernommen.

Viel Spaß beim Wiederholen!

Erfahren Sie mehr

Ich bin im Flow! – Eine Übersicht zu Microsoft Flow
Blog
Blog

Ich bin im Flow! – Eine Übersicht zu Microsoft Flow

Die Power Platform wird aktuell von Microsoft sehr stark gepusht. Zeit, sich mit dem Potenzial der einzelnen Komponenten zu beschäftigen. Heute: Flow.

DevOps und Container
Blog
Blog

DevOps und Container

DevOps an sich ist nicht an eine Technologie gebunden, jedoch haben sich Container-Technologien und DevOps als Verwandte im Geiste gefunden.

PowerApps – Neuigkeiten, Übersicht, Tipps & Tricks
Blog
Blog

PowerApps – Neuigkeiten, Übersicht, Tipps & Tricks

Neues aus der Welt von PowerApps

Office 365 Groups als Evolution von SharePoint?
Blog
Blog

Office 365 Groups als Evolution von SharePoint?

Zusätzlich zu SharePoint erlauben die Office 365 Groups es mir als Anwender, schnell und einfach neue Gruppen anzulegen und selbständig Benutzer hinzuzufügen.

Das neuste Mitglied der Office 365 Familie: Delve
Blog
Blog

Das neuste Mitglied der Office 365 Familie: Delve

Microsoft legt nach: Mit Delve startet eine neue Form des Suchens und des Auffinden von Dokumenten und Informationen.

Azure Functions: Der Webservice ohne Webserver
Blog
Blog

Azure Functions: Der Webservice ohne Webserver

Azure Functions als Authentifizierungs-Helfer für clientseitige Lösungen mit 3rd Party APIs

DevOps und „The Phoenix Project“
Blog
Blog

DevOps und „The Phoenix Project“

Buchvorstellung "Projekt Phoenix: Der Roman über IT und DevOps - Neue Erfolgsstrategien für Ihre Firma" von Gene Kim.

Paket Dependency Manager für .NET
Blog
Blog

Paket Dependency Manager für .NET

Paket ist ein Dependency Manager für .NET, welcher es sich zum Ziel gesetzt hat einige Probleme von NuGet zu beheben.

Sprechen Sie LUIS? – Der intelligente Chat-Bot im Praxistest
Blog
Blog

Sprechen Sie LUIS? – Der intelligente Chat-Bot im Praxistest

Mit LUIS, der Sprach- und Texterkennungssoftware von Microsoft, und dem Bot Framework von Azure haben wir eine Lösung für den IT-Support entwickelt.

Jan
25
Webcast mit Microsoft: Fit für die digitale Arbeitswelt
Webinar
Webinar

Webcast mit Microsoft: Fit für die digitale Arbeitswelt

Die digitale Transformation und die Veränderung der Arbeitswelt ist längst in vielen Unternehmen und in den öffentlichen Einrichtungen angekommen. Dennoch stell...

Nov
07
Webcast mit Microsoft: Das Intranet zu Ende gedacht
Webinar
Webinar

Webcast mit Microsoft: Das Intranet zu Ende gedacht

Am 07. November findet erneut eines unserer Webinare gemeinsam mit Mircosoft statt. Das Thema dieses Mal: Das Intranet zu Ende gedacht – Die Informationszentral...

Valo ist neuer Partner der novaCapta für Intranets
News
News

Valo ist neuer Partner der novaCapta für Intranets

Durch die Partnerschaft mit Valo, dem Ready-2-Go Intranet-Baukasten aus Finnland baut die novaCapta ihr Angebot bei der Umsetzung von schnellen und funktionalen...