Buenas,

En el post de hoy queríamos tratar un asunto curioso, que nos ocurrió hace poco. En un incidente de soporte, teniamos un cliente con varios usuarios que no podían acceder a su página de “Mis Tareas” en PWA. 

Al intentar acceder a dicha página (PWA \ Tareas) se recibía un mensaje indicando que no se podía acceder a a la vista, como se indica en la captura de pantalla a continuación:

 

20130123-153034-0001

 

En los logs ULS configurados en modo detallado, podíamos leer lo siguiente:

 

Exception occurred in method Microsoft.Office.Project.Server.BusinessLayer.Statusing.StatusingGetMyWorkForGridJson System.IO.InvalidDataException: Found invalid data while decoding. at Microsoft.Office.Project.Conversion.TextConverter.set_DaysPerMonth(Int32 value) at Microsoft.Office.Project.Server.BusinessLayer.MyWorkQueryInfo.GetTextConvForRecord(DataRow row) at Microsoft.Office.Project.Server.Utility.JsGridPopulationManager.<>c__DisplayClass94.<ConstructGridFieldLocalizer>b__8d(DataRow row, Object dataValue) at Microsoft.SharePoint.JSGrid.GridSerializer.LocalizeField(DataRow dr, GridField field, Object dataValue) at Microsoft.SharePoint.JSGrid.GridSerializer.CreateLocalizedData(IEnumerable`1 unlocalizedSlicedRows) at Microsoft.SharePoint.JSGrid.GridSerializer.Bui......ldOutput() at Microsoft.SharePoint.JSGrid.GridSerializer.ToJson(Serializer s) at Microsoft.SharePoint.JsonUtilities.Serializer.SerializeToJson(Object o) at Microsoft.Office.Project.Server.BusinessLayer.Statusing.GetMyWorkForGridJson(JsGridSerializerArguments gridSerializerArgs, String gridChangesJson, String projectAssignmentsMap, Guid viewUid, String timephasedStart, String timephasedEnd, Byte pane, Int32 durationType, Int32 workType, Int32 dateFormat, Boolean clearPersistedProperties, Nullable`1 rowFilterType) at Microsoft.Office.Project.Server.Wcf.Implementation.PWAImpl.StatusingGetMyWorkForGridJson(JsGridSerializerArguments gridSerializerArgs, String gridChangesJson, String projectAssignmentsMap, Guid viewUid, String timephasedStart, String timephasedEnd, Byte pane, Int......32 durationType, Int32 workType, Int32 dateFormat, Boolean clearPersistedProperties, Nullable`1 rowFilterType)

 

Sin entrar demasiado en consideraciones de código, o cómo localizamos la causa del problema, indicaros que el problema es debido a haber tenido configurado el número de días al mes para este proyecto a “0”

20130123-152842-0001

 

Una manera de localizar si tenemos algún proyecto con esta característica es ejecutando la siguiente consulta SQL:

SELECT PROJ_UID, PROJ_OPT_DAYS_PER_MONTH FROM MSP_PROJECTS WHERE PROJ_OPT_DAYS_PER_MONTH = 0

Si no nos sale ningún resultado, podemos estar tranquilos, pero si tenemos alguno, lo recomendable será abrir dicho/s proyecto/s, ir a las opciones, y en “Programación”, indicar un valor distinto de cero para el concepto de “días al mes”, y guardar y publicar dicho proyecto. Os pido disculpas por ofreceros la captura de pantalla en inglés, pero es el idioma que tenía en la máquina de pruebas donde he estado reproduciendo esto.

 

Bueno, espero os resulte de interés, y pueda ayudaros en el futuro, en el caso de que os ocurra un problema similar.

 

Un saludo

 

Jorge Puig