Pregunta

Me gustaría poder usar la fecha de hoy en una columna calculada en una lista de SharePoint para, por ejemplo, determinar si una tarea está vencida.Existe un truco bien documentado que consiste en crear una columna ficticia llamada "Hoy", usarla en una fórmula y luego eliminarla, "engañando" así a SharePoint para que use la función Hoy.

El problema es que este método no funciona de forma fiable: el cálculo no es dinámico;solo se realiza cuando se guarda el elemento y, por lo tanto, la "columna" Hoy se convierte efectivamente en la Fecha de modificación.(Probablemente esta sea la razón por la que SharePoint no le permitirá usar la función Hoy de manera sencilla).

¿Alguien ha encontrado una solución que funcione?Sé que puedo usar javascript para obtener la fecha real en el lado del cliente y mostrar colores, banderas, lo que sea, pero estoy buscando una solución del "lado del servidor".


Como referencia, el truco de la columna Hoy y sus problemas se describen bastante bien en estas dos publicaciones y comentarios asociados:http://blogs.msdn.com/cjohnson/archive/2006/03/16/552314.aspx y http://pathtosharepoint.wordpress.com/2008/08/14/calculated-columns-the-useless-today-trick/

¿Fue útil?

Solución

Simplemente no es un trabajo en torno a esto. Como los valores de la lista se almacenan en la base de datos y devueltos "tal cual" a otros featurs como el rastreador de búsqueda, un campo dinámico no puede ser creado.

Es posible crear un campo personalizado que pantalla el valor con la fecha de hoy en su cálculo.

Otros consejos

Además del artículo de Christophe (PathToSharePoint), este también cubre el truco de hoy y por qué no funciona.

La verdad sobre el uso de Today en columnas calculadas

Hay varios errores, probablemente el mejor es la aplicación de consola de Dessie (mencionada anteriormente por MNM)

Actualización dinámica de una columna calculada de SharePoint que contiene una referencia de Hoy

Es bueno pero no perfecto; por ejemplo, es posible que tengas que preocuparte por las diferentes zonas horarias.

Antes de seguir este camino, debes preguntarte si realmente necesitas hacer esto.Por ejemplo :-

Si crea una columna de hoy necesita ser actualizada. Puede hacerlo ya sea con un trabajo del temporizador o mediante la colocación de un script de jQuery en una página que está golpeado por el usuario. El guión podría llamar SPServices.SPUpdateMultipleListItems hacer la actualización. Pasar una cláusula CAML para que sólo actualizar los elementos de la lista, donde el valor actual necesita ser actualizado, por ejemplo, una vez al día.

Mi consejo es crear su campo en que se hace este cálculo para usted y luego hacer referencia a ella en su lista de SharePoint. No es una aplicación sencilla pero funcionaría.

He estado buscando una solución, ya sea, sigue sin suerte .. La columna truco de hoy en día tiene la limitación de no ser dinámico.

Tengo una sugerencia sin embargo, ¿por qué no creamos un trabajo del temporizador que va a actualizar una cierta cierta columna con la fecha actual cada día a las 12 PM. Sé que algunos de todo lo que pueden pensar que es una cabeza más. Sólo mi sugerencia: D !!

Se me ocurrió una solución muy áspero, pero trabajando a este problema sin tener que hacer ningún tipo de codificación. Voy a explicar tanto la forma en que hice la columna de hoy y cómo trabajé en el que a una columna de retraso, becuase que la columna era un dolor para encontrar la manera de hacerlo así.

En primer lugar, hice una columna denominada "hoy" (¡oh!). A continuación hice una columna llamada "días de atraso". entonces abrí SharePoint Designer y creé un nuevo flujo de trabajo. Configurarlo para que se ejecute cada vez que un elemento se edita / modificada (tener en cuenta que apagué el control de versiones para esta lista, de lo contrario habría tenido que recurrir a la codificación de evitar un montón de datos inútiles se acumulan en nuestro servidor). Me puse las acciones para simplemente almacenar la fecha de modificación en una variable de flujo de trabajo, a continuación, cambiar el valor de la columna de hoy para esa variable. aunque la columna modificada es una fecha / hora y mi columna de hoy es sólo una fecha, se transfiere muy bien. entonces fijo el flujo de trabajo para hacer una pausa durante 2 horas. puede establecer esto a cualquier cantidad de tiempo que desea obviamente, sólo se cambiará el último momento posible para su columna de hoy para actualizar, es decir, 02 a.m. en mi caso.

en la columna de días de retraso. este es el código de ese tipo -

=IF([Due Date]>Today,"None",IF([Date Closed]=0,Today-[Due Date],IF([Due Date]>[Date Closed],"None",IF(Today>=[Date Closed],[Date Closed]-[Due Date],IF([Due Date]<Today,Today-[Due Date])))))

Esto muestra los días de atraso en forma de número de días, o si no está vencida, se muestra "Ninguno". Puede utilizar un formato de número o una cadena de formato, pero no es un formato de fecha. Bueno, espero que esto ayude a que se está ejecutando en este problema y no quieren tener que ahondar en la codificación.

EDIT: se me olvidó decir que en el código anterior para los días de la columna de retraso, pongo en que si hoy es más allá de la Fecha de cierre, para usar la Fecha de cierre menos la fecha de vencimiento en lugar de hoy, menos la fecha de vencimiento, para asegurar que el imposible de mantener cálculo se produce después de que un artículo haya sido cerrada. probablemente habría dado cuenta de que en el código, pero sentí que debía señalarlo por si acaso.

EDIT 2: El código que tenía antes de mi segunda edición de mi columna calculada no calcular los días de atraso correctamente después de un problema había sido marcado como "cerrado". Pongo en el código actualizado. La última parte del código no tiene sentido, ya que es la misma lógica que el principio, pero no funcionaba, así que no quería correr ningún riesgo! :)

Paz.

He utilizado el siguiente y no tuvo problemas.

Nombre de campo: Atrasado

Tipo de campo: Calculado

Tipo de datos devuelto: Sí / No

Fórmula: =AND([Due Date]<NOW(),Status<>"Completed",[Due Date]<>"")

Aquí es una solución:

Crea una columna de fecha llamada hoy. Utilice esta columna en su fórmula calculada (ignorar el hecho de que la fórmula devuelve un valor incorrecto). Después de que haya terminado con la fórmula, elimine la columna de la actualidad de su lista.

Por alguna razón, funciona de esta manera! Ahora Sharepoint trata la actualidad en su fórmula como la fecha de hoy.

Nota: Si usted decide que quiere cambiar la fórmula, hay que crear la columna de hoy de nuevo. De lo contrario, no reconocería hoy como una columna válida.

I Tried @ enfoque de Farzad y parece estar funcionando perfectamente. Yo quería hacer un recuento de encargo en días transcurridos de modo agregado una columna calculada que anteriormente estaba usando una diferencia entre el Fecha de Creación y Fecha de modificación de columnas, que sólo fue apareciendo cada vez que un usuario actualiza el cargo, muy a mi pesar.

Ahora tengo una fórmula que funciona como me gustaría y utiliza el Hoy columna, y aquí está para cualquier persona que quiera usarlo. También tengo una columna de estado sobre la base de los cuales se utiliza una base de en espera, y la fórmula restante se basa en la diferencia de la fecha Hoy -. Creado

=IF(Status="On Hold","On Hold",IF(AND(Today=Created,(DATEDIF(Created,Today,"D")=0)),"New",IF(AND(Today<>Created,(DATEDIF(Created,Today,"D")=0)),"New (updated)",IF(DATEDIF(Created,Today,"d")>3,"Need Update Immediately",IF(DATEDIF(Created,Today,"d")=1,"One day old",IF(DATEDIF(Created,Today,"d")=2,"Two days old",""))))))

Básicamente es sólo un montón de anidados si condiciones que conseguirme etiquetas en la base de la cual puedo añadir un grupo a mi modo de ver y filtrar los datos si es necesario. Espero que esto ayude a buscar una respuesta!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top