Pregunta

Tengo un formulario Infopath establecido como el tipo de contenido principal en una biblioteca de formulario que funciona bien. El formulario es una plantilla administrada cargada/activada a través del administrador central, y contiene una serie de campos promovidos.

Ahora agregué otro campo al formulario en Infopath (y agregué un control en el formulario, para la visibilidad) y configuré ese campo para promover en la biblioteca (confirmado a través de ambos Tools -> Form Options -> Property Promotion, y la lista al publicar) y publicar y cargar el formulario (usando el administrador central).

Cuando abro el formulario en SharePoint (creando un nuevo elemento en la biblioteca de formulario, o abriendo un elemento existente en esa biblioteca), veo el control de mi nuevo campo y puedo almacenar datos en el campo. Sin embargo, el campo no se promueve, ya que no puedo verlo en ninguna de las siguientes cosas:

  • la página de propiedades del elemento (ver/editar)
  • la página Crear/Vista de modificación
  • la lista de columnas en la página de configuración de la biblioteca de formulario
  • La lista de columnas del tipo de contenido para el formulario, en la página de configuración de la biblioteca de formulario

He intentado todo lo que se me ocurra para que este campo se haya promovido para eliminar toda la biblioteca y comenzar de nuevo. ¿Alguien más se ha encontrado con este problema? ¿Cómo puedo promover un nuevo campo en una biblioteca existente?

¿Fue útil?

Solución

Bueno, he respondido a mi propia pregunta ...

Lo que terminé haciendo fue finalmente:

  1. Eliminó toda la biblioteca de formulario
  2. Creó una nueva copia/versión de la biblioteca de formulario y le agregó el tipo de contenido del formulario a partir de la galería de tipos de contenido del sitio

Esto no arregló nada. No hagas eso.

Mi siguiente paso probablemente fue excesivo, pero yo:

  1. Eliminó toda la biblioteca de formulario
  2. Eliminó el tipo de contenido del formulario de la galería de tipos de contenido del sitio
  3. Eliminó el campo de la forma infopata por completo
  4. Publicó el formulario (menos campo) y lo subió en el administrador central
  5. Reenvié el campo en Infopath y publicó, promoviendo nuevamente el campo de la misma manera que tenía antes, y lo subí a través de Central Admin
  6. Intenté agregar el tipo de contenido del formulario a una nueva copia/versión de la biblioteca de formulario (el tipo de contenido no estaba disponible)
  7. Desactivó y reactivó la función para el formulario en la configuración de la colección del sitio
  8. Se agregó el tipo de contenido del formulario a la nueva biblioteca de formulario

¡Y eso funcionó!

Mi teoría es que la desactivación y reactivación de la característica de la forma infopath obligará a los campos promovidos a actualizarse, y que hasta que haya hecho que el tipo de contenido aún use los campos viejos (de modo que nada que haga en el El nivel de la biblioteca de formulario significará algo). Pero esa sería una operación muy destructiva si está trabajando en datos de producción, y espero que todavía haya una forma más fácil y "más segura" de actualizar las propiedades/campos/columnas promovidas de un formulario Infopath publicado en SharePoint.

Pero probablemente no lo haya.

Otros consejos

Solo desactivar y luego reactivar la característica fue suficiente para mí. Tampoco parecía ser destructivo. Tal vez dependería de lo que hay en su característica, en mi caso la forma de Infopath y nada más.

He resuelto (usado en solución) este problema de PowerShell.
Necesitas saber:
1) ID de campo en el tipo de contenido
2) XPATH para el campo en forma de Infopath

A continuación tienes que usar este script de PowerShell:

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
$web = Get-SPWeb "https://intranet.company.com"
$contentTypeName = "Content Type Name"
$ct = $web.ContentTypes[$contentTypeName]

# Content Type Fields
# Field
$fieldId = "1209bb86-645b-4e56-aea2-265a325a98af"
$fieldLinks = $ct.FieldLinks | Where-Object {$_.Id -eq $fieldId}
$fieldLinks.ReadOnly = $true
$fieldLinks.XPath = "/my:Fields/my:FieldGroup/my:Field"

$ct.Update($true)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top