none
Conflicto al guardar en una lista de sharepoint RRS feed

  • Pregunta

  • En una lista simple adjuntamos un documento word y rellenamos el campo titulo. Guardamos y todo va bien.

    Volvemos a acceder al elemento y pulsamos sobre el word con lo que nos abre el word y lo editamos. Guardamos los cambios en el word y seguidamente guardamos los cambios en el elemento donde se encuentra adjunto el word. En este punto aparece un error indicando que los cambios entran en conflicto con los realizados por otro usuario.

     ¿Es esto normal?. No hay webparts ni nada extraño. Solo una lista creada a partir de la plantilla de lista personalizada y sin añadir campos, solo los que tiene por defecto (como el titulo).

    ¿Se puede solventar el problema?

    martes, 13 de diciembre de 2011 13:43

Respuestas

  • Hola,

    Acabo de encontrar un workaround más sencillo que el de los manejadores de eventos que seguramente no nos permitiese solventar el problema de una forma sencilla...la solución pasa por personalizar el formulario de edición del formulario de lista y aquí las opciones son:

    • Usando SharePoint Designer (ten en cuenta que toda personalización que hagas en Designer tendrás que repetirla en los distintos entornos en los que lo necesites), puedes crear un nuevo formulario de edición y marcarlo como formulario por defecto. Lo interesante de este nuevo formulario por defecto es que te trata el elemento de lista dentro de una DataFormWebPart, de forma que es muy personalizable y puedes personalizar el campo de Attachments...y aquí es dónde tenemos la solución, el campo de Attachment es un control de tipo <SharePoint:FormField> que tiene una maravillosa propiedad llamada ControlMode que admite varios valores entre ellos "New" de manera que si lo configuras en este modo, cuando el usuario edita el elemento no le aparece el attachment, y sólo tiene la opcion de modificar las propiedades y adjuntar nuevos attachments...la pega de esta opción es que no puedes borrar attachments cuando estás editando un elemento.
    • La segunda opción pasaría por encajar en ese formulario de edición personalizado un control propio (una WebPart) que permita editar la información del elemento de lista y que en la parte de Attachments te los muestre como elementos de solo lectura que sólo puedan ser borrados.

    Como ves, no veo una solución "perfecta" para lo que necesitas...para este tema yo no abriría un caso de soporte de Microsoft ya que no creo que lo consideren como algo vital a cambiar.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    • Propuesto como respuesta Uriel Almendra martes, 9 de abril de 2013 22:18
    • Marcado como respuesta Uriel Almendra martes, 9 de abril de 2013 22:18
    jueves, 15 de diciembre de 2011 9:53

Todas las respuestas

  • Hola,

    Puede ser normal por temas de caché.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    martes, 13 de diciembre de 2011 14:17
  • Gracias por la respuesta Juan Carlos pero esto nos esta pasando en todo el portal con todas las listas, es decir, en cualquier lista en la que adjunto un word y después se pretende modificar el word sobre la lista salta la excepcion que te adjunto mas abajo.

    ¿Que se puede hacer para solventarlo?

    Gracias.

     

    Server Error in '/' Application.

     

    Conflicto al guardar
    Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: Microsoft.SharePoint.SPException: Conflicto al guardar
    Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


    Stack Trace:

    [SPException: Conflicto al guardar
             Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.]
       Microsoft.SharePoint.WebControls.SaveButton.SaveItem(SPContext itemContext, Boolean uploadMode, String checkInComment) +20032623
       Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e) +1167
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
    
    miércoles, 14 de diciembre de 2011 7:31
  • Hola,

    Puede ser normal por temas de caché.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    Gracias por la respuesta Juan Carlos pero esto nos esta pasando en todo el portal con todas las listas, es decir, en cualquier lista en la que adjunto un word y después se pretende modificar el word sobre la lista salta la excepcion que te adjunto mas abajo.

    ¿Que se puede hacer para solventarlo?

    Gracias.

     

    Server Error in '/' Application.

     

    Conflicto al guardar
    Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: Microsoft.SharePoint.SPException: Conflicto al guardar
    Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


    Stack Trace:

    [SPException: Conflicto al guardar
             Sus cambios entran en conflicto con los realizados por otro usuario. Si desea que se apliquen sus cambios, haga clic en Atrás en el explorador web, actualice la página y vuelva a enviarlos.]
       Microsoft.SharePoint.WebControls.SaveButton.SaveItem(SPContext itemContext, Boolean uploadMode, String checkInComment) +20032623
       Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e) +1167
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
    

    miércoles, 14 de diciembre de 2011 8:47
  • Hola,

    Me parece muy raro el error...¿seguro que no tienes desplegado algún otro elemento que esté haciendo algo en el elemento de lista cuando se va a actualizar? Estoy pensando en un manejador de eventos. En concreto me refiero a esto: http://sharepoint.stackexchange.com/questions/11062/attach-a-file-to-the-list-item

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    jueves, 15 de diciembre de 2011 7:06
  • Juan Carlos,

    como te comenté esto nos pasa en todas las listas del portal, no en una concreta. No estamos usando código, solo utilizamos la lista que aporta sharepoint. Para hacer la prueba estoy usando una lista en un sitio de prueba y solo es una lista sin flujos ni manejador de eventos ni nada que pueda afectar. No se si tu tienes un entorno donde puedas hacer la prueba. Solo necesitas crear una lista (no hace falta crear campo solo con el titulo nos vale). Luego añades un elemento a la lista y le adjuntas un documento y guardas los cambios. Despues vuelves a editar el elemento y pulsas en el enlace al documento adjunto y cuando se abra el word haces un cambio y lo guardas y luego pulsas otra vez en guardar en el elemento de la lista. En este punto es cuando me da el error.  Tenemos sharepoint 2010 sin SP1 (aunque nos han dicho de otra empresa que con SP1 tambien les pasa el error).

    Si me das una opcion te puedo pasar la plantilla de la lista con la que estoy probando. Aqui te dejo una imagen de lo que me pasa. La prueba es sencilla.

     

     

    Gracias.


    • Editado navarro.jc jueves, 15 de diciembre de 2011 8:02
    jueves, 15 de diciembre de 2011 7:25
  • Hola,

    Visto y comprobado en mi caso en un sitio de SharePoint Online en Office 365...aquí hay una ligera diferencia, el mensaje de error es más amigable (lo que no deja de ser curioso porque por debajo tenemos un SharePoint 2010 SP1). En cualquier caso, te digo lo que pienso que está pasando:

    • Cuando editas el elemento de la lista, se pone en marcha el ciclo de eventos propio de SharePoint: ItemUpdating y luego ItemUpdated (para el caso de actualizar el documento).
    • Cuando haces clic sobre el adjunto y lo modificas, es como si se estuviera haciendo lo mismo sobre el documento de manera que SharePoint interpreta que se da un conflicto ya que se están intentando hacer dos ediciones simúltaneas del documento, pero debería primar la realizada inicialmente por lo que tras guardar el documento y tratar de guardar el elemento se está produciendo un error.

    La pregunta entonces es: ¿se trata de un bug? Yo diría que no, sino que lo veo lógico sobre todo pensando que quien edita o modifica el adjunto pueda ser otro usuario. Cuál es el funcionamiento normal con adjuntos de documentos:

    • Crear/actualizar un elemento de lista.
    • Cargar los adjuntos.

    Lo de modificar el propio adjunto en principio no es para lo que está pensado el poder adjuntar archivos al documento, para esto ya tienes las bibliotecas de documentos en las que puedes tener los metadatos que neesites y en la que el documento en sí es el elemento de lista (una biblioteca no deja de ser una lista especial).

    ¿Se podría evitar el error que te está dando si es absolutamente imprescindible esta capacidad por mis necesidades de negocio? Si, jugando con manejadores de eventos de SharePoint.

     

    Un saludo
    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    jueves, 15 de diciembre de 2011 8:45
  • Gracias Juan Carlos,

     

    al menos me relaja pensar que esto no es problema de nuestro entorno sino que pasa en general. Yo no voy a valorar se mi parece un bug o no, en cualquier caso creo que tenemos posibilidad de abrir un caso a Microsoft así que dependerá de mis superiores para ello. En particular a mi me afecta como solventar esto de la mejor forma posible. Actualmente como tu bien dices la necesidad del negocio me hace tener que usar este tipo de lista y dar la posibilidad de modificar, en cualquier caso aunque la necesidad del negocio no fuese necesario no se como hacer para no permitir que un usuario que adjunta un documento no pueda modificarlo. Esta fue mui primera opcion para solventar el problema, el no dejar que el usuario modifique el documento pero no se como se podría hacer y con eso conseguiria obligar al usuario a modificar el documento de forma normal en su equipo y luego tendria que eliminar el adjunto y volver a incluir el nuevo modificado.

     

    1.- No se como se hace o si se puede hacer la opcion que te indico.

    2.- No si a que te refieres con tu solución. No tenemos mucho control con sharepoint y usamos lo mas comun. No se como jugar con manejadores de eventos. Me puedes ayudar en esto si es la solución que tu consideras mejor?

     

    3.- Que opinas de abrir un caso a Microsoft para este problema? . No tenemos SP1, es decir, ¿me van a obligar a estar actualizado al maximo para ver el error (tu ya has visto que pasa aun con SP1)?

     

    Gracias.

    jueves, 15 de diciembre de 2011 9:07
  • Hola,

    Acabo de encontrar un workaround más sencillo que el de los manejadores de eventos que seguramente no nos permitiese solventar el problema de una forma sencilla...la solución pasa por personalizar el formulario de edición del formulario de lista y aquí las opciones son:

    • Usando SharePoint Designer (ten en cuenta que toda personalización que hagas en Designer tendrás que repetirla en los distintos entornos en los que lo necesites), puedes crear un nuevo formulario de edición y marcarlo como formulario por defecto. Lo interesante de este nuevo formulario por defecto es que te trata el elemento de lista dentro de una DataFormWebPart, de forma que es muy personalizable y puedes personalizar el campo de Attachments...y aquí es dónde tenemos la solución, el campo de Attachment es un control de tipo <SharePoint:FormField> que tiene una maravillosa propiedad llamada ControlMode que admite varios valores entre ellos "New" de manera que si lo configuras en este modo, cuando el usuario edita el elemento no le aparece el attachment, y sólo tiene la opcion de modificar las propiedades y adjuntar nuevos attachments...la pega de esta opción es que no puedes borrar attachments cuando estás editando un elemento.
    • La segunda opción pasaría por encajar en ese formulario de edición personalizado un control propio (una WebPart) que permita editar la información del elemento de lista y que en la parte de Attachments te los muestre como elementos de solo lectura que sólo puedan ser borrados.

    Como ves, no veo una solución "perfecta" para lo que necesitas...para este tema yo no abriría un caso de soporte de Microsoft ya que no creo que lo consideren como algo vital a cambiar.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    • Propuesto como respuesta Uriel Almendra martes, 9 de abril de 2013 22:18
    • Marcado como respuesta Uriel Almendra martes, 9 de abril de 2013 22:18
    jueves, 15 de diciembre de 2011 9:53
  • Gracias Juan Carlos,

    he probado la primera opción que me das y como opcion para ocultar el problema es la mejor y sencilla.

    Lo que pasa es que la consecuencia de no poder eleminar los adjuntos no me gusta porque capamos esta funcionalidad que es necesaria.

    He estado probando varias cosas y me he dado cuenta que si creo un formulario de edicion y no hago ningun cambio en la propiedad que me dices. Dejo todo como está, el problema cambia un poco.

    Deja eliminar el adjunto.

    Deja modificar los campos del formulario.

    Deja modificar el documento adjunto.

    El problema aparcece si modificamos el documetno adjunto a la vez que alguno de los campos del formulario. Con el editform original el error se mostraba cuando modificaba el adjunto independientemente de si modificaba algun campo o no del formulario. Con esta opcion de crear el formulario y ponerlo como predeterminado si permite modifcar el adjunto siempre que no modifique a la vez alguno de los campos. Con esta opción salvamos un poco el problema y permitimos eliminar adjuntos.

    Muchas gracias.

    • Editado navarro.jc jueves, 15 de diciembre de 2011 12:19
    jueves, 15 de diciembre de 2011 12:18
  • Hola,

    Me alegro que al menos os haya servido como workaround válido...respecto a la mejor solución, he estado pensando un poco y a la hora de desarrollar algo no iría por un manejador como comentaba inicialmente, sino por un HTTP Module...esto no es más que un ensamblado que se despliega en SharePoint y que controla como se accede a la información. Se podría crear un HTTP Module que cuando detecte que se accede al Attachment en tiempo de edición del item de lista, simplemente redirija al usuario a una página en la que se le indique que no es posible modificar el attachment cuando se modifica el item de lista.

    Un saludo


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    jueves, 15 de diciembre de 2011 15:02