Solución sin código: mostrar los días desde la última modificación de un elemento de lista de SharePoint

Solución sin código: mostrar los días desde la última modificación de un elemento de lista de SharePoint

Nota:  Nos gustaría proporcionarle el contenido de ayuda actual lo más rápido posible en su idioma. Esta página se ha traducido mediante un sistema automático y es posible que contenga imprecisiones o errores gramaticales. Nuestro objetivo es que este contenido sea útil para usted. ¿Puede informarnos sobre si la información le ha sido útil al final de la página? Aquí tiene el artículo en inglés para que pueda consultarlo fácilmente.

20/9/2011 3:01 P.M.

por Diego Joyce, LANtek

Nota: En este artículo forma parte de una colección de publicaciones de cuatro años del blog para obtener el punto para los usuarios finales de SharePoint.

Información general: Personalizar informes sin código de antigüedad

Una de las partes funcionales solicitadas de un sitio de SharePoint es un informe de antigüedad de tareas o elementos de lista. En otras palabras, ¿cuántos días, meses lo ha sido desde este elemento de lista se modificó por última vez?

En la superficie de esto parece ser una solicitud muy simple. Después de todo, tenemos fechas para los elementos que se crean y se modifican, tenemos la capacidad de almacenar fechas personalizadas cuando algunos cambios a elementos producirá a través de los receptores de eventos. Nos hemos de donde poder incluir las fórmulas de Excel para trabajar con la información de columnas calculadas. Parece una propuesta bastante directa. Seleccione un campo de fecha, crear una columna calculada y, a continuación, hacer una fórmula algo similar a las líneas de [DateField]: [Hoy]. AH, no la rápida aunque! Como cualquier persona que ha intentado realizar esta tarea "simple" sabe, intenta utilizar algo parecido a [Hoy] en una columna calculada provoca problemas. Pruebe a insertar [Hoy] en el que se calcula cuadro fórmula de la columna dará un mensaje de error algo similar a esta:

Mensaje de error

¿Por qué es esto? Bien, tiene que hacer con el modo de cálculo se calculan columnas.

Echemos una fórmula sencilla como ejemplo:

= IF ( [Column1] < = [Column2], "Correcto", "No Aceptar")

Todo esto dice es que si Column1 es menor o igual a Column2, mostrar Aceptar, en caso contrario, muestra no Aceptar. Se trata de una fórmula básica bastante habitual para una columna calculada y hace una suposición básica sobre el elemento de lista que contiene estas columnas: los valores de Column1 y Column2 nunca podrá cambiar sin un evento de actualización en el elemento de lista.

Es decir, solo se vuelve a calcular columnas calculadas cuando la lista se actualiza (o creada) ya que se supone que la información que se va a calcular está contenida en el propio elemento. Esto supone un problema cuando está intentando usar algo que cambia independiente de los campos del elemento, como la fecha de hoy.

Ahora no estaba en la reunión donde decidido que se trata de la forma en que se calcula columnas funcionarían, sin embargo, si tenía que hacer una estimación informadas ¿se supone que funcionan de esta manera para obtener un rendimiento. Imagine si tiene una lista de varios elementos de miles, cada una de las cuales contiene una columna calculada que necesita una actualización "vivo". Eso significaría que algún mecanismo, tal vez un trabajo del temporizador, tendría que recorrer cada elemento que contiene dicha columna calculada frecuencia y actualice su valor. Esto podría ser muy cargarlo en términos de rendimiento porque con implementaciones de mayor tamaño este trabajo podría constantemente ejecutando y cambiar cosas. Es simplemente creo, pero resulta algo sentido si piensa acerca de él.

Existen algunas sugerencias para soluciones similares flotantes por allí que implican engañar a SharePoint para aceptar un valor de hoy al crear por primera vez una columna denominada hoy, agregar a la fórmula, a continuación, eliminarlo. Estos son muy bien, pero recuerde lo que dije sobre cuándo se actualizan las columnas calculadas. Este valor solo cambiará cuando se actualiza el elemento que significa que los valores pronto será incorrectos, especialmente en el caso de un cálculo de día.

He visto otras personas mediante JavaScript inteligente para escribir los valores en la página. Esto podría encajar también, pero estoy prácticamente por categorías contra secuencias de comandos de cliente cuando se puede evitar.

Implementación:

¿Qué hacer? Columnas calculadas están fuera de la pregunta de lo que se denomina funciones "volátiles" como hoy. Es posible que se puede desarrollar el código personalizado para ocuparse de esto nos como una columna calculada, el trabajo del temporizador, o programada proceso venga y actualizar todos los elementos que necesita este cálculo realizado. Eso nos lleva al problema de rendimiento que mencionan en el último párrafo aunque y además es una solución frágil que sería muy específica para el sitio o lista o columna en cuestión. Encima de esas dos cuestiones, también tendrá que buscar un chico nerdy, como yo, que sabe cómo código y convencerle le para desarrollar esta solución. Pero hay una manera más fácil!

Si tiene derechos para crear campos y editar páginas en su sitio y tiene un poco de conocimientos sobre XSLT y crear vistas, puede colocar juntos una plantilla XSL que se puede incluir en una vista de lista y fidelidad calculará su valor cada vez que se solicita la página. Este escenario quita nuestra importante sobre el rendimiento y no requiere código personalizado para desarrollar e implementar a través de una solución.

Perfecta. ¿Cómo debemos hacerlo?

  1. Crear o seleccionar el campo que actúe como el origen. Debe ser un tipo de fecha.

  2. Crear el campo que actúe como un marcador de posición para el valor que se va a calcular.

  3. Agregar estos campos a un tipo de contenido y agregar ese tipo de contenido a una lista.

  4. Crear una vista de lista que contiene las columnas de origen y de marcador de posición.

  5. Cargar la plantilla XSL a la biblioteca de estilos.

  6. Establezca la propiedad "Vínculo XSL" para el elemento Web de vista de lista a través de la interfaz de usuario.

  7. ¡Hecho!

Vamos a explorar un caso de uso de ejemplo y guíe durante la implementación. El cliente deseaba una vista de su lista principal que se le indica a ellos cuánto un elemento de lista determinado tenía ha sentado en su estado. Esta lista incluye un sitio personalizado contenido tipo derivado del tipo de elemento y se agrega a la lista. Ya tenía un receptor de eventos en el lugar que capture cada vez que ese campo de estado en el elemento de lista se ha cambiado y guardado esa fecha en una columna denominada "Fecha de estado cambiado". Todo este cableado no es necesario y se puede hacer con cualquier campo de fecha (lo que sucede esto es nuestra implementación, pero no dude en experimentar). El mínimo que debe es el campo de fecha de origen y el campo de marcador de posición que contenga el cálculo (obtener más información sobre esto en el párrafo siguiente) se agregan a la lista, aunque le sugiero que usar columnas de sitio y tipos de contenido de sitio en caso de que desee volver a usar esta solución en otros pl ACE en su sitio.

Tenemos nuestro fecha de origen que podemos usar en nuestro cálculo de la fecha de hoy. Ahora podemos crear una columna de sitio personalizada para usarla como un contenedor para nuestro valor calculado. En este caso que elegí utilizar una columna calculada, ya que no pueda modificarse en el nuevo o editar los formularios de elemento, pero se puede seleccionar para que se muestre en las vistas ya que no desea que los usuarios escribir los valores arbitrarios en esta columna. Podría ser confusa sobre por qué no se que se muestra en las vistas, etcetera.

Ahora que tenemos nuestra columna de sitio, nos podemos agregar a nuestros tipos de contenido que se utilizará en nuestra lista. A continuación, es necesario crear nuestra vista que más adelante personalizarse con nuestro XSLT. Asegúrese de que crear una vista estándar que contiene la columna de fecha de origen y la nueva columna calculada que actúe como un marcador de posición para el valor calculado.

Ahora tenemos todo en el lugar al que se requieren para admitir el informe de vencimiento personalizada. Todo lo que sigue es crear nuestra plantilla XSL, cargar a la biblioteca de estilos del sitio y vincular a la vista de lista. Vamos a usar la plantilla de XSL va a contener algún marcado generados por SharePoint normal para generar la vista, así como nuestro propio formato personalizado que se utiliza para reemplazar determinadas partes de este y calcular el valor deseado para que podamos.

Ofreciendo crédito donde vence crédito, las plantillas XSL para realizar los cálculos reales estoy usando para esta solución proporcionó gentilmente "swirch" en los foros MSDN:
http://social.msdn.microsoft.com/Forums/en-US/ sharepointcustomization/subproceso/aeda905b-9bc6-40c4-bd22-21306c5cb0d2 /

Descargue la hoja de estilo XSL (aging.zip) he colocado juntas ubicado aquí:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Abrir esta hacia arriba en el editor de texto si, verá mucha normal XSL SharePoint marcado para representar las vistas desplazarse hacia abajo hasta la línea 357, verá el inicio de las plantillas personalizadas que he agregado a las revisiones, la primera que está "DateDiff" temp límite seguida por "calcular de juliano-día" y "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Estos son nuestros tres plantillas que se realice y mostrar nuestras cálculos en nuestras vistas. Si va a utilizar nombres de campo diferentes de los especificados anteriormente en este artículo, debe ir a través de estas plantillas y reemplace todas las referencias a los otros nombres. Recuerde, esto es posible que desee usar el nombre del campo nombre para mostrar no interno.

Una vez haya comprobado que la plantilla está lista para ir, vaya a la biblioteca de estilos y cárguelo en la carpeta "Hojas de estilo XSL" y copiar el vínculo al archivo. Esto nos permite hacer cambios fácilmente a ella más adelante o agregar a las distintas partes del sitio que se inicie.

A continuación, vaya a la lista y seleccione la vista que creó anteriormente en este artículo. En la "acciones del sitio" menú haga clic en "Editar página".

Comando Editar página del menú Acciones del sitio

Busque el elemento Web de vista de lista en la página y abra el menú elemento Web haciendo clic en la pequeña flecha hacia abajo en la esquina superior derecha. En este menú Seleccionar "Editar elemento Web".

Comando Editar elemento web en el menú Elemento web

Se abrirá el menú del elemento Web en el lado derecho de la ventana del explorador.

Menú Elemento web

Haga clic en + para "Varios" sección y busque la propiedad "Vínculo XSL".

propiedad Vínculo XSL en el menú Elemento web

Pegue el vínculo al archivo XSL en la biblioteca de estilos que copió anteriormente hacia abajo (puede ser un vínculo relativo o absoluto).

Vínculo del archivo XSL pegado en

Haga clic en "Aceptar" para guardar los cambios, a continuación, haga clic en el botón "Detener edición" en la cinta de opciones "Página" en la parte superior de la página.

Botón Detener la edición en la pestaña Página

Si todo lo que se ha configurado correctamente ahora debe ver los números de la columna "Días en el estado".

Columna Días en el estado que muestra números

Y, por último, aquí es lo que tendrá un aspecto como con algunos datos de fechas distintos de prueba:

Informe de vencimiento que muestra datos de prueba

Resumen:

Ya está: una forma con formato, sólida y mejor rendimiento para crear un informe de antigüedad en SharePoint. completar con una implementación sin código simple. Esto tiene bastante algunas aplicaciones posibles aparte de la usar caso que se explorado aquí. Otro escenario común para este tipo de informe es asociarlo a una lista de tareas para que puedan ver el tiempo que han pasado desde que se creó una tarea de un vistazo.

Disfrute.

--Diego

Diego Joyce, LANtek

Comentarios

¿No se encontraron los pasos
8/10/2012 3:51 A.M.
Aceptar seguido los pasos, pero debe haber falta algo - XSL cómo sabrá qué fecha usar o qué campo para agregar los días desde en? odia cuando se pierden pasos.

Sin código, acordado!
30/8/2012 12:12 P.M.
acepto - no creo esto realmente se cuenta como "sin código".
Interesante tener una columna calculada de trabajar con hoy... a través de algunas screwup de SharePoint, no está seguro de cómo o por qué ya no recibo que volver a hacerlo, pero el aún hay y en funcionamiento.

¿Fórmula para "Días en el estado" columna calculada?
5/2/2012 7:39 A.M.
Diego - ¿cuál es la fórmula que se utiliza para la columna de sitio calculada "Días en el estado" (columna de marcador de posición)? ¿Fue "= hoy"?

SharePoint 2007
2/12/2011 11:29 AM
actualmente no he intentado aplicar esta solución a SharePoint 2007, sin embargo, busco a él. Desgraciadamente, no hay ninguna propiedad XslLink expuesta en el elemento web a través de la interfaz de usuario.

Entrada de gran
30/11/2011 9:53 A.M.
Hola,
entrada excelente.
Estoy usando SharePoint 2007.
No tengo una sección varios como se indicó anteriormente. ¿
Tiene pasos para una configuración de SP2007?
Gracias.

Re: Solución sin código: mostrar los días desde la último un elemento de lista de SharePoint cambiado
11/10/2011 8:24 A.M.
Chris alta.
buscar excelente!
i voy a Eche un vistazo a lo que ha registrado Afortunadamente más adelante hoy y vea si i puede hacer que esta solución un poco más sólido.
estoy gusto le gustó la entrada y estoy muy gusto podía encontrar una solución al formato de fecha Europea. :)
-Diego

Solución para formatos de fecha europea
11/10/2011 6:45 AM
alta nuevamente Diego,
informativo, encontrar una solución para el problema mencionó anteriormente en esta página;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Formatos de fecha europea
7/10/2011 3:59 A.M.
Diego alta,
se trata de un gracias realmente buena solución y, a continuación, el tipo de lo que he pasado los dos últimos días buscando! Sin embargo, tengo un poco de un problema con ella y esperaba que pudo ayudarme.
He modificado el código ligeramente calcultate el número de días hasta que ocurre algo, en lugar de desde, cambiando las variables en la última línea de la función "DateDiff";

< xsl: value-of select = "$JulianToday - $JulianStartDate" >< / xsl: value-de >

sin embargo puedo solo obtenerlo caclulate la diferencia correctamente la mitad del tiempo. Por ejemplo, con esta fecha (formato dd/MM/aaaa);

30/12/2011

calcula correctamente, pero con esta fecha (formato de la misma)

10/12/2011

se calcula como if si 10 diciembre de 2011 en lugar de 12-Oct-2011.
intenté simplemente cambiar las posiciones de los valores de día y mes en la variable "JulianStartDate", así;

< xsl: con el parámetro nombre = "Mes" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'AAAAMMDD'), 7, 2)" / >
< xsl: con el parámetro nombre = "Día" select = "subcadena (ddwrt:FormatDateTime (cadena ($ StartDate), 1033, 'AAAAMMDD'), 5, 2) "/ >

y esto corrige el problema con la fecha de la segunda, pero estaba incorrecto para la primera fecha!
También he probado a alterar la FormatDateTime llamadas a usar LCID Europea y diversas modificaciones a la última parámetro de FormatDateTime (por ejemplo, DDMMAAAA, mmddaaaa) con los ajustes adecuados para la subcadena sin los parámetros de posición correcto.
Haría agradecemos cualquier consejos que puede ofrecer.
Gracias,
Carlos

Sin código
21/9/2011 4:27 A.M.
no creo que XSL califica como una solución "sin código", como comprender el lenguaje XSL no es para todos los usuarios - a pesar de que no implican la programación. Además de eso: solución interesante, gracias!

Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×