Hallo,
sorry, die Frage-Tante schlägt wieder zu
Es geht diesmal um benutzerdefinierte Felder:
-
Kann man für benutzerdefinierte Felder ein zweistufiges Dropdown-Menü erstellen? Zum Beispiel so, dass erst das Bundesland abgefragt wird und danach nur die Einträge für das jeweilige Bundesland.
-
Kann man die Einträge im Dropdown-Menü irgendwie automatisiert über eine Gruppe einlesen? Oder geht das wirklich nur händisch? Wir arbeiten hier mit Banken, die gerne mal fusionieren. Es wäre also schön, dass sich die Anzeigen im Dropdown-Menü automatisch ändern, wenn wir den Kontakt einer Bank ändern.
Wenn man es mit Bordmitteln nicht lösen kann, wäre es möglich solche Features programmieren zu lassen?
Freue mich über Ideen.
Dank & Gruß,
Regina
1 „Gefällt mir“
Moin Regina,
von der Abbildung einer mehrstufigen Wertehierarchie habe ich noch nicht gehört.
Ich habe die Werte dann immer auf eine Ebene gebracht
„Hamburg > WertA“
„Hamburg > WertB“
„Hamburg > WertC“
„Bremen > WertD“
„Bremen > WertE“
Die Wertelisten kann man per API laden,. Ich nutze das immer in einem Python-Script bei Migrationen. Löschungen von verwendeten Werten wären da natürlich kritisch.
Das Tool von Jaap, mit dem man Konfigurationsdaten zwischen Systemen transportieren kann müsste das eigentlich können: Die Config Items Extension: Konfigurationen exportieren und woanders importieren (CiviCRM-Stammtisch vom 23.02.2022)
Import/Export von Optionsgruppen: @Andreas Ihr habt das doch schon gemacht?
1 „Gefällt mir“
Regina,
ich antworte mal an Stelle von @Andreas !
Was den von dir gewünschten Import betrifft: Dafür braucht man kein Python-Skript oder ähnliches!
Es gibt nämlich eine sehr praktische Extension dafür, mit der man alle Entities, für die es eine API v3 „create“-Aktion gibt, aus einer csv-Datei importieren kann:
Die Extension ist für die Installation in der CiviCRM-Extensionverwaltung vorgesehen.
Nichtsdestotrotz ist das schon was für Leute die sich gut mit CiviCRM auskennen. Und man sollte bei der Benutzung sehr sorgsam vorgehen, damit beim Import nichts kaputt geht.
Viele Grüße
Detlev
1 „Gefällt mir“
Das mit der Ebenen-Logik ist eine gute Idee. Danke, Ulrich!
Nachtrag:
Ich ging davon aus, dass man via Kontakt-Import Daten aus einer CSV-Datei in benutzerdefinierte Felder importieren kann. Bei unserem Beispiel (alphanumerisches Feld mit Drop-Down) funktioniert das aber leider nicht.
Mittlerweile gibt es ja auch die Option „Import Benutzerdefinierter Daten“, aber dort stehen unter „Multi-value Custom Data“ nur „Zuwendungsbescheinigungen“ und „Bescheinigte Werte“ zur Wahl. Bei beiden taucht unser Feld nicht auf.
Wenn mir die API-Sache aufgrund fehlender Kompetenz zu heikel ist und der Import auf einfachem Wege nicht funktioniert, bleibt dann wirklich nur das sukzessive händische Eingeben der einzelnen Werte für das Drop-Down-Menü?
Liebe Regina,
Deine Vorsicht ist gut und richtig. Vermutlich hat Dich die Beschreibung auf der GitHub-Seite der von @detlev.sieber vorgeschlagenen Erweiterung ein wenig abgeschreckt – es ist nämlich weniger kompliziert, als es dort klingt. Ich möchte Dich und andere deshalb ermutigen, den Umgang mit der Erweiterung auf einem Testsystem einfach mal auszuprobieren. Öffentliche Testsysteme hier auf dem Community-Portal wären einfach toll, oder? (Wir diskutieren das gerade im Vorstand von Software für Engagierte). Du kannst das in diesem Fall aber auch auf der offiziellen CiviCRM Demo testen, da Du dort die Erweiterung auch selbst nachinstallieren können solltest. Ein Test könnte dann so aussehen:
-
Kontakte, für die Du die Felder befüllen möchtest, exportieren.
-
In der resultierenden CSV-Datei eine Spalte für Deine Auswahl ergänzen. Du trägst dort die Werte der Auswahloptionen und nicht die Label ein. Hier ein Beispiel für das Feld „Auswahl Test“ mit den Optionen 1 = „Option 1“ und 2 = „Option 2“:
-
Nun geh auf Administration → API csv Import und wähle als Entität „Contact“ aus, weil Du in diesem Fall Daten für Kontakte importieren möchtest:
-
Wie vom „normalen“ Importer gewohnt kannst Du auch hier die Spalten Deiner Tabelle bequem Datenfeldern zuordnen. In unserem Fall ordnen wir die Spalte mit den nachgetragenen Auswahloptionen dem entsprechenden Datenfeld zu, wobei „Kontaktdaten“ hier der Name der Feldgruppe ist, in der das Feld „Auswahl Test“ liegt:
Hier sollen nur die Auswahl-Optionen importiert werden, daher sind nur diese und die CiviCRM ID zur Zuordnung ausgewählt.
-
Nach nochmaliger Bestätigung erledigt die Erweiterung den eigentlichen Import und am Ende hast Du die Auwahlfelder in den Kontakten entsprechend gesetzt:
Also: Es ist schon so, dass man auch hier wissen sollte, was man da tut. Und auch wenn Du Dich dann sicher genug fühlst, stelle sicher, dass Du ein Backup hast. Trotzdem ist gerade Dein Beispiel ein ganz gutes um zu zeigen, was für ein praktisches Werkzeug der API csv Importer ist und dass es sich lohnt, den Umgang damit zu erlernen.
Für Fortgeschrittene: Da die Erweiterung – wie der Name schon sagt – am Ende API-Aktionen aufruft, kann man bei Unklarheiten wie z.B. ob jetzt der Wert, das Label oder der Datenbankname verlangt wird, den API Explorer zu Rate ziehen.
1 „Gefällt mir“
Lieber Andreas,
ganz herzlichen Dank für die Motivation und die präzise Anleitung.
Irgendwas habe ich noch nicht richtig gemacht.
Aus der Testumgebung habe ich mir zwei Organisationen herausgesucht und mein benutzerdefiniertes Feld angelegt.
Dann habe ich die Extension gestartet und den Import laufen lassen. Es wurden zwei veränderte Kontakte angezeigt, aber im Ergebnis ist das Feld wieder leer:
Funktioniert das vielleicht nur für Personen?
Herzliche Grüße,
Regina
Es wird an dem liegen, was ich in Punkt 2 meinte: Du musst die Werte für die gewünschte Auswahl in der Tabelle eintragen und nicht die Bezeichnungen:
1 „Gefällt mir“
Ok, das hatte ich in der Tat nicht richtig verstanden. Danke für die Wiederholung, Andreas.
Mit den Optionswerten funktioniert es natürlich, aber das ist nicht unbedingt das, was uns vorschwebte, denn es ging ja gerade um der Import der Bezeichnungen. Diese muss man nun weiterhin händisch eingeben.
Gruß von Regina
Das geht ebenfalls mit dem API csv Importer!
Nehmen wir an ich möchte für mein Beispiel oben weitere Optionen importieren. Dann brauche ich eine Tabelle mit den zusätzlichen Werten und Labels – und natürlich die Angabe, wohin diese neuen Auswahloptionen sollen. Dafür brauche ich noch die option group id. Alles zusammen trage ich in eine Tabelle ein:
Wie komme ich nun auf die 125? Hierfür gibt es viele Wege. Du könntest in der Datenbank nachschauen oder den oben erwähnten API-Explorer nutzen. Eine andere einfache Möglichkeit ist es, im Menü Administration → Verwaltung → Optionengruppen nachzuschauen:
Nun geht es wieder in den csv Importer, diesmal mit der Entität OptionValue:
…und der Feldzuordnung:
Und schon haben wir weitere Optionen importiert:
Es ist selbstredend ziemlich wichtig die richtige Optionengruppe zu erwischen
1 „Gefällt mir“