Apr29

[MOSS]Bug en el WorkFlow de envío de correo con SPD

Tags: MOSS/WSS, Bugs

 

Crear un WorkFlow con SPD (SharePoint Designer) es bastante sencillo, pero me ha ocurrido algo que yo diría que es un pequeño bug del producto.

Para ponernos en situación digamos que mediante el SPD queremos diseñar un WorkFlow de envió de correo cada vez que se cree un nuevo elemento en una lista.

Para simplificarlo aun mas en esta lista solo contaremos con el campo título que se corresponderá con el título del correo electrónico a enviar, el campo cuerpo, que se corresponde con el cuerpo del mensaje y el campo “EnvioCorreo”, un campo de tipo Persona de SharePoint y donde indicaremos los usuarios que van a recibir el correo electrónico.

clip_image002

El campo EnvioCorreo lo definimos como ya comente antes de tipo persona, y permitimos que pueda seleccionarse más de un usuario indicando que permita la selección múltiple:

clip_image004

Se crea en WorkFlow de envío de correo en SPD:

clip_image006

Y cuando vamos a buscar nuestro campo “Asignado a” entre los campos presentes en el nuevo elemento que se está creando, el campo no aparece:

clip_image008

El campo “EnvioCorreo” no aparece ya que lo tenemos marcado para que permita la selección múltiple de usuarios, si volvemos a configurarlos para que solo pueda contener a uno, si que aparecerá:

clip_image010clip_image012

Una vez configuramos el WorkFlow de envío de correo, al crear un nuevo elemento este se envía con normalidad:

clip_image014clip_image016

Y si ahora modificamos nuevamente el campo “EnvioCorreo” para que admita la selección múltiple, funcionará con normalidad:

clip_image018clip_image020clip_image022

Moss es así…..

Publicado: 29-Apr-09 | 1 Comentario | 140 Enlaces a este post

Apr14

[MOSS]Problemas con el RenderAsHtml

Tags: MOSS/WSS

 

Un contratiempo bastante extraño que me ha ocurrido hoy con un WebPart desarrollado por nosotros que visualiza elementos de una biblioteca de documentos.

Al añadirlo a una página que ya contenía mas WebParts de visualización de elementos se comportaba de manera errática, al editar un documento desde el menú desplegable del propio elementos accedía en modo edición a los elementos de otra lista, y sin embargo cuando el WebPart se encontraba el solo en una página todo este comportamiento extraño desaparecía.

 

Después de pasar todo el día dándole vueltas y buscando alguna información al respecto me tope con este post de los foros de MSDN, donde a alguien le ocurría lo mismo.

En resumen el problema ocurre debido al hecho de que los enlaces que se crean automáticamente en el desplegable de los elementos de cualquier lista, están basados en un objeto de JavaScript "ContextInfo()", y el método RenderAsHtml() siempre llama a estos objetos ctx1, así que en el momento que coinciden varios WebParts de visualización de elementos que usan este método pues MOSS se hace un lío, y lo que tu crees que es una acción de edición sobre un documento de la lista A se convierte en una edición de un elemento de la lista B en el mejor de los casos, normalmente no encuentra el elemento....

 

Para resolverlo como bien dice Nicky W. en el post anteriormente mencionado, pues hay que capturar el texto que se genera con el RenderAsHtml() y modificar las referencias a "ctx1" tal y como muestra el siguiente código:

SPList list = web.Lists[list name];
SPView view = list.DefaultView;
lit = new Literal();
lit.Text = view.RenderAsHtml();
lit.Text =lit.Text.Replace("ctx1",string.Format("ctx{0}",N.ToString()));
lit.Text = lit.Text.Replace("ctxId = 1", "ctxId= " +N.ToString());
lit.Text = lit.Text.Replace("CtxNum=\"1\"", "CtxNum=\""+ N.ToString() +"\"");
phGrid.Controls.Add(lit);

 

Donde N es un valor incremental, si vais a renderizar varios controles del mismo tipo o aleatorio, si solo vais a renderizar uno, pero siempre que no sea un 1.

Publicado: 14-Apr-09 | 0 Comentarios | 0 Enlaces a este post

Apr11

[MOSS] Disponible Ram Up: SharePoint for Developers Parte 2

Tags: MOSS/WSS

 

Microsoft ha hecho publico el recurso de Ram Up: Sharepoint for Developers-Part 2

Aun no lo he visto en profundidad pero tiene bastante buena pinta y es una opción mas que interesante para aquellos que se inician en este mundillo.

Se compone de lo siguiente:

  • Level 1: Page Navigation
  • Level 2: Page Branding
  • Level 3: Web Services
  • Level 4: Custom Content Types
  • Level 5: User Management

Esto se suma a la parte 1:

  • Level 1: Web Parts
  • Level 2: Data Lists
  • Level 3: Event Handlers
  • Level 4: Workflow
  • Level 5: Silverlight Web Parts
Publicado: 11-Apr-09 | 0 Comentarios | 0 Enlaces a este post

Apr10

[InfoPath] Combos encadenados

Tags: InfoPath

 

En un formulario InfoPath tenemos 2 combos (dropdownlist), y queremos que dependiendo de lo que se seleccione en el primero aparezcan unas opciones u otras en el segundo.clip_image002

Desarrollar en InfoPath generalmente no tiene mucha complejidad, pero en este caso se complica un poco, ya que hay que usar archivos de recursos, o referencias a listas de SharePoint como origen de datos de los combos, en este post de Mario Cortes comenta todas las opciones de orígenes de datos que ofrece InfoPath.

Básicamente cuando como origen de datos de un combo seleccionamos un fichero xml, previamente añadido como conexión, especificamos un XPath de los valores relativos que se mostrarán en el combo.

En este caso yo voy a usar archivos xml donde especificaré la relación de valores entre la selección del primer combo y la del segundo.

Para esto necesitamos un par de ficheros xml, en el primero que contendrá toda la información:

clip_image004

Y el segundo en el que únicamente necesitaríamos la estructura xml para vincularla como origen del datos del segundo combo, en el caso de la imagen a continuación si que tiene datos pero bastaría con que incluyese el nodo padre(departamento) y dos de los nodos hijos(subdepartamento), necesitamos que haya 2 nodos hijos para que sea seleccionable el XPath asociado:

clip_image006

Ambos xml los agrego como conexiones de datos, para recibir datos, de tipo xml y los incrusto en el formulario y que recuperen los datos cada vez que se carga el formulario.

Después configuro los combos para que su origen del datos sean estos archivos xml:

clip_image008

Y ahora solo falta agregar un poco de lógica para modificar el contenido del segundo xml dependiendo de lo que se ha seleccionado en el primero.

Básicamente añado un código para el evento "changed" del primer combo, capturo el valor seleccionado e inserto en el xml de origen del segundo combo los valores asociados:

image

Y ahora ya tengo los dos combos encadenados:

clip_image010

Ahora voy a incluir un poco de lógica mas, para que cuando en el segundo combo no haya elementos que cargar se deshabilite, para esto en primer lugar definimos una nueva propiedad de tipo texto, que inicialmente contendrá un 1.

clip_image012

En el formato condicional del segundo combo añadimos una regla por la cual se ocultará este campo cuando nuestra nueva propiedad contenga un 1.

clip_image014

Y mediante código establecemos el valor teniendo en cuenta el valor seleccionado para el primer combo:

image

Ahora cuando no tenga valores, el segundo combo se mostrará deshabilitado:

 

clip_image016

Y cuando tenga valores pues los mostrará:

clip_image018

Por supuesto este método es compatible con SharePoint Forms Service.

Publicado: 10-Apr-09 | 2 Comentarios | 1141 Enlaces a este post