Mostrando entradas con la etiqueta Columna calculada. Mostrar todas las entradas
Mostrando entradas con la etiqueta Columna calculada. Mostrar todas las entradas

sábado, 23 de enero de 2016

Eliminar una palabra de un texto en SharePoint

Esta entrada es una continuación de la anterior. En la anterior entrada vimos como era posible completar un campo de tipo hipervínculo. Todo ello, vino de una lista llamada Miembros que servía para guardar todos nuestros contactos de diferentes grupos y una lista llamada Grupos, que nos servia para nombrar los diferentes grupos y para tener un "botón" que al hacer clic en el, nos permitiera mandar un correo a todos los miembros de ese Grupo.

Obviamente la siguiente parte que tuvimos que implementar era el mecanismo de dar de baja miembros de dicho grupo. El eliminar elementos de la lista de Miembros, es básico, es eliminar un elemento de la lista. Pero eso no nos eliminaría el correo asociado de la lista Grupos donde esta el "botón".

Así que lo que hicimos fue crear una columna de tipo elección en la lista Miembros, que llamamos Eliminar miembro, cuyo valor por defecto es No. Pero que cuando el usuario quiera eliminar un contacto, simplemente tenga que cambiar a Sí. También cree una columna oculta de tipo texto llamada Todos, donde guardaría los valores de todos los email que había bajo el "botón" Enviar Email. Adicionalmente cree 4 campos calculados sobre la lista  Miembros: SinCorreoI, SinCorreoD, SinCorreoPre y SinCorreo.

Estos campos calculados nos servirán para almacenar los correos que hay a la izquierda del correo que queremos eliminar y sin el "mailto:", la parte derecha que hay tras el correo a eliminar, concatenar ambas partes y finalmente comprobar si es vacío o si quedan correos tras eliminar el correo a borrar.

Para ellos utilizamos también un flujo de trabajo sobre la lista Miembros que se lanza cuando se modifica un elemento y que tiene la siguiente forma:


Ejecutaremos sólo el borrado, si seleccionan Eliminar miembro a Sí.

Lo siguiente que hacemos es guardar en la variable del flujo EmailTodos de tipo cadena, los emails que hay en el "botón".


Lo siguiente que hacemos es rellenar la columna oculta Todos de tipo una línea de texto, de nuestra lista Miembros con el valor de la variable EmailTodos, que contendrá todos los emails:


Tras ello, entra en funcionamiento las columnas calculadas que hemos citado antes:

  • SinCorreoI: =RIGHT(LEFT(Todos;(FIND(Email;Todos)-1));LEN(LEFT(Todos;(FIND(Email;Todos)-1)))-7)
  • SinCorreoD: =RIGHT(Todos;(LEN(Todos)-((FIND(Email;Todos)+LEN(Email)))))
  • SinCorreoPre: =SincorreoI&SinCorreoD
  • SinCorreo: =IF(SinCorreoPre="";"@";SinCorreoPre)
Lo siguiente que hacemos es esperar a que se ejecute y se rellenen los campos calculados. Personalmente tuve que poner una espera hasta que en el campo hubiera una arroba, ya que la acción esperar 1 minuto, no terminaba nunca por un problema de configuración de nuestro SharePoint que debemos revisar. Sino hubiera sido más óptimo poner una espera de 1 minutos y la última columna calculada hubiera sido:

  • SinCorreo: =IF(SinCorreoPre="";"";SinCorreoPre)
No obstante el resto del flujo lo separe en un paso más para asegurarme de que estaban todos los valores asignados.

En el paso 2, lo único que hacemos es establecer la variable del flujo EmailTodosSin de tipo cadena con el valor de la columna SinCorreo.

Lo último que hacemos es volver a rellenar el "botón" tal y como vimos en la anterior entrada, con el valor de la variable, que puede contener correo o no. Y en ambos casos, lo último que hacemos el borrar el elemento de la lista Miembros que queríamos borrar.

RESUMEN:

En las acciones de flujos de SharePoint no existe una función que nos haga eliminar una palabra de un cadena de texto. Sólo existe en 2013 la opción de quedarnos con una parte a partir de una posición determinada. Entonces para ello, utilizaremos columnas calculadas.



sábado, 8 de agosto de 2015

Problemas con los flujos de trabajo en las encuestas en SharePoint 2007

Hoy un cliente que usa MOSS (SharePoint 2007), me ha pedido que cree una encuesta. Hasta aquí ningún problema, encuesta creada con sus maravillosas bifurcaciones.

Los problemas han venido cuando me ha dicho que un usuario podía responder varias veces a la encuesta. Eso no es un problema en sí, el problema viene cuando el usuario a los días se ha dado cuenta de que ha respondido mal a la encuesta. Entonces puede ser un problema saber cual es la respuesta que coincide con la respuesta a modificar.

Lo primero que se me ha ocurrido ha sido, crear o modificar una vista, para mostrar en ella, el campo que diferenciaría cada respuesta, en mi caso el campo "operación", pero que por el alto número de operaciones que tenían, he separado en 9 preguntas de operación que se llega a ella por medio de una bifurcación al elegir el departamento.
Para mi sorpresa en una lista no se puede crear vistas, ni modificar vistas (Si que se puede añadir campos con SharePoint Designer):


Pero no sería solución porque tendría que sacar las 9 columnas de operación.

Las encuestas tampoco aceptan columnas calculadas, en la cual, podría concatenar en una sola columna, la concatenación de las 9 y mostrar dicha columna.

Lo siguiente que se me ha ocurrido es crear un correo, que además de confirmarle al usuario la respuesta en la encuesta, les ponga un enlace a la edición de la respuesta en sí.

Me pongo manos a la obra y cuando esta finalizado, me encuentro con que me aparece la columna del flujo en la vista por defecto, como siempre, pero con este mensaje:


Busco en San Google y encuentro esta maravillosa página de Microsoft:
https://support.microsoft.com/es-es/kb/926370

En la que por si desaparece, os copio lo que pone:

"Considere el siguiente escenario. Cree una encuesta y, a continuación, agregue un flujo de trabajo a la encuesta en Microsoft Windows SharePoint Services 3.0. A continuación, conectarse a la encuesta y responder a él. Por último, ver la respuesta que ha enviado y, a continuación, intenta iniciar un flujo de trabajo de la respuesta. Para ello, haga clic en la flecha situada junto a la respuesta, haga clic en flujos de trabajo, haga clic en el flujo de trabajo que ha agregado, escriba su nombre de usuario en el cuadro de los revisores y, a continuación, haga clic en Inicio. Sin embargo, no se inicia el flujo de trabajo. En su lugar, el estado del flujo de trabajo aparece como Error al iniciar."

Que suerte, justo lo que me pasa a mi, busco la solución y me encuentro:

"Este problema se produce porque a partir de un flujo de trabajo de una respuesta de encuesta no es compatible con Windows SharePoint Services 3.0. Aunque la opción de flujos de trabajo aparece al hacer clic en la flecha situada junto a la respuesta de una encuesta, no se puede iniciar un flujo de trabajo de respuesta de una encuesta."

Perfecto, descubro que las encuestas no soportan los flujos. Por cierto, la traducción rara, ha sido cortesía de Google.

Y las alertas no me sirven, porque no puedo hacer que llegue una alerta al creador y sólo al creador, cuando este crea un elemento:


Conclusión, la encuestas son maravillosas, pero no soportan:

  • Flujos
  • Vistas personalizadas
  • Alertas para indicarme que he respondido a la encuesta
  • Columnas calculadas


sábado, 14 de junio de 2014

Obtener día de la semana

En los múltiples clientes para los que he trabajado, me han pedido múltiples cosas a partir de un campo de tipo fecha.

Una que es recursiva, es obtener el día. Alguien puede pensar que es una petición sencilla, pero esa petición puede significar tres cosas. Obtener el número del día, el nombre del día y el orden del día dentro de la semana.

Me explico. Hoy es 14/6/14 y es sábado.

Entonces veremos lo que podemos obtener con una columna calculada:

Día:
=DAY([Fecha])
Nos devuelve:
14

Nombre del día:
=TEXT(WEEKDAY([Fecha]); "dddd")
Nos devuelve:
sábado

Nombre del día corto:
=TEXT(WEEKDAY([Fecha]); "ddd")
Nos devuelve:
sá.

Recordad que si queréis que la letra inicial aparezca en mayúsculas, bastaría con englobar todo con PROPER:
=PROPER(TEXT(WEEKDAY([Fecha]); "dddd"))
Nos devuelve:
Sábado

Por último podemos necesitar el número del día dentro de la semana, para poder ordenar de lunes a domingo, o de domingo a sábado si trabajamos para países anglosajones.

Número del día de la semana:
=WEEKDAY([Fecha];2)
Nos devolverá:
6

Sí estuviéramos trabajando para una empresa anglosajona:
=WEEKDAY([Fecha];1)
Nos devolverá:
7

Sí quisiéramos que el lunes fuese 0, bastaría con:
=WEEKDAY([Fecha];0)
Nos devolverá:
0

Fuentes:
https://support.office.com/en-us/article/WEEKDAY-function-a9784177-5c31-4deb-bc9e-d4ab914983ca
https://msdn.microsoft.com/es-es/library/office/bb862071(v=office.14).aspx

sábado, 26 de abril de 2014

Como sumar o restar horas y minutos a un campo de tipo Fecha en SharePoint

Generalmente, cuando trabajamos con campos calculados, nos suelen pedir comparar fechas, añadir y quitar días, meses, años, etc..

Todo esto, lo podemos encontrar en la página oficial de Microsoft:
https://msdn.microsoft.com/es-es/library/office/bb862071(v=office.14).aspx

Pero una cosa que no viene en esa página, es como sumar y/o restar horas y minutos a un campo de Fecha y hora, en SharePoint.

Si tomamos como referencia la formula de como añadir un día, tendremos una pista:

=[Fecha]+1

Entonces sí 1 es un día. Basta con utilizar la lógica. Un día son 24 horas. Así que si quisiera sumar 3 horas, sería 3/24 partes del día.

Sí 1 hora son 60 minutos y 1 días son 24 horas. Sí quisiéramos sumar 7 horas, sería 7/24/60 partes del día.

Con lo cual, nuestras formulas en la columna calculada serían:

Horas:
=[Fecha]+((1/24)*Número de horas deseadas)

Minutos:
=[Fecha]+((1/24/60)*Numero de minutos deseados)

Como se puede ver, no era muy complicado. Sólo había que seguir la lógica.

sábado, 21 de septiembre de 2013

Columna calculada de una columna de tipo fecha vacia en SharePoint

En varias entradas anteriores he puesto varios ejemplos de columnas calculadas, basadas en columnas de tipo fecha. Pero lo que no había comentado nunca hasta ahora, es que pasa cuando dicha columna no es obligatoria y el usuario, no la completa.

Pues bien, por una particularidad de SharePoint, trata dicha columna vacía como si fuera el día 30/12/1899 0:00:


Entonces, si estamos tratando de obtener el año, sabemos que sería:

=YEAR([Fecha])

Pero como podemos ver en la anterior captura, no devolvería 1.899. Lo cual es incorrecto.

Para solucionar esto, muy sencillo; Utilizaremos la función IF:

=IF([Fecha]="";"Falta la fecha";YEAR([Fecha]))

Obteniendo algo más real:



sábado, 17 de agosto de 2013

Formateo de teléfonos por medio de Columnas Calculadas

Antiguamente en España, para hacer una llamada telefónica dentro de tu provincia, bastaba con marcar los 6 o 7 dígitos del teléfono deseado. En cambio, si querías llamar a otra provincia, tenías que marcar 9 dígitos, donde los 2 o 3 primeros, correspondían al código de la provincia.

Todo esto cambio y a día de hoy, para llamar dentro de España, tenemos que marcar los 9 dígitos sin importar las provincias.

Pero consecuencia de esto, es que en muchos clientes, no piden que columnas de tipo numérico, quieren que se muestren en listas de SharePoint con un formato determinado, como por ejemplo:

948 11 11 11

en lugar de:

948111111

Para ello, basta con hacer una columna calculada y aplicarle el formato deseado:


En este ejemplo hemos aplicado el formato:

=TEXT(Título;"000 00 00 00")

Pero podría haber sido el que hubiéramos deseado:

=TEXT(Título;"(000)00-00-00")

sábado, 22 de junio de 2013

Autonumeración con reseteo anual en SharePoint

Por ponernos en situación. Un cliente nos pidió un sistema donde sus usuarios hicieran una solicitud y SharePoint le autoasignará un número único.

Hasta aquí todo bien, pues podemos utilizar la columna ID, propia de cualquier lista o biblioteca de SharePoint. Pero querían que el 1 de enero se reiniciará dicho indice. Además querían que el número asignado, se correspondiera a Número-Año, por ejemplo 289-2013.

Para esto, vamos a utilizar algo que ya he comentado en otra entrada anterior:
http://sharepointyamigos.blogspot.com.es/2013/04/uso-de-listas-auxiliares-en-flujos-de.html
Es decir, vamos a utilizar una lista auxiliar, para llevar el conteo del elemento en el que vamos.

Tendremos nuestra lista de recepción (Solicitudes), con tres campos a rellenar por los solicitantes:
Título, Descripción y Área.
También tendrá un campo de una línea de texto oculto llamado Número de solicitud y otro calculado, llamado Año.

Para ocultar una columna bastará con entrar en la administración de la lista:


Una vez dentro, iremos a la columna Configuración general y seleccionaremos la opción Configuración avanzada:


Lo primero que nos preguntarán en la Configuración avanzada, es si deseamos permitir la administración de tipos de contenido. Responderemos que Sí:


Esto nos habilitará la opción de gestionar las columnas, en la zona Tipos de contenido:

Sí hacemos clic sobre nuestro Tipo de contenido, podremos ver las columnas que lo forman y su Estado:


 Al hacer clic en la columna Número de solicitud, podremos cambiar su Estado a Oculta:


La columna Año, en cambio será una columna calculada de tipo Número, a la que le asignaremos el año asociado al año de creación de la solicitud:


Y nuestra lista auxiliar (Contador) constará de dos campos. Año y Último número. En nuestro caso, ambos serán de tipo número.

Deberemos rellenar nuestra lista con elementos de la forma:


Esta lista nos servirá para que el flujo lanzado por la creación de un elemento en la lista Solicitudes, venga a esta lista, busque la entrada que coincida con el año actual, recoja el número de Solicitudes creadas para este año y lo incremente en uno y lo guarde de nuevo en la lista Contador.

Todo ello, lo haremos creando un flujo asociado a la lista Solicitudes:


Lo primero que haremos será seleccionar la Acción de Realizar el cálculo:


Primero definiremos que es lo que queremos sumar, en nuestro caso será el valor del campo Último Número de la entrada cuyo Año coincide con nuestro Año actual (obtenido en la columna calculada de Solicitudes):


SharePoint Designer nos advertirá de que puede darse que haya varios elementos que cumplan dicha condición de búsqueda, pero no tenemos nada que temer, ya que nosotros hemos definido un único elemento por cada año en la lista Contador:


Lo siguiente que haremos será sumarle 1 y guardarlo en una variable del flujo:


Lo último que nos queda es guardar ese número calculado en la variable en nuestra lista auxiliar. Para que así el valor de Último Número recoja nuestra ejecución:


También deberemos guardar el número asignado en la lista Solicitudes en el campo Número de solicitud, pero para ello, lo guardaremos ya con el formato deseado Número-Año, para ello utilizaremos una Cadena dinámica:


Ya sólo nos queda guardar el Número de solicitud en el elemento:


Adicionalmente, nos pidieron que se le notificará al peticionario vía correo electrónico, por eso añadimos un nuevo paso donde incluíamos este valor:


Tras todo este proceso, tendremos almacenado en nuestra lista de Solicitudes, la solicitud, con su Número de solicitud correspondiente y tendremos una lista de control, que nos permitirá saber cuantas peticiones hemos recibido cada año.


jueves, 28 de junio de 2012

Columna Año, sin punto en columna calculada

Hoy he tenido una incidencia curiosa, la cual me ha costado tiempo encontrarle solución, pero finalmente tenía solución.

En una lista de SharePoint, tenía una columna de tipo fecha, pero luego para ordenar la información por Año, hemos creado una columna calculada en la que obteníamos el año de la columna fecha:



Hasta aquí ningún problema. Lo curioso ha sido, cuando alguien importante en el cliente y versado en gramática y ortografía. Nos ha dicho que eso estaba mal y que no podía quedar así, que los años no deben llevar punto, ni coma en la unidades de millar. De hecho, hasta me ha enviado un enlace a la R.A.E., donde el apartado 5.1. así lo comenta.

El código de la columna calculada, es el que desde Microsoft se recomienda:


Pero buscando por Internet, he comprobado que es un error bastante común y que la manera correcta de sacarlo es seleccionar el año de la fecha y convertirlo a texto. Para ello he empleado la siguiente fórmula:


Con ello, he conseguido obtener el año, tal y como la R.A.E. indica, es decir, sin comas, ni puntos. Y al final todos contentos ;-P :