Mehrfachfelder — Telefonnummern, E-Mails, Tags — speichern mehrere Werte auf einmal, und auch Roboter geben Listen zurück: etwa die Teile einer aufgeteilten Zeichenkette. Die eingebauten Aktionen der Geschäftsprozesse von Bitrix24 (Alaio) arbeiten schlecht mit Listen: das Einsetzen klebt alle Werte zu einer Zeichenkette zusammen, und das Schreiben in ein Mehrfachfeld überschreibt das, was darin lag. Die Roboter von Roboteka decken die Arbeit mit Arrays ab: Element per Index holen, Elemente zählen, das Vorhandensein eines Werts prüfen, einen Wert eines Mehrfachfelds hinzufügen und entfernen sowie Duplikate entfernen, sortieren, summieren, ein Element aus einer Liste löschen und eine Liste als Tabelle ausgeben.
Woher kommen Arrays in einem Geschäftsprozess?
Drei Quellen. Mehrfache Felder von Entitäten: Telefonnummern und E-Mails eines Kontakts, Benutzerfelder mit dem Kennzeichen „mehrfach" — Tags, Kategorien, eine Liste von Filialen. Mehrfache Prozessvariablen, in denen sich Werte im Verlauf der Zweige ansammeln. Und die Ergebnisse anderer Roboter: das Aufteilen einer Zeichenkette nach einem Trennzeichen gibt eine Liste der Teile zurück, das Extrahieren per Muster — eine Liste der Treffer. Mit einer solchen Liste lässt sich mit Bordmitteln wenig anfangen: das Einsetzen in Text klebt die Werte mit Komma zusammen, eine Bedingung prüft das Vorkommen anhand der Zusammenklebung. Genau die zweite Telefonnummer zu nehmen, Tags zu zählen oder sauber einen Wert hinzuzuschreiben, ohne die übrigen anzutasten — das sind bereits Aufgaben für die Roboter unten.
Wie holt man das erste, letzte oder N-te Element?
Der Roboter „Array-Element nach Index abrufen" nimmt ein Wertearray und einen Index entgegen: 0 — das erste Element, 1 — das zweite, −1 — das letzte, −2 — das vorletzte. Ausgabe: das Element und das Kennzeichen „Element existiert" (J/N); liegt der Index außerhalb des Arrays, wird ein leerer Wert und das Kennzeichen N zurückgegeben — der Prozess hält nicht an, sondern ein Bedingungszweig behandelt den fehlenden Datensatz. Typische Verkettungen: eine Zeichenkette mit einem Namen nach Leerzeichen aufgeteilt — das erste Element als Nachname genommen; eine Adresse nach Komma aufgeteilt — das letzte Element als Hausnummer genommen; aus einer Trefferliste eines regulären Ausdrucks das erste genommen. Das Ergebnis schreibt man in ein gewöhnliches Einzelfeld oder eine Variable für die folgenden Schritte.
Wie zählt man Elemente und prüft das Vorhandensein eines Werts?
Zwei Frage-Roboter. „Array-Größe / Anzahl der Elemente" gibt die Anzahl und das Kennzeichen „Array ist leer" (J/N) zurück; leere Zeichenketten werden standardmäßig nicht mitgezählt — eine zufällige leere Position in einem Mehrfachfeld verfälscht die Zählung nicht. „Prüfen, ob ein Wert im Array vorhanden ist" sucht eine exakte Übereinstimmung des Elements — keine Teilzeichenkette — ohne Berücksichtigung der Groß-/Kleinschreibung, per Option lässt sich ein strenger Vergleich aktivieren. Ausgabe: das Kennzeichen „Gefunden" (J/N) und der Index des ersten Treffers, minus eins, wenn es keine Treffer gibt. Anwendung in Prozessbedingungen: „der Deal hat bereits den Tag VIP — die Rabattvergabe überspringen", „der Kontakt hat null Telefonnummern — eine Aufgabe an den Mitarbeiter, die Karte vor der Übergabe in den Anrufbetrieb zu vervollständigen".
Wie fügt man einem Mehrfachfeld einen Wert hinzu, ohne die übrigen zu überschreiben?
Der Hauptschmerz der Mehrfachfelder: die eingebaute Dokumentänderung schreibt das Feld als Ganzes, und beim Hinzufügen eines einzelnen Tags löscht man leicht die bestehenden. Der Roboter „Wert zu einem Mehrfachfeld hinzufügen" schreibt den Wert sauber hinzu: er liest den aktuellen Inhalt des Entitätsfeldes und fügt den neuen zu den bestehenden hinzu. Eingabe: der Entitätstyp — Deal, Kontakt, Unternehmen oder Lead — die Entitäts-ID per Einsetzen aus dem aktuellen Dokument, der Feldcode (zum Beispiel UF_CRM_TAGS oder PHONE) und der Wert selbst. Die Option „nicht hinzufügen, wenn bereits vorhanden" ist standardmäßig aktiviert: ein wiederholter Start des Prozesses erzeugt keine Wertdubletten. Ausgabe: das Kennzeichen „Erfolgreich" (J/N) und die resultierende Anzahl der Elemente im Feld.
Wie entfernt man einen Wert aus einem Mehrfachfeld?
Die umgekehrte Operation — einen Tag entfernen, eine veraltete Telefonnummer löschen. Von Hand bedeutet das, die Karte zu öffnen und das Feld zu bearbeiten; mit der eingebauten Aktion — das Feld als Ganzes neu zu schreiben, mit allen Risiken. Der Roboter „Wert aus einem Mehrfachfeld entfernen" nimmt Entitätstyp, ID, Feldcode und den zu entfernenden Wert entgegen. Es werden alle Vorkommen dieses Werts entfernt, die übrigen Elemente bleiben an ihrem Platz. Ausgabe: das Kennzeichen „Erfolgreich" (J/N), wie viele Vorkommen entfernt wurden und die resultierende Anzahl der Elemente im Feld. Rezept: ein Deal erfolgreich abgeschlossen — der Prozess entfernt vom Unternehmen den Tag „in Bearbeitung" und schreibt mit dem benachbarten Hinzufügen-Roboter den Tag „Kunde" hinzu; die Karte spiegelt immer den aktuellen Status ohne manuelle Korrektur wider.
Wie holt man den zuletzt hinzugefügten Wert?
Bitrix24 speichert die Werte eines Mehrfachfelds in der Reihenfolge, in der sie hinzugefügt wurden, daher ist „der zuletzt hinzugefügte" einfach das letzte Element der Liste. Der Roboter „Array-Element nach Index abrufen" mit dem Index −1 gibt es zurück, ohne die Länge zu zählen; −2 liefert das davor. Eine Feinheit bei Feldern vom Typ „Liste" und „Bindung an CRM-Element": ein solches Feld erreicht den Geschäftsprozess als Liste von IDs — der Listenwerte oder der gebundenen Elemente — nicht der Namen. Der Index −1 liefert die ID des letzten Elements; um dessen Namen, Telefonnummer oder ein beliebiges anderes Feld zu lesen, hängt man den Roboter „Feldwert einer verknüpften Entität abrufen" an — er nimmt den Entitätstyp, diese ID und einen Feldcode entgegen. Beispiel: ein Deal hat ein mehrfaches Feld „Genehmiger" mit Bindung an Kontakte — der Prozess nimmt den zuletzt hinzugefügten und zieht dessen E-Mail in die Benachrichtigung.
Wie macht man aus einer kommagetrennten Zeichenkette ein Mehrfachfeld?
Werte aus einem Formular oder einer Integration kommen oft als eine Zeichenkette an: „Montage, Lieferung, Garantie". Der Roboter „Zeichenkette per Trennzeichen teilen" zerlegt sie in eine Liste von Teilen; das Trennzeichen wird wörtlich genommen, daher gibt man für eine Zeichenkette mit Komma und Leerzeichen „Komma plus Leerzeichen" als Trennzeichen an, sonst behalten die Teile ein führendes Leerzeichen. Das Ergebnis ist ein gewöhnliches Array: man schreibt es mit der eingebauten Aktion „Dokument ändern" als Ganzes in ein Mehrfachfeld (das Feld wird überschrieben — bei einem leeren Feld ist das genau das Gewünschte) oder hängt die Werte einzeln mit „Wert zu einem Mehrfachfeld hinzufügen" an die bestehenden an. Mehr zum Teilen und Zusammenfügen im Artikel über Zeichenketten in Geschäftsprozessen.
Wie löscht man ein Element aus einem Array oder leert eine Liste?
Zwei verschiedene Fälle. Muss ein Wert aus einem Feld auf der Karte verschwinden, ist das „Wert aus einem Mehrfachfeld entfernen" — er bearbeitet die Entität selbst. Liegt die Liste in einer Prozessvariablen oder kam sie von einem anderen Roboter und die Karte soll unangetastet bleiben, nimmt man „Element aus dem Array löschen". Zwei Modi: nach Wert — jede Übereinstimmung wird entfernt, standardmäßig ohne Berücksichtigung der Groß-/Kleinschreibung; nach Index — ein Element, 0 das erste, −1 das letzte. Ausgabe: das Array nach dem Löschen, wie viele Elemente entfernt wurden und die resultierende Anzahl. Eine mehrfache Variable vollständig zu leeren geht einfacher mit Bordmitteln — die Aktion „Variablen ändern" mit leerem Wert; ein Mehrfachfeld auf der Karte leert der Roboter „Feld leeren", weil eine leere Zeichenkette in der eingebauten Aktion „Dokument ändern" bei solchen Feldern nicht funktioniert. Der Lösch-Roboter ist für den Fall, dass ein Wert die Liste verlässt: die erste Telefonnummer in der Warteschlange ist abgearbeitet — per Index 0 entfernen und den Rest weitergeben.
Wie entfernt man Duplikate und vergleicht zwei Listen?
„Duplikate aus dem Array entfernen" behält nur eindeutige Werte und bewahrt die Reihenfolge des ersten Vorkommens; der Vergleich erfolgt standardmäßig ohne Berücksichtigung der Groß-/Kleinschreibung, per Option streng. Ausgabe: das Array ohne Duplikate, die Anzahl der eindeutigen Elemente und wie viele Wiederholungen verworfen wurden. Ein typischer Fall: die Telefonnummern eines Unternehmens und seiner Kontakte, vor einem Versand in einer Variablen gesammelt — nach dem Roboter bekommt keine Nummer zwei Nachrichten. Derselbe Roboter hilft beim Vergleich zweier Mehrfachfelder. Element für Element — „Prüfen, ob ein Wert im Array vorhanden ist" innerhalb der eingebauten Konstruktion „Schleife": ein Wert aus Feld A wird in Feld B gesucht. Als Ganzes — beide Listen in eine Variable sammeln und die Duplikatentfernung laufen lassen: enthält keines der Felder selbst Wiederholungen und ist die Anzahl der verworfenen Wiederholungen gleich der Anzahl der Elemente in Feld B, ist Feld B vollständig in Feld A enthalten.
Wie summiert man die Werte eines Arrays?
Ein mehrfaches Feld „Zahlungen" oder eine Liste von Beträgen aus einer aufgeteilten Zeichenkette addiert der Roboter „Summe der Array-Elemente". Er versteht das Komma als Dezimaltrennzeichen und Leerzeichen innerhalb von Zahlen („1 500,50"), überspringt nicht numerische Elemente und meldet separat, wie viele übersprungen wurden — eine Prozessbedingung auf diesen Zähler fängt „Text ist ins Feld geraten" ab. Ausgabe: die Summe und die Anzahl der gezählten Elemente. Die Summe wird meist anschließend gerundet und in ein Deal-Feld oder eine E-Mail gesetzt — Rundung und Prozente haben einen eigenen Artikel über Berechnungen in Geschäftsprozessen.
Wie sortiert man ein Array?
Bordmittel sortieren keine Liste, und das Sortieren von Zahlen als Zeichenketten ergibt die Reihenfolge „1, 10, 2". Der Roboter „Array sortieren" ordnet die Elemente aufsteigend oder absteigend; der Typ wird automatisch erkannt — sind alle Elemente numerisch, wird numerisch verglichen, sonst alphabetisch als Zeichenketten — und lässt sich erzwingen. Ausgabe: das sortierte Array und die Anzahl der Elemente. Zusammen mit dem Abrufen per Index beantwortet er „die größte Zahlung": absteigend sortieren, Element 0 nehmen; „die drei frühesten Termine": aufsteigend sortieren, 0, 1 und 2 nehmen.
Wie gibt man eine Liste als Tabelle in einer E-Mail oder Benachrichtigung aus?
Das Einsetzen eines Mehrfachfelds in Text liefert die Werte mit Komma getrennt. Für eine lesbare E-Mail nimmt man den Roboter „HTML-Tabelle aus einem Array": jedes Array-Element wird zu einer Tabellenzeile, ein Trennzeichen innerhalb des Elements (standardmäßig Semikolon) teilt es in Spalten, und ein separates Feld legt die Kopfzeile fest. Ausgabe: fertiger HTML-Code der Tabelle, die Anzahl der Zeilen und Spalten. Rezept: eine Liste von Positionen „Bezeichnung;Menge;Betrag", die im Verlauf des Prozesses in einer Variablen gesammelt wurde, geht als Tabelle per E-Mail an den Kunden. Wie man eine solche E-Mail oder Benachrichtigung zustellt, beschreibt der Artikel über Benachrichtigungen aus einem Geschäftsprozess.
Fazit
Die Roboter decken den Lebenszyklus eines Arrays ab: Element holen — „Array-Element nach Index abrufen", zählen — „Array-Größe / Anzahl der Elemente", prüfen — „Prüfen, ob ein Wert im Array vorhanden ist", ein Mehrfachfeld auf der Karte ändern — „Wert zu einem Mehrfachfeld hinzufügen" und „Wert aus einem Mehrfachfeld entfernen", eine Liste verarbeiten, ohne auf die Karte zu schreiben — „Element aus dem Array löschen", „Duplikate aus dem Array entfernen", „Array sortieren", „Summe der Array-Elemente", „HTML-Tabelle aus einem Array". Alle finden Sie im Roboteka-Katalog, kostenlos aus dem Bitrix24.Markt. Fehlt die benötigte Array-Operation — beschreiben Sie die Aufgabe, wir bauen den Roboter kostenlos.