SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

lunes, 18 de marzo de 2013

Workflow en Project Server 2010 ¿Cómo crear información de maestro detalle en una PDP? Enfoque 2

Las PDPs nos permiten capturar información que se almacenan en campos personalizados de Project Server. Sin embargo, un requerimiento muy común es que se necesiten cargar datos repetitivos asociados a un proyecto, como por ejemplo:

  • Productos afectados
  • Lista de stakeholders
  • Documentos
  • Etc…
En un artículo previo, explicamos como generar información de tipo maestro-detalle en Project Server utilizando InfoPath. Este enfoque funciona bien, exceptuando en los ambientes en donde el separador entre el apellido y el nombre del usuario es un ";". En esto caso, se produce un error al editar el formulario en InfoPath. Para resolverlo hay que utilizar otro separador, lo cual puede ser complicado en entornos que utilicen sincronización con AD.

Es por ello que estuve trabajando en una alternativa que no utilize InfoPath. Descarté también el uso de Client Object Model para armar una pantalla de alta, principalmente porque me obligaría a cambiar ese desarrollo cada vez que se haga un cambio en las columnas de las litas

El enfoque propuesto
  • Usar las pantallas estándar de SharePoint.
  • Alta
    • Crear un link para llamar a la pantalla de alta en forma modal
    • Pasarle como parámetro el ID del proyecto
    • Completar el campo de ID con el dato recibido en la URL
    • Ocultar el campo
    • Refrescar la pantalla en caso de alta
  • Modificación / Baja
    • Usar la pantalla de Display para arrancar estas operaciones. Porque si se arranca del Edit, al eliminar el registro, no se vuelve a la PDP original
    • Código para ocultar la clave del maestro
  • Código
    • Formado por cuatro CEWP, una para la PDP y las otras tres para las pantallas dispForm, EditForm y NewForm
A continuación, trasncribo el código utilizado:

El código para la PDP

<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>

<script type="text/javascript">

 $("td:contains('There are no items to show in this view of the'):last").empty();

 function Callback (result, target) {
     if (result == SP.UI.DialogResult.OK) {
         window.location.reload();
     }

 }

 function AbrirVentanaModal( pUrl ) {  
   SP.UI.ModalDialog.showModalDialog(   
     {  
       url: pUrl,
       //width: 700,  
       //height: 600,
       dialogReturnValueCallback: Callback  
       //title: pTitulo  
     }  
   );  
 }

 function url_param ( name ){  
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
  var regexS = "[\\?&]"+name+"=([^&#]*)"; 
  var regex = new RegExp( regexS ); 
  var results = regex.exec( window.location.href ); 
  if( results == null ) 
    return "";
   else 
    return results[1];
 }

</script>

 <table><tr><td class="ms-addnew" style="padding-bottom: 3px"><span style="height:10px;width:10px;position:relative;display:inline-block;overflow:hidden;" class="s4-clust"><img src="/_layouts/images/fgimg.png" alt="" style="left:-0px !important;top:-128px !important;position:absolute;" /></span>&nbsp;<a class="ms-addnew" id="NewFinancialData" href="javascript: var PU=url_param('projuid'); AbrirVentanaModal('/PWA/Lists/Financial%20Data/NewForm.aspx?ProjUid='+PU)" target="_self">Add financial data</a></td></tr><tr><td><img src="/_layouts/images/blank.gif" width="1" height="5" alt="" /></td></tr></table>

El código para NewForm.aspx


<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>

<script type="text/javascript">

 // Esto lo hago porque el Editar estándar desde la PDP vuelve a cualquier lado luego de eliminar, incluso cambiando el source
 $('input[title="Title"]').attr("value","Edit");
 $('input[title="Title"]').parent().parent().parent().css("display","none");
 
// Cargo el dato de clave del Maestro
 PU = url_param ('ProjUid');
 $('input[title="ProjUID"]').attr("value",PU);
 $('input[title="ProjUID"]').parent().parent().parent().css("display","none");

 function url_param ( name ){  
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
  var regexS = "[\\?&]"+name+"=([^&#]*)"; 
  var regex = new RegExp( regexS ); 
  var results = regex.exec( window.location.href ); 
  if( results == null ) 
    return "";
   else 
    return results[1];
 }

</script>

El código para EditForm.aspx
<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>

<script type="text/javascript">

 $('input[title="Title"]').parent().parent().parent().css("display","none");
 $('input[title="ProjUID"]').parent().parent().parent().css("display","none");

</script>

El código para DispForm.aspx

<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>

<script type="text/javascript">

 $('a[name="SPBookmark_Title"]').parent().parent().parent().css("display","none");
 $('a[name="SPBookmark_ProjUID"]').parent().parent().parent().css("display","none");

</script>

Enlaces relacionados



Hasta la próxima!

jueves, 14 de marzo de 2013

REST en SharePoint

Si quieren aprender algo de REST en SharePoint, les recomiendo que vean el artículo de Mario C. Flores:
SharePoint: Consumir servicio REST

miércoles, 13 de marzo de 2013

¿Project Server 2013 online?

Si está interesado en conocer las diferencias entre Project Server online y el clásico, comienza por leer este artículo:

PROJECT SERVER 2013. COMPARACION ENTRE PROJECT SERVER 2013 Y PROJECT ONLINE.

miércoles, 6 de marzo de 2013

¿Cómo no perder el formato de una vista de Project Pro al publicarlo en Project Server?

¿Cómo no perder el formato de una vista de Project Pro al publicarlo en Project Server?

Estos son los pasos

1. Crear un proyecto desde Project Pro
2. Crear un vista con los siguientes datos
- Nombre: Prueba
- Pantalla: Diagrama de Gantt
- Tabla: Entrada de empresa
- Grupo: sin agrupar
- Filtro: Todas las tareas
- Resaltar filtro (no)
- Mostrar en el menú (Si)
3. Dar formato a la vista
4. Grabar el proyecto
5. Publicar el proyecto
6. Cerrar Project Pro
7. Abrir Project Pro
8. Seleccionar la vista personalizada que habíamos creado en el paso 2
9. Al abrirlo, aparecerán los formatos de estilos

Espero les resulte útil!

jueves, 28 de febrero de 2013

¿Cómo habilitar el log de Project Pro?

Les dejo este enlace que explica cómo habilitar el log de Project Pro en un puesto de trabajo:

PROJECT PROFESSIONAL. COMO HABILITAR EL REGISTRO DE LOGS PARA EL CLIENTE PROJECT.

¿Cómo volver a activar las advertencias de Microsoft Project?

Microsoft Project muchas veces nos brinda mensajes de advertencia cuando estamos haciendo cambios en nuestro plan. Estos mensajes no aparecen más si específicamente le indicamos que no queremos volver a verlos. Pero ¿cómo podemos hacer para volver a verlos? De la siguiente forma:
  1. Ir a Opciones
  2. General
  3. Y cambiar las opciones de Asistente para Planeamiento
  4. En particular nos puede ser útil "consejos sobre programación"
En la siguiente imagen se ven las opciones:



Hasta la próxima!

lunes, 25 de febrero de 2013

Workflow en Project Server 2010 - Problemas con Submit desde PDPs que non poseen campos de empresa

Cuando presionamos el botón SUBMIT desde algunas PDPs, nos encontramos con el problema de que la página se queda aparentemente esperando un "check in" en forma indefinida.

Por lo que pude observar, esto se da en las páginas que no poseen campos de empresa y que poseen elementos web de lista como la que explicamos anteriormente en este artículo.

La solución en estos casos, aunque poco ortodoxa es:

  1. Agregar un elemento web de "Project Fields"
  2. Insertar al menos un campo, por ejemplo el nombre del proyecto
  3. Ocultar el elemento web
Funciona...

miércoles, 6 de febrero de 2013

¿Cómo exportar la configuración de Internet Explorer a un archivo plano?

Cuando nos encontramos con un problema de funcionamiento en SharePoint, a veces es necesario comparar las configuraciones de Internet Explorer entre dos máquinas. Para ello hay una forma de exportar las configuraciones a un archivo. Son 4 pasos:

  1. Ejecutar el programa "gpedit.msc"
  2. Ir a la rama Local Computer Policy / Administrative Templates / Windows Components / Internet Explorer
  3. Clic con el botón derecho del mouse sobre "Internet Explorer" y luego "Export List..."
  4. Finalmente, grabar el archivo de texto
En esta imagen se puede ver la rama a buscar:



Y aquí un ejemplo del archivo generado:


Espero les haya resultado útil. Hasta la próxima!

viernes, 1 de febrero de 2013

¿Cómo extraer el CAML de una vista de SharePoint?

¿Alguna vez te interesó conocer cuál es el CAML que hay detrás de una vista creada en SharePoint en forma manual? Pues hay varias formas de hacerlo, pero una muy sencilla es a través de la siguiente URL:

http://SERVER/SITE/_vti_bin/owssvr.dll?Cmd=ExportList&List={GUID}&View={GUID}

Espero que te resulte útil. Aquí enlaces relacionados:





Validaciones de lista condicionales en SharePoint 2010

SharePoint 2010 nos permite realizar validaciones de algunas reglas de negocio gracias a la posibilidad de definir a nivel de lista o de columna, ciertas validaciones.

image

En este breve artículo veremos cómo resolver un requerimiento de validación particular:

Requerimiento

  1. No se realizan validaciones en el alta.
  2. Se realizan validaciones en la edición, basadas en el valor de campo 1.
    1. Si campo 1 no toma valor, es un error.
    2. Si toma valor “Yes”, entonces campos 2 y 3 deben tener valor.
    3. Si toma valor “No”, entonces campos 2 y 3 no deben tener valor.

Enfoque

  • Se trabajará con validaciones a nivel de lista, no de columna.
  • Se usarán validaciones de tipo IF para realizar controles condicionales
  • Se comparará la fecha de creación con la de modificación. Si es la misma, entonces se trata de un alta. En caso contrario se asume una modificación.

La fórmula

=IF(Created=Modified,TRUE,IF([campo 1]="Yes",IF([campo 2]<>"",IF([campo 3]<>"",TRUE,FALSE),FALSE),IF([campo 1]="",IF([campo 3]="",IF([campo 1]="",FALSE,TRUE),FALSE),FALSE)))

Espero les haya servido. Hasta la próxima!