Las columnas publicadas desde campos de InfoPath se vuelven a crear cuando se vuelve a publicar la misma plantilla de formulario de InfoPath

Número de KB original: 2554288

Síntomas

Considere el caso siguiente:

  • Cree una plantilla de formulario de Office InfoPath y publíquela en una biblioteca de documentos en SharePoint. Durante la publicación, se seleccionan determinados campos de InfoPath que se van a publicar como columnas en la biblioteca de documentos. Después de publicar la plantilla de formulario, decide publicar la misma plantilla de formulario y los mismos campos en una biblioteca de documentos diferente en el mismo sitio de SharePoint.

  • Más adelante, implemente un cambio en la plantilla de formulario de InfoPath y vuelva a publicar la plantilla de formulario en ambas bibliotecas de documentos en el mismo orden que hizo durante la primera publicación.

En este escenario, se vuelven a crear todas las columnas de las bibliotecas de documentos publicadas desde campos de InfoPath.

Durante este procedimiento, también se actualiza el nombre interno de las columnas recreadas en las bibliotecas de documentos de SharePoint, es decir, se sufijo un valor numérico a partir de 0 al nombre de columna anterior. Por ejemplo, una columna denominada LastName cambia a LastName0.

La recreación de las columnas es un proceso de dos pasos:

  1. La columna se agrega de nuevo a la biblioteca de SharePoint.
  2. Se quitan las columnas que no están asociadas a los campos de InfoPath.

Causa

InfoPath almacena la lista de campos que se publican en bibliotecas de documentos de SharePoint en un manifiesto local junto con las columnas a las que están asociados estos campos. Esto se logra haciendo referencia al identificador de columna en SharePoint (un valor GUID único) con el campo InfoPath.

Al publicar la plantilla de formulario de InfoPath actualizada en una biblioteca de documentos de SharePoint la segunda vez, InfoPath comprueba si la columna con el identificador asociado ya existe. Si no encuentra la columna correspondiente, se crea una nueva columna en la biblioteca de documentos. Las columnas que no están asociadas a ninguno de los campos de InfoPath se eliminan de la biblioteca de documentos.

Las siguientes operaciones se realizan en segundo plano al publicar la misma plantilla de formulario en varias bibliotecas de SharePoint:

  • Al publicar la plantilla de formulario en la primera biblioteca la primera vez, cada columna publicada se crea y está asociada al campo infoPath correspondiente.

  • Al publicar la plantilla de formulario en la segunda biblioteca la primera vez, InfoPath no encuentra las columnas asociadas con los identificadores almacenados y, por tanto, crea nuevas columnas. A continuación, asocia el nuevo identificador de columna con el campo InfoPath correspondiente.

  • Al publicar la plantilla de formulario en la primera biblioteca la segunda vez, InfoPath no encuentra las columnas asociadas con los identificadores almacenados, ya que los GUID de la segunda biblioteca están asociados actualmente a los campos. Por lo tanto, InfoPath crea nuevas columnas que, a su vez, obtienen nuevos identificadores y están asociados a los campos de InfoPath.

  • En este proceso, hay muchas columnas creadas que no están asociadas a ninguno de los campos de InfoPath y se quitan de la biblioteca de documentos.

  • Este comportamiento se repite al publicar la plantilla de formulario en la segunda biblioteca la segunda vez.

Nota:

Este problema no se produce si la plantilla de formulario de InfoPath se publica como un tipo de contenido de sitio o los campos de InfoPath se publican como columnas de sitio en SharePoint.

Resolución

Hay un par de métodos para evitar que esto suceda:

  • Cree una columna de sitio para cada campo de InfoPath que se publicará en el sitio de SharePoint y seleccione las columnas de sitio creadas previamente al publicar la plantilla de formulario de InfoPath en ambas bibliotecas.

    Como el identificador de las columnas del sitio no cambiará, InfoPath no tiene que volver a crear las columnas existentes.

  • Cree una copia independiente de la plantilla de formulario de InfoPath, una para cada una de las bibliotecas de documentos de SharePoint. Esto garantizará que InfoPath no vuelva a crear las columnas existentes, ya que los identificadores de columna no cambiarán.

    La desventaja de este enfoque es que necesita implementar todos los cambios en todas las copias de plantilla de formulario que están en uso.

Nota:

En general, en lugar de publicar la plantilla de formulario de InfoPath dos veces, el enfoque recomendado es publicar la plantilla de formulario como un tipo de contenido de sitio y asociar el tipo de contenido del sitio con las bibliotecas de documentos de SharePoint.

Información adicional

Para obtener más información, vea Agregar, quitar o modificar columnas de biblioteca de SharePoint o columnas de sitio.