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.




Term Set über Formular füllen

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
64 Beiträge
Philipp Hammer erstellt 29 März 2016 11:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich würde gerne ein Term Set (Managed Metadata Store) über ein Formular einer SharePoint Liste füllen lassen. Das Term Set enthält Auftragsnummern. 

Anders als ich Term Sets aus den Userprofilen gewohnt bin können die User die Terms welche noch nicht enthalten sind nicht einfach in das Formularfeld eintragen und speichern (Term würde dann ins Term Set aufgenommen). Sie müss(t)en auf das Tag-Symbol hinter dem Feld klicken und im Dialog oben "Term hinzufügen" wählen und diesen umständlich eintragen. 

Wir haben auch Term Sets in den User-Profilen. (z.B. "Sprachen")
Dort kann der User einfach ins Feld schreiben, bekommt Vorschläge und wenn die Sprache noch nicht im Term Set ist wird sie eben aufgenommen.
Nur funktioniert das auf meiner SharePoint Liste nicht so... Es kommt immer  "Der angegebene Ausdruck ist ungültig." bzw. "The given term is not valid" (englische Seite).

Berechtigungen: 

Group im Managed Metadata Store hat Contributors und Managers "Everyone" (testweise)

Term Set im Managed Metadata Store hat Owner "Everyone", Stakeholders leer, Submission Policy Open, Intended Use "Available for Tagging" = True

List Column hat Allow Fill-In auf Yes 

Weiß jemand wie ich Werte aus einem Textfeld direkt in ein Term Set bekomme ohne dass der User immer 5 Klicks machen muss? 

 

Alle Antworten

Ohne Rang
64 Beiträge
Philipp Hammer Als Antwort am 29 März 2016 12:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Folgende Wege kann ich mir auch vorstellen: Webservice oder Nintex Workflow allgemein.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 März 2016 13:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was willst Du denn letztlich erreichen? Ein Webservice oder ein Workflow macht Dir ja das Formularhandling auch nicht "schöner"...

Aber wie auch immer: ich würde einen eigenen Webservice vorziehen. Man kann die Terms in 2013 zwar auch über die REST-Schnittstelle (und damit per Workflow) bearbeiten, aber Spaß macht das definitiv nicht. In einem Webservice mit serverseitigem Code ist es zwar immer noch kompliziert, aber trotzdem einfacher.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
64 Beiträge
Philipp Hammer Als Antwort am 29 März 2016 14:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vorab - gerade in diesem Augenblick habe ich die Lösung, poste ich gleich!

Was ich erreichen will:

Ich möchte ein Term Set mit allen Auftragsnummern haben. In der Search Service Application kann ein "Promoted Result Block" eingeblendet werden wenn der Suchbegriff einem Element aus einem Term Set entspricht. Ziel ist es, dass wenn ein User nur eine Auftragsnummer in die Suche eingibt, es oben einen fixen Kasten mit einem Ergebnis gibt der ihm die wichtigsten Infos zum Auftrag gibt. 

Alle Auftragsnummern sind bereits in einer SharePoint Liste verfügbar. Ich werde mit einem Nintex SiteWorkflow 1x am Tag alle neuen Auftragsnummern in das Term Set schreiben lassen. Damit ist alles erledigt.

Wie man Term Sets per Web Service füllt:

Die Dokumentation im MSDN ist mal wieder sehr schlecht (man beachte die "Remarks" unten...). Nutzen kann man zur Steuerung der Term Sets die TaxonomyClientService.asmx mit der Methode AddTerms. Diese lässt sich auch aus Nintex ohne Probleme aufrufen. 

Ein funktionierender Aufruf sieht folgendermaßen aus:


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://schemas.microsoft.com/sharepoint/taxonomy/soap/">
<soap:Header>
</soap:Header>
<soap:Body>
<m:AddTerms>
<m:sharedServiceId>93bc97e053554ca4a193c1729dcb54e1</m:sharedServiceId>    
<m:termSetId>81590596-f706-4e3f-9eee-f381f090a0ad</m:termSetId>
<m:lcid>1031</m:lcid>
<m:newTerms><newTerms><newTerm label="Testeintrag" clientId="1" parentTermId="00000000-0000-0000-0000-000000000000"></newTerm></newTerms></m:newTerms>
</m:AddTerms>
</soap:Body>
</soap:Envelope>

Erläuterung:

sharedServiceId muss die ID des Managed Metadata Services sein
termSetId muss die ID des Term Sets sein
lcid muss die LCID als INT sein -> hier eine Tabelle von Microsoft
newTerms muss ein weiteres Element "newTerms" enthalten. Darin dann das Element newTerm welches im MSDN unter Remarks so ausführlich (IRONIE) wie falsch (NewTerm falsch -> newTerm richtig)  beschrieben wird. Wichtig ist dass die clientId 1 ist und die parentTermId leer wie im Beispiel angegeben wird. 

Wichtig ist noch dass das Term Set "Open" und damit bearbeitbar ist. Wenn es Closed ist hilft es nichtmal dass der Webservice als FarmAdmin aufgerufen wird, es wird nicht zum Eintrag kommen. 

Ich hoffe das erspart anderen die stundenlange Sucherei. 

Falls jemand anders einen guten anderen Ansatz hat, gerne her damit. :-)

Viele Grüße
Philipp 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 März 2016 15:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Philipp Hammer"]Falls jemand anders einen guten anderen Ansatz hat, gerne her damit. :-)[/quote]

Das ist doch ziemlich gut - danke für's posten. Ich bin sicher, daß das andere noch brauchen können. Man weiß dabei nur nicht, wie lange die "alten" Webservices noch unterstützt werden. Aktuell sollte man ja besser die REST-Services benutzen. Wie bereits angemerkt ist es damit aber deutlich aufwendiger.

Und ich weiß gar nicht, was Du hast. Die Doku ist an dieser Stelle für Microsoft-Verhältnisse doch ziemlich umfangreich. Was macht da schon ein kleiner Fehler? Nee, im Ernst: ich verstehe sehr gut was Du meinst. Was habe ich mich schon über tausende von automatisch erzeugten leeren MSDN-Seiten geärgert, auf denen nur steht, daß es eine Methode X gibt, aber kein Wort davon, was sie tut, welche Parameter sie erwartet usw. Und das betrifft beileibe nicht nur SharePoint.

Viele Grüße
Andi
af @ evocom de
Blog