Mostrando entradas con la etiqueta CAML. Mostrar todas las entradas
Mostrando entradas con la etiqueta CAML. Mostrar todas las entradas

sábado, 11 de abril de 2015

CAML para filtrar las tareas pendientes que tengo asignadas o la de mis grupos a los cual pertenezco

Cuando trabajamos con Workflows, podemos asignar tareas a grupos determinados dentro del proceso de aprobación. EL principal problema que tenemos, es que desde la vista web sólo podemos filtrar las tareas asignadas a nosotros ([Yo] o [Me] en inglés). Pero cómo hacemos el filtrado de las tareas asignadas a grupos donde pertenecemos??

image

Se debe usar Sharepoint Designer para editar la consulta CAML

Abran la página donde tienen la vista, y editen con la vista avanzada, la sección de View

image

Busquen “<Query>” y reemplacen la query con lo siguiente.

<Query><Where><And><Or><Eq><FieldRef Name="AssignedTo" LookupId="TRUE"/><Value Type="Integer"><UserID /></Value></Eq><Membership Type="CurrentUserGroups"><FieldRef Name="AssignedTo"/></Membership></Or><Eq><FieldRef Name="Status" /><Value Type='Choice'>No iniciada</Value></Eq></And></Where><OrderBy><FieldRef Name="DueDate"/></OrderBy> </Query>

La query filtra todas las tareas asignadas a mi o a un grupo al cual pertenezco, y están en estado “No Iniciada”.

El principal problema que tiene hacerlo por Designer, primero que hacemos páginas custom, lo cual puede ser un problema en una migración. Y segundo, si voy a editar la vista desde la web no voy a ver estos cambios, y todos los cambios que requiera lo deberé hacer desde el designer (Ej: agregar campos a la view)

image

sábado, 24 de enero de 2015

Simple tip - Cómo filtrar en nuestras querys de CAML el usuario actual que ejecuta la query

Cuando usamos vistas en Sharepoint, se pone [Me] ([Yo] en español), pero si queremos filtrar algún campo User con el usuario logueado, lo debemos hacer diferente.

image

La query en CAML es (presten atención en lo marcado):

 <Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID Type='Integer'/></Value></Eq> 

jueves, 24 de mayo de 2012

Tips /Info # 26 Sharepoint 2010

1-Ocultar la opción “Download a copy” de la ribbon

<style>
A[id$='Ribbon.Documents.Copies.Download-Large'] {
    DISPLAY: none
}</style>

2-Cambiar la URL de un site collection

Sharepoint 2010 no dispone de un mecanismo para cambiar la url de un site collection. Lo que se debe hacer es hace run backup y restore del site collection

Backup-SPSite -Identity http://sharepoint/sitios/originalsite -Path c:/backupsite
Remove-SPSite -Identity http://sharepoint/sitios/originalsite
Restore-SPSite -Identity http://sharepoint/sitios/nuevossite -Path c:/backupsite

3-Query: cantidad de items agrupados por lista

select webs.Title,webs.FullUrl, tp_Title,UserDataCount,DocsCount
from AllLists left outer join
(select tp_ListId, COUNT(*) as UserDataCount from AllUserData
group by tp_ListId ) E On E.tp_ListId = AllLists.tp_ID
left outer join
(select ListId, COUNT(*) as DocsCount from dbo.Docs
group by ListId ) P ON AllLists.tp_ID = P.ListId
left outer join Webs ON AllLists.tp_WebId = Webs.id
order by DocsCount desc



UserDataCount : cantidad de registros almacenadps en la tabla AllUserData para la lista. (item borrados no se incluyen)
DocsCount : cantidad de registros almacenadps en la tabla AllDocs para la lista

(item borrados no se incluyen)

4-Error 404 al atachar (Attach) una base de contenidos


Suele pasar el problema cuando removes la base de contenido desde la UI del Central Administration, desde ese momento no podrás atachar más base de contenidos desde la UI. Se puede realizar mediante powershell:


Detach content database:

Dismount-SPContentDatabase “nombre de la base de contenido”

Attach content database:

Mount-SPContentDatabase “nombre de la base de contenido” -DatabaseServer “nombre o alias del sql server” -WebApplication http://webapplicationURL

5-Setear el outgoing mail para un Web Application mediante powershell

Set-SPWebApplication -Identity http://webapplicationURL -OutgoingEmailAddress mail@email.com –SMTPServer smtp.server.com

6-Columna lookup en CAML Javascript Client Object Model

Prestar atención el atributo LookupId
var list = web.get_lists().getById('<Projects List GUID>');
var query = '<View Scope=\'RecursiveAll\'>'+
'<Query>'+
'<Where>'+
'<Eq>'+
'<FieldRef Name=\'Cliente\' LookupId=\'TRUE\'/>' +
'<Value Type=\'Lookup\'>' + chosenoption.value +'</Value>'+
'</Eq>'+
'</Where>'+
'</Query>'+
'</View>';
7-Error “Unable to process the request” al usar Excel Services
Este error se debe a un error de comunicación con el servicio de excel, haga un iisreset.

8-Verificar si una lista existe o no mediante Server Object


SPList myList = SPContext.Current.Web.Lists.TryGetList(“ListaAVerificar”);
if(myList!=null)
{
    // existe lista
}

9-Error: “The Maximum number of webparts for all zones on this page has been exceeded“

Por default, el límite máximo de web parts por páginas aspx es de 50.


Si desea elmininar un web part podrá hacerlo mediante el querystring contents=1,nos ofrecerá la página de mantenimiento.


10-Error “Cannot find property named PROPERTYNAME on activity type ACTIVITYNAME” al diseñar una actividad de workflow custom


Cierre Sharepoint Designer y borre el contenido de las siguientes carpetas:


C:\Users\<username>\AppData\Local\Microsoft\WebsiteCache


C:\Users\<username>\AppData\Roaming\Microsoft\SharePoint Designer

sábado, 12 de mayo de 2012

Links útiles #20–Sharepoint 2010

1-Error: Load control template file /_controltemplates/TaxonomyPicker.ascx failed: Could not load type 'Microsoft.SharePoint.Portal.WebControls.TaxonomyPicker' from assembly…

http://blogs.objectsharp.com/blogs/max/archive/2011/02/07/load-control-template-file-controltemplates-taxonomypicker-ascx-failed.aspx

2-CAML para unir dos listas

http://edanan.wordpress.com/2012/04/28/sample-caml-joins-for-more-than-2-lists/

3-Agregar imagenes en el perfil de Sharepoint del usuario

http://thesharepointproject.com/2012/04/30/user-images-ad-exchange-sharepoint-complete-guide/

4-Ghosting and unghosting en Sharepoint 2010

http://blogs.msdn.com/b/steve_fox/archive/2010/03/08/ghosting-unghosting-in-sharepoint-2010.aspx

5-Mejoras de SQL Server 2012 para Sharepoint 2010

http://www.c-sharpcorner.com/UploadFile/specialhost/top-enhancement-sql-2012-for-sharepoint/

6-Compresión de IIS

https://www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-Compression-in-IIS.aspx

7-Ventajas y desventajas de client object

https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/SharePoint-Advantages-and-Disadvantages-of-the-Client-Object-Model.aspx

8-Ordenar las propiedades del perfil

http://littletalk.wordpress.com/2012/05/10/manage-order-of-user-profile-properties/

9-Mostrar contenido en Tabs

https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/Using-SPServices-jQuery-to-Build-a-Slick-Content-Editor-Web-Part-with-Multiple-Tabs-in-SharePoint.aspx

10-Combinar dos listas en una sola vista

https://www.nothingbutsharepoint.com/sites/eusp/Pages/How-to-Link-Two-Lists-and-Create-a-Combined-View-in-SharePoint-2010.aspx

11-Deployando soluciones mediante el planificador de tareas

http://www.thesharepointblog.net/Lists/Posts/Post.aspx?List=815f255a-d0ef-4258-be2a-28487dc9975c&ID=116

12-Autentificación via formularios en Sharepoint 2010

http://www.codeproject.com/Tips/382312/SharePoint-2010-Form-Based-Authentication

13-Limitaciones con las soluciones de Sharepoint 2010

http://www.manageprojectsonsharepoint.com/archive/2011/02/23/sharepoint-2010-%E2%80%93-limitations-to-the-solution-approach.aspx

14-Obteniendo credenciales del servicio Secure Store Service

http://www.anmolrehan-sharepointconsultant.com/2012/05/retrieving-credentials-from-secure.html

sábado, 5 de mayo de 2012

Tips/Info #18 Sharepoint 2010

1-Error: Unexpected error on server associating the workflow

Este problema podría ser causado por la gran cantidad de tipos que se crean durante la compilación del flujo de trabajo,para flujos de trabajo con muchas variables de flujo de trabajo locales. Es más común con los flujos de trabajo con múltiples acciones de procesos de aprobación, ya que cada acción deProceso de Aprobación preconfigurado viene con un gran conjunto de variables locales.

Puede ejecutar la siguiente consulta:

$app = get-spwebapplication “[web app url]“
$app.UserDefinedWorkflowMaximumComplexity = 30000
$app.Update()

Después de ejecutar estos comandos, deberá realizar un iisreset y trate de publicar de nuevo el workflow. La configuración default es de 7000.

Más info: http://support.microsoft.com/kb/2557533

2-CAML: filtrar una lista por membership

<View>
<Query>
<Where>
<Membership Type=”CurrentUserGroups”>
          <FieldRef Name=”AssignedTo”/>
</Membership>
</Where>
</Query>
</View>

3-Ocultar “Todo el contenido del sitio” y “Papelera de reciclaje” en la quick launch.

Dos posibilidades (ambas se realizan sobre la master page default que estén trabajando):

A-

<Sharepoint:SPSecurityTrimmedControl runat=”server” Permissions=”ManagePermissions”>

<SharePoint:ClusteredSPLinkButton runat=”server” NavigateUrl=”~site/_layouts/recyclebin.aspx” ImageClass=”s4-specialNavIcon” ImageUrl=”/_layouts/images/fgimg.png” …  />

</SharePoint:SPSecurityTrimmedControl>

El valor del atributo ManagePermissions puede ser cambiado dependiendo del requerimiento

B-

<SharePoint:ClusteredSPLinkButton

runat=”server”

NavigateUrl=”~site/_layouts/recyclebin.aspx”

ImageClass=”s4-specialNavIcon”

ImageUrl=”/_layouts/images/fgimg.png” ..  Visible=”false“/>

4-Cambiar el idioma de un site (PRECAUCIÓN CON ESTO)

UPDATE dbo.AllWebs SET Language = 1034 WHERE Id = [[WebId]]

Debe estar instalado el package de idioma 1034 (español).

Hace un backup de la base de datos previo cambio.

5-Ocultar la ribbon con seguridad

<SharePoint:SPSecurityTrimmedControl PermissionsString="ManagePermissions" runat="server">

   <div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle">

   </div>

</SharePoint:SPSecurityTrimmedControl>

El valor del atributo ManagePermissions puede ser cambiado dependiendo del requerimiento

6-Databases running in compatibility range, upgrade recommended

El mensaje indica que se debe hacer una actualización de Sharepoint, para ello (PREVIO BACKUP DE LA GRANJA DE FORMA COMPLETA) se deberá ejecutar el siguiente script de powershell:

PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

y a continuación reiniciar el servidor.

Una vez reiniciado, revise el log para asegurarse que no hubo inconvenientes.

7-Error: “Value does not fall within the expected range” exception in SPFieldMap.GetColumnNumber

Este error se debe a que se llegó al límite de consultas de columnas lookup, o columnas de personas/grupos o a columnas de estado de workflows. Para ello deberá aumentar la propiedad List View Lookup Threshold del web application actual (Central Administration/Application Managment/Manage Web Applications/Seleccionar web application deseado)

ResourceThrottling

8-Codificar/Decodificar urls de Sharepoint

http://meyerweb.com/eric/tools/dencoder/

9-Cómo almacena Sharepoint las fechas?

Sharepoint almacena las fechas en formato UTC. Al traer las fechas desde la base de datos las convierte al time zone del user actual. Para convertir la fecha en el formato del time zone actual del user, lo hace mediante la función fn_LocalDayFromUTCDate.

10-Cuidado al guardar una lista como template que tiene un campo lookup, y utilizarla en otro site diferente.

Al querer usar el template, nos lanzará una excepción, ya que el GUID de la lista lookup que indica el template no está en el site actual. Lo que puedes hacer es renombrar el archivo de template (.stp) a .cab y extraer el archivo de manifiesto, y editar el GUID (podrás obtener el GUID desde la url entrando a List Settings), y volver a guardarlo como .stp o usarlo con Visual studio.

11-Cambiar el nombre de un web application

$NombreViejo =Get-SPWebApplication | where {$_.Name -match "<NombreViejo>"}
$NombreViejo.Name="<NuevoNombreWebApplication>"
$NombreViejo.Update()
Después deberás editar los access mappings (Central Administration/System Settings/Configure alternate access mappings)
12-Error: “The install progress conflicts with a previously installed Microsoft Office 2010 Server product” SharePoint 2010

Deberás borrar la clave de registro donde indica que está instalado Microsoft Office Web Apps. Realizar un search con “Microsoft Office Web Apps”
HKEY_CLASSES_ROOT\Installer\Products 
11-La opción de “New Document” está grisada



    • Verificar permisos para el usuario (Contribute)

    • Habilitar “Client Intergration” en la configuración de la web application

    • Deshabilitar “User Access Control” UAC

    • Ir a Library > Library settings > Advanced settings  > Allow management of content types setear a TRUE

12-Dar permisos para todos los usuarios autentificados



Usar el siguiente usuario:NT AUTHORITY\authenticated users


13-Cancelar un deployment en progreso



stsadm -o enumdeployments


Obtengo el ID del job que deseo cancelar


stsadm -o canceldeployment -id “el id del job”

Después podrás verificar en el Central Administration que dirá que la solución no está deployada (“not deployed”)


14-Habilitar el log de auditoria de SharePoint 2010 sobre una site collection


STSADM.EXE -o activatefeature -name Reporting –url http://url_colleccionsitio/ –force


15-Limpiar el log de la auditoria


$sitio = Get-SPSite -Identity http://sitecollection
$fecha = Get-Date
$fecha = $date.AddMilliseconds(1)
$sitio.Audit.TrimAuditLog($date)


16- Execadmsvcjobs


stsadm -o execadmsvcjobs

Este comando permite ejecutar todos los trabajos administrativos del temporizador inmediatamente en lugar de esperar a que se ejecute el trabajo del temporizador.


17-Acceso denegado a un administrador de site collection


Al ingresar a un site y el usuario actual le da acceso denegado, pero tiene un rol de site collection administrator, posiblemente el site collection esté bloqueado (Central Administration, Application Management->SharePoint Site Management->Site collection quotas and locks)


18-Saber la versión de Sharepoint de un Sharepoint público


Ingresar a: _vti_pvt/buildversion.cnf

Ej: http://sharepoint.microsoft.com/_vti_pvt/buildversion.cnf


19-Donde guarda Sharepoint el connection string de la base de datos de configuración?


Hay dos keys: DSN (Connection string para la configuration database) y Id (GUID de SharePoint configuration database)

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Secure\ConfigDb



También es posible verlo desde el IIS

image001

sábado, 24 de marzo de 2012

CAML Queries

Query Syntax:

1. Joins lógicos:

a.        And: Ej. <And><expression1><expression2></And>

b.      OR: Ej.<OR><expression1><expression2></OR>

2. Operador de comparación

a.       BeginsWith:  busca por un string al inicio de una columna.

<BeginsWith><FieldRef Name = “ColumnName”/><Value Type = “Value”/><XML /></BeginsWith>

b.      Contains: busca por un string en cualquier parte de una columna.

<Contains><FieldRef Name = “ColumnName”/><Value Type = “Value”/><XML /></Contains>

c.       Neq: Operador aritmético que significa “no igual a”

<Neq>  <FieldRef Name = “Field_Name”/>  <Value Type = “Field_Type”/>  <XML /> </Neq>

d.      Eq: Operador aritmético que significa “igual a”

<Eq> <FieldRef Name = “Field_Name”/>  <Value Type = “Field_Type”/>  <XML /></Eq>

e.      In: Especifica un item de lista especificado por el campo FieldRef es igual a un conjunto de valores

<In><FieldRef Name = “Field_Name”/><Values><Value Type = “Field_Type”/></Values><XML /></In>

f.        Gt: Operador aritmético que significa “más grande que”

<Gt><FieldRef Name = “Field_Name”/><Value Type = “Field_Type”/><XML /></Gt>

g.       IsNotNull: Retorna ítems que no tienen valores nulos

<IsNotNull><FieldRef Name = “Field_Name”/><Value Type = “Field_Type”/><XML /></IsNotNull>

h.      IsNull: Retorna ítems que tienen valores nulos o vacíos

<IsNull><FieldRef Name = “Field_Name”/><Value Type = “Field_Type”/><XML /></IsNull>

i.         Includes:Si el campo especificado es un campo de lookup que permite varios valores, se especifica que elemento de valor está incluido en el elemento de la lista para el campo especificado por el elemento FieldRef.

<Includes><FieldRef    Name = “Field_Name”/><Value    Type = “Field_Type”/><XML /></Includes>

j.        Lt : Operador aritmético que significa “más chico que”

<Lt><FieldRef Name = “Field_Name”/><Value Type = “Field_Type”/><XML /></Lt>

k.       NotIncludes: Si el campo especificado es un campo de lookup que permite varios valores, se especifica que elemento de valor está EXCLUIDO en el elemento de la lista para el campo especificado por el elemento FieldRef.

<NotIncludes><FieldRef    Name = “Field_Name”/><Value    Type = “Field_Type”/><XML /></NotIncludes>

3. Group Operators

a.       GroupBy: permite agrupar la info devuelta

<GroupBy  Collapse = “TRUE” | “FALSE”><FieldRef Name = “Field_Name”/></GroupBy>

b. OrderBy: determina el orden de la consulta  

<OrderBy  Override = “TRUE” | “FALSE”  UseIndexForOrderBy = “TRUE” | “FALSE”>

<FieldRef     Ascending = “TRUE” | “FALSE”    Name = “Text” />

</OrderBy>

4. Value Elements

a. Month: Se utiliza en el elemento DateRangesOverlap para recuperara partir de un calendario de todas las instancias de un evento recurrente que se producen dentro de un mes.

<DateRangesOverlap>  <FieldRef Name= “EventDate” />  <FieldRef Name= “EndDate” />  <FieldRef Name= “RecurrenceID” />  <Value Type=\”DateTime\”>    <Month />  </Value></DateRangesOverlap>

b. Now: Devuelve la fecha y hora actuales.

<Now></Now>

c. Today: Presenta la fecha actual en el formato que sea relativa a la zona del servidor, hora local. Para los servidores en los Estados Unidos, el formato es DD / MM / AAAA (por ejemplo,01/21/2001).

<Today  Offset = “Integer”></Today>

d. UserId: Contiene el número único de identificación del usuario autenticado actualmente de un sitio, tal como se define en la tabla UserInfo de la base de datos de contenido.

<UserID></UserID>

sábado, 4 de febrero de 2012

CAML and the Client Object Model

Working with the .NET Client Object Model

Before you can start working with the .NET Client Object Model, you have to add a reference to the assemblies Microsoft.SharePoint.Client.dll and Microsoft.SharePoint.Client.Runtime.dll. You can find these assemblies in the 14\ISAPI folder.

 

The Where clause

The Where clause can range from very simple to very complex with one or more nested <And> or <Or> elements. The CAML for the Where clause has not been changed since SharePoint 2003, and can be used with the SharePoint Server Object Model and with the three Client Object Models. Also the Web Services are still there, for which you can also use CAML to retrieve and/or update list items.

To retrieve list items from a SharePoint list, you have to define an instance of type CamlQuery, defined within the Microsoft.SharePoint.Client.CamlQuery namespace. You can specify your CAML query within the ViewXml property. This property is of type string but its content must be XML. The root element for this property is <View>. The Where clause needs to be embedded within a <Query> element.

Microsoft.SharePoint.Client.CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery();
query.ViewXml = "<View>"    + "<Query>"    + "<Where><Eq><FieldRef Name='Country' /><Value Type='Text'>Belgium</Value></Eq></Where>"    + "</Query>"    + "</View>";
// execute the query
ListItemCollection listItems = spList.GetItems(query);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
http://msdn.microsoft.com/en-us/library/ms414805.aspx


domingo, 15 de enero de 2012

SharePoint 2010 Base Types, List Template y Definition IDs, y Content Types IDs

A menudo necesitamos lista de los identificadores de los tipos base más comunes (Base Types), definiciones de lista y tipos de contenido. Especialmente útil si usted está escribiendo definiciones CAML de listas, o tipos de contenido. Aquí están las listas que he recogido de MSDN:

Base Types

Estos Base Types vienen del tipo enumerado SPBaseType

image

domingo, 8 de enero de 2012

Servicio online para convertir SharePoint CAML Queries a C#

 

Impulsado por su proyecto de CodePlex - Camlex.NET(http://camlex.codeplex.com), Alexey Sadomov y Timashkov Vladimir ha lanzado un servicio online gratuito para convertir sus cadenas de consulta CAML en código C #.Todo lo que tienes que hacer es escribir CAML y te convierte a  expresiones lambda  de C#:

Ejemplo, escribiendo esta consulta CAML:

<Query>
<Where>
<And>
<Eq>
<FieldRef Name="ID" />
<Value Type="Integer">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">Hello world</Value>
</Eq>
</And>
</Where>
</Query>


Usted recibe este código:

Camlex.Query().Where(x => (int)x["ID"] == 1 && (string)x["Title"] == "Hello world")


El enlace con el servicio gratuito es: http://camlex-online.org/
Mi herramienta favorita para generar la consulta CAML en sí sigue siendo el Generador de consultas CAML de U2Uque puede ser utilizado tanto en SharePoint 2007 y 2010:http://www.u2u.net/Tools/wincamlquerybuilder/CamlQueryBuilder.