Das verwaltete Metadatenfeld von SharePoint 2010 kann nicht mit dem Listup.UpdateListItems-Webdienstaufruf aktualisiert werden

8

Ich versuche, ein mit SharePoint verwaltetes Metadatenfeld (MMD) mithilfe des Lists.UpdateListItems-Webdiensts zu aktualisieren, aber es funktioniert nicht.

Hier ist meine SOAP-Anfrage

%Vor%

Diese Anforderung aktualisiert erfolgreich den "Dokumenttitel" (ein Textfeld), aber das MMD-Feld "Geschäftsjahr" war unverändert und es wurde kein Fehler vom Webdienst zurückgegeben.

Beachten Sie, dass der Wert der MMD im Format "WssId; #TermValue | TermGuid" ist und der Begriff für die Site bereits erstellt wurde.

Bitte helfen Sie.

    
duvo 09.07.2012, 17:18
quelle

2 Antworten

9
___ tag123sharepoint2010 ___ SharePoint-spezifische Fragen finden Sie auf der SharePoint Stack Exchange-Website unter http://sharepoint.stackexchange.com/ ___ qstnhdr ___ Das verwaltete Metadatenfeld von SharePoint 2010 kann nicht mit dem Listup.UpdateListItems-Webdienstaufruf aktualisiert werden ___ answer20550500 ___

Danke, dass du das Bit über StaticName erwähnt hast. Das beendete mein Leiden.

Es scheint, dass für einfache Felder, die nicht mit MMS verknüpft sind, wie Titel, eine faule Aktualisierungssyntax erlaubt ist. Zum Beispiel wird das folgende Update ohne Fehler ausgeführt.

%Vor%

Die Regeln sind jedoch für Felder, die mit MMS verknüpft sind, nicht identisch.
Nach dem obigen Ansatz bin ich in meine MMS-Felder eingezogen. Dieser Feldtyp kann mit beliebigen Werten aktualisiert werden, wenn Sie ihn anhand seines Anzeigenamens identifizieren und eine ganze Zahl eingeben, z. B .:

%Vor%

Die "20" bedeutet nur einen Begriff.
Ich habe viele Nummern ausprobiert und sie alle kamen als gleiche Bezeichnung zurück.

Alternativ, wenn ich näher an die dokumentierte Art der Aktualisierung des Werts herankomme, während das Feld immer noch mit "Aktivität" gekennzeichnet ist, gibt der Dienst einen Fehler 0x80020005 zurück.

%Vor%

Also tu das nicht.
Nur wenn die Monde vollständig ausgerichtet sind, finde ich Erfolg. Der StaticName ist der Schlüssel .

%Vor%

Eine andere Möglichkeit, den StaticName zu finden, besteht darin, in der Antwort auf eine GetList-Anforderung nach dem Feld Type="Note" für jedes MMS-Feld zu suchen. Diese Operation benötigt 1 weniger Eingabe als GetListContentType. Sie benötigen nur den Listennamen und keine contentTypeID.

Rock on.

    
___ qstntxt ___

Ich versuche, ein mit SharePoint verwaltetes Metadatenfeld (MMD) mithilfe des Lists.UpdateListItems-Webdiensts zu aktualisieren, aber es funktioniert nicht.

Hier ist meine SOAP-Anfrage

%Vor%

Diese Anforderung aktualisiert erfolgreich den "Dokumenttitel" (ein Textfeld), aber das MMD-Feld "Geschäftsjahr" war unverändert und es wurde kein Fehler vom Webdienst zurückgegeben.

Beachten Sie, dass der Wert der MMD im Format "WssId; #TermValue | TermGuid" ist und der Begriff für die Site bereits erstellt wurde.

Bitte helfen Sie.

    
___ answer 11434368 ___

Ich habe es herausgefunden.

Ich muss einen anderen Feldnamen verwenden. Die Bezeichnung für das Feld ist "Geschäftsjahr", aber der Feldname, der funktionierte, ist tatsächlich "d3c0ddc947ab4b8c90b6a0fe2d4caf09" anstelle von "Fiscal_x0020_Year1". Also meine SOAP Anfrage würde aussehen wie

%Vor%

Um diesen Feldnamen zu erhalten, verwende ich die Lists.GetListContentType-Webservice-Methode, um Feldinformationen zurückzugeben und nach Feldtyp "Note" zu suchen. Hier ist ein Beispiel dafür, was SharePoint zurückgegeben hat

%Vor%

Ich finde es auch nützlich, die Lists.GetListContentTypes-Methode zu verwenden, um die ID des Inhaltstyps im Lists.GetListContentType-Methodenaufruf zu erhalten.

---- Aktualisieren - Ich habe festgestellt, dass Sie nicht das Format "WssId; #TermValue | TermGuid" verwenden müssen. Sie können einfach "TermValue | TermGuid" verwenden. Im obigen Beispiel wäre der Wert "GJ 2006 | 7e8205da-57a1-45a3-8147-469b795ad6e8".

Dies ist sehr nützlich, da Sie den gleichen Wert für verschiedene Sites wiederverwenden können, im Gegensatz zum vorherigen Wert, wo Sie ihn nur an einer Site verwenden können. Für mehrere Werte müssen Sie nur mit einem ";" Anstatt von ";#". Zum Beispiel "GJ 2006 | 7e8205da-57a1-45a3-8147-469b795ad6e8; GJ 2007 | 823205da-57a1-45a3-8147-469b795ade13".

    
___
duvo 11.07.2012, 14:01
quelle
0

Danke, dass du das Bit über StaticName erwähnt hast. Das beendete mein Leiden.

Es scheint, dass für einfache Felder, die nicht mit MMS verknüpft sind, wie Titel, eine faule Aktualisierungssyntax erlaubt ist. Zum Beispiel wird das folgende Update ohne Fehler ausgeführt.

%Vor%

Die Regeln sind jedoch für Felder, die mit MMS verknüpft sind, nicht identisch.
Nach dem obigen Ansatz bin ich in meine MMS-Felder eingezogen. Dieser Feldtyp kann mit beliebigen Werten aktualisiert werden, wenn Sie ihn anhand seines Anzeigenamens identifizieren und eine ganze Zahl eingeben, z. B .:

%Vor%

Die "20" bedeutet nur einen Begriff.
Ich habe viele Nummern ausprobiert und sie alle kamen als gleiche Bezeichnung zurück.

Alternativ, wenn ich näher an die dokumentierte Art der Aktualisierung des Werts herankomme, während das Feld immer noch mit "Aktivität" gekennzeichnet ist, gibt der Dienst einen Fehler 0x80020005 zurück.

%Vor%

Also tu das nicht.
Nur wenn die Monde vollständig ausgerichtet sind, finde ich Erfolg. Der StaticName ist der Schlüssel .

%Vor%

Eine andere Möglichkeit, den StaticName zu finden, besteht darin, in der Antwort auf eine GetList-Anforderung nach dem Feld Type="Note" für jedes MMS-Feld zu suchen. Diese Operation benötigt 1 weniger Eingabe als GetListContentType. Sie benötigen nur den Listennamen und keine contentTypeID.

Rock on.

    
catBus 12.12.2013 17:44
quelle

Tags und Links