Cuando usa una columna de búsqueda en SharePoint, espera que muestre solo elementos válidos de la lista de origen. Pero a veces la columna de búsqueda muestra elementos que se han eliminado de la lista de origen. Esto puede causar confusión a los usuarios que ven datos antiguos o irrelevantes en formularios, vistas e informes. La causa principal es cómo SharePoint maneja la relación entre la columna de búsqueda y su lista de origen: almacena el ID del elemento, no el texto del elemento, y cuando se elimina el elemento de origen, el ID queda huérfano. Este artículo explica por qué ocurre esto y proporciona métodos paso a paso para eliminar u ocultar esas entradas huérfanas.
Puntos clave: Eliminación de valores de búsqueda huérfanos
- Configuración de lista > Columna de búsqueda > Aplicar comportamiento de relación: Establezca en “Eliminar en cascada” o “Restringir eliminación” para evitar que aparezcan ID huérfanos.
- Script de PowerShell para eliminar elementos huérfanos: Elimina elementos de la lista de destino que hacen referencia a elementos de origen eliminados.
- Búsqueda de columna de sitio sin aplicación: Hace que aparezcan elementos huérfanos; cambie a una columna de búsqueda específica de la lista para tener mejor control.
Por qué los elementos eliminados siguen apareciendo en una columna de búsqueda
Una columna de búsqueda en SharePoint no almacena el valor de texto del elemento de origen. En su lugar, almacena el ID entero interno del elemento en la lista de origen. Cuando elimina un elemento de la lista de origen, SharePoint no actualiza automáticamente la columna de búsqueda en la lista de destino. La columna de búsqueda todavía contiene el ID antiguo. Cuando SharePoint representa la columna de búsqueda, intenta encontrar el elemento de origen con ese ID. Si el elemento ya no existe, SharePoint devuelve el ID como un número simple, que parece una entrada en blanco o rota. En algunos casos, especialmente con columnas de sitio usadas como búsquedas, SharePoint puede almacenar en caché el valor de texto antiguo y seguir mostrándolo.
El comportamiento depende de cómo se creó la columna de búsqueda. Una columna de búsqueda creada directamente en una lista (ámbito de lista) puede tener configuraciones de aplicación de relaciones. Una columna de búsqueda creada como columna de sitio (ámbito de sitio) no admite la aplicación de relaciones. Es más probable que las búsquedas de columnas de sitio muestren elementos huérfanos porque no hay forma de indicar a SharePoint que elimine o restrinja el elemento de origen.
Aplicación de relaciones en búsquedas con ámbito de lista
Cuando crea una columna de búsqueda a nivel de lista, tiene tres opciones en “Aplicar comportamiento de relación”:
- Eliminar en cascada: Al eliminar un elemento de origen también se eliminan todos los elementos de la lista de destino que hacen referencia a él. Esto elimina por completo el valor de búsqueda huérfano.
- Restringir eliminación: SharePoint impide eliminar un elemento de origen si algún elemento de destino hace referencia a él. Esto mantiene limpia la columna de búsqueda.
- Ninguno: Sin aplicación. Al eliminar un elemento de origen se dejan ID huérfanos en la lista de destino. Este es el valor predeterminado para las columnas de sitio.
Pasos para corregir una columna de búsqueda que muestra elementos eliminados
Use el método que se ajuste a su situación. Si la columna de búsqueda se creó a nivel de lista, la solución más sencilla es cambiar la aplicación de relaciones. Si es una columna de sitio, debe usar PowerShell para limpiar los elementos huérfanos.
Método 1: Cambiar la aplicación de relaciones en una búsqueda con ámbito de lista
- Abra la configuración de la lista
Vaya a la lista que contiene la columna de búsqueda. Haga clic en el icono de engranaje en la esquina superior derecha y seleccione “Configuración de la lista”. - Localice la columna de búsqueda
En la sección “Columnas”, haga clic en el nombre de la columna de búsqueda que muestra elementos eliminados. - Cambie la aplicación de relaciones
Desplácese hacia abajo hasta la sección “Relación”. En “Aplicar comportamiento de relación”, seleccione “Eliminar en cascada” o “Restringir eliminación”. Haga clic en Aceptar. - Verifique el cambio
Vuelva a la vista de lista. Es posible que los elementos huérfanos sigan apareciendo en las filas existentes hasta que actualice manualmente la lista o vuelva a guardar esos elementos. Para la eliminación en cascada, debe eliminar el elemento de origen de nuevo para activar la limpieza.
Método 2: Eliminar elementos huérfanos con PowerShell (búsquedas de columnas de sitio)
Este método funciona para cualquier columna de búsqueda, pero es necesario cuando la búsqueda es una columna de sitio. Necesita tener instalado SharePoint Online Management Shell o PnP PowerShell.
- Conéctese a SharePoint Online
Abra PowerShell como administrador. EjecuteConnect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive. - Obtenga la lista de destino y la columna de búsqueda
Ejecute$list = Get-PnPList -Identity "YourTargetListName"y$field = Get-PnPField -List $list -Identity "YourLookupColumnName". - Busque elementos con valores de búsqueda huérfanos
Ejecute un script para recorrer todos los elementos de la lista de destino. Para cada elemento, compruebe si el valor del campo de búsqueda apunta a un ID válido en la lista de origen. Si el elemento de origen no existe, elimine el elemento de destino o borre el campo de búsqueda. Hay un ejemplo de script completo disponible en el sitio de documentación de Microsoft. - Elimine o borre los elementos huérfanos
UseRemove-PnPListItem -List $list -Identity $item.Idpara eliminar el elemento de destino, o establezca el campo de búsqueda en null y actualice el elemento.
Método 3: Volver a crear la columna de búsqueda como una columna con ámbito de lista
Si la columna de búsqueda es una columna de sitio, no puede aplicar el comportamiento de relación. La solución permanente es eliminar la búsqueda de columna de sitio y crear una nueva columna de búsqueda con ámbito de lista con la misma configuración.
- Elimine la búsqueda de columna de sitio de la lista
En la configuración de la lista, haga clic en la columna de búsqueda y seleccione “Eliminar”. Confirme la eliminación. - Cree una nueva columna de búsqueda con ámbito de lista
Haga clic en “Crear columna” en la configuración de la lista. Elija “Búsqueda” como tipo de columna. Establezca la lista de origen y la columna de origen. En “Relación”, seleccione “Eliminar en cascada” o “Restringir eliminación”. - Asigne los datos antiguos a la nueva columna
Use PowerShell o una edición rápida en la vista de hoja de datos para copiar los valores de búsqueda de la columna antigua a la nueva. Este paso solo es necesario si necesita conservar los datos existentes.
Si la columna de búsqueda sigue mostrando elementos eliminados después de la corrección
La columna de búsqueda muestra texto antiguo incluso después de restaurar el elemento de origen
SharePoint almacena en caché el valor de texto de una columna de búsqueda. Si restaura un elemento de origen eliminado, la columna de búsqueda puede seguir mostrando el texto antiguo hasta 24 horas. Para forzar una actualización inmediata, abra el elemento de destino en modo de edición, borre el campo de búsqueda, guarde, vuelva a seleccionar el valor correcto y guarde de nuevo.
Los elementos huérfanos aparecen en las vistas pero no en la lista
Esto ocurre cuando la columna de búsqueda usa una columna de sitio y la vista tiene un filtro que oculta los elementos válidos. Compruebe la configuración de la vista y elimine cualquier filtro que pueda estar ocultando los valores de búsqueda válidos. Luego use PowerShell para eliminar los elementos huérfanos.
Eliminar el elemento de origen no elimina en cascada
La eliminación en cascada solo funciona si la columna de búsqueda tiene ámbito de lista y la aplicación está establecida en “Eliminar en cascada”. Si establece la aplicación después de que ya existan los ID huérfanos, la eliminación en cascada no se aplicará retroactivamente. Debe eliminar el elemento de origen de nuevo después de cambiar la aplicación para activar la limpieza.
| Elemento | Búsqueda con ámbito de lista | Búsqueda de columna de sitio |
|---|---|---|
| Aplicación de relaciones | Eliminar en cascada, Restringir eliminación o Ninguno | Solo Ninguno |
| Muestra elementos huérfanos después de eliminar el origen | Solo si se establece en Ninguno | Siempre |
| Método de corrección | Cambiar la configuración de aplicación | Limpieza con PowerShell o volver a crear la columna |
| Riesgo de pérdida de datos | Bajo si se usa Restringir eliminación | Alto si se usa eliminación en cascada en una búsqueda de columna de sitio |
Ahora puede identificar por qué una columna de búsqueda muestra elementos eliminados y aplicar la corrección correcta. Para las búsquedas con ámbito de lista, cambie la aplicación de relaciones a Eliminar en cascada o Restringir eliminación. Para las búsquedas de columnas de sitio, use PowerShell para eliminar los elementos huérfanos o vuelva a crear la columna como una búsqueda con ámbito de lista. Para evitar este problema en el futuro, cree siempre columnas de búsqueda a nivel de lista y establezca la aplicación en Restringir eliminación. Esto mantiene sus datos limpios sin eliminar automáticamente los elementos relacionados.