Domanda

Come un amministratore del sito devo elencare tutti controllati dal file nella raccolta siti. Guardando il DB è appare come il campo tp_CheckoutUserId in AllUserData potrebbe essere una chiave per questa query.

E 'possibile ottenere queste informazioni attraverso i servizi web o dovrò usare il modello a oggetti?

Aggiornamento: Sembra che il cliente vorrebbe essere in grado di elencare solo quei file che sono stati ritirati (non è necessario modificato) da un utente specifico. A meno che la query richiede alcuni minuti dovrebbe essere una query in tempo reale, ma la raccolta siti costituiti da +10 000 web con 3 raccolte documenti su ogni web in modo prestazioni potrebbe essere un problema.

È stato utile?

Soluzione

A seconda di ciò che si sta cercando di fare ci sono un paio di approcci a questo:

- Utilizzare la Gestione contenuto e la struttura Rapporti come per http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/14/content-and-structure-reports-just-a-caml-ride- away.aspx ma questo è piuttosto limitata in quanto non consente di specificare che ha estratto il documento e in quale sito.

- utilizzare il modello oggetto - questo ti dà una maggiore flessibilità, ma richiede il codice essere in esecuzione sul server SharePoint. Per fare questo è possibile utilizzare una query come la seguente:

using (SPWeb web = new SPSite("http://intranet/").OpenWeb())
{
    SPSiteDataQuery q = new SPSiteDataQuery();
    q.Lists = "<Lists BaseType='1'/>";
    q.Query = "<Where><Geq><FieldRef Name='CheckoutUser' LookupId='TRUE'/><Value Type='int'>0</Value></Geq></Where>";
    q.Webs = "<Webs Scope='SiteCollection' />";
    q.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='ID' />";
    q.RowLimit = 10;
}

- Utilizzare i servizi web per consentire di eseguire il codice in modalità remota. Questo probabilmente richiede uno sforzo maggiore, ma dovrebbe essere realizzabile utilizzando il servizio Web Query finché si espone il campo CheckoutUser come una proprietà gestita nelle impostazioni di ricerca per il provider di servizi condivisi.

Altri suggerimenti

Un modo si potrebbe fare, ma non sono sicuro di come ben consigliato sarebbe, è quello di utilizzare il modello a oggetti per ricorsivamente iterare sopra la raccolta siti e raccolte documenti di raccogliere un elenco di tutti i documenti che sono stati estratti.

Il motivo della mia sicuri di come ben consigliato questo approccio sarebbe è che sarebbe molto inefficiente e lento credo che, a seconda della vostra pratica codice. Per un one-off strumento per eseguire ogni tanto potrebbe funzionare bene però.

ho capito una query (per SP2007). Si noti che Microsoft non consente l'esecuzione di query, in modo da utilizzare a proprio rischio. Questa non è una risposta alla domanda, ma credo che vale la pena condividere. Speranza che aiuta gli altri. La query recupera alcuni dati dal database di configurazione. Potrebbe essere necessario modificare il nome del database nel caso in cui si differenzia in voi ambiente.

SELECT [AllUserData].[tp_ID]
  ,SharePoint_Config.dbo.SiteMap.Path + [AllUserData].tp_DirName + '/' + [AllUserData].tp_LeafName as url
  ,UserInfo.tp_Login
FROM [AllUserData] INNER JOIN UserInfo ON AllUserData.tp_CheckoutUserId = UserInfo.tp_ID AND AllUserData.tp_SiteId = UserInfo.tp_SiteID INNER JOIN SharePoint_Config.dbo.SiteMap ON AllUserData.tp_SiteId = SharePoint_Config.dbo.SiteMap.Id
WHERE [AllUserData].tp_IsCurrent = 1 AND [AllUserData].tp_CheckoutUserId is not null
ORDER BY url

@James Amore: abbiamo implementato uno strumento che utilizza l'oggetto Sharepoit client modello per la generazione di report Excel di tutto verificato i file all'interno di un sito (incl siti secondari e le loro biblioteche.). Funziona bene. Stiamo utilizzando CAML per i nostri quries, in modo da avere una sola domanda per ogni libreria.

Si può provare: http: // DMS -shuttle.com/documentation/export-list-checked-out-files-sharepoint/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top