Las columnas de taxonomía utilizan por debajo una referencia
a la lista “TaxonomyHiddenList”. Durante
una migración o una restauración de contenido podemos perder esta referencia
provocando un error general al visualizar la columna o intentar utilizarla
desde cualquiera de las vistas de una lista o biblioteca, encontrado en el log
entradas del tipo:
System.Runtime.InteropServices.COMException:
Esta lista no existe. La página
seleccionada contiene una lista que no existe. Es posible que otro usuario la
haya eliminado.
Error while executing web part:
Microsoft.SharePoint.SPException: Esta lista no existe. La página seleccionada contiene una
lista que no existe. Es posible que otro usuario la haya eliminado.
Si analizamos los logs por encima de estos errores
encontraremos una traza con el ID de la lista utilizada:
Unable to open Lookup list
'{60ef64a9-fc75-47c0-b2cf-f2b59001eea3}'.[Error was 0x81020026]
Para solucionar el problema debemos actualizar el esquema de
la columna de taxonomía con el ID de la lista TaxonomyHiddenList y el ID del sitio
raíz adecuados. El esquema de una columna lo encontraremos en la propiedad “SchemaXml” aunque si trabajamos con
columnas localizadas utilizaremos la propiedad “SchemaXmlWithResourceTokens”.
Comparto con vosotros un script con el que podréis
actualizar las referencias de cualquier columna de taxonomía https://gallery.technet.microsoft.com/Unable-to-open-lookup-list-e0c59b0b
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue)
-eq $null)
{
Add-PsSnapin Microsoft.SharePoint.PowerShell
}
function Fix-UnableToOpenLookupList( [Parameter(Mandatory=$true)][string] $siteCollectionURL, [Parameter(Mandatory=$true)][string] $internalFieldName)
{
$site = get-spsite $siteCollectionURL
$web = $site.RootWeb
$field = $web.Fields.GetFieldByInternalName($internalFieldName)
if($field -eq $null)
{
Write-Host -ForegroundColor
Red "ERROR:
Missing $($internalFieldName) column."
}
else
{
$txHiddenList =
$web.Lists["TaxonomyHiddenList"]
if($txHiddenList
-eq $null)
{
Write-Host -ForegroundColor
Red "ERROR:
Missing TaxonomyHiddenList."
}
else
{
$strXmlSchema =
"
|
$xmlSchema =
[xml]$strXmlSchema
$xmlfield =
$xmlSchema.r.SelectSingleNode("Field")
$xmlfield.List
= "{$($txHiddenList.ID)}"
$xmlfield.WebID
= "{$($web.ID)}"
$strXmlSchema = $xmlfield.OuterXml
$field.SchemaXml =
$strXmlSchema
$field.Update($true)
Write-Host -ForegroundColor
Green "Done."
}
}
}
Un ejemplo de un esquema de columna de tipo Taxonomía sería
el siguiente XML.
WebId="3c8e614a-be52-4210-93ac-8b40d3a85227"
ShowField="Term$Resources:core,Language;"
StaticName="EstimationType"
Group="$Resources:EPContentManagement,EPGroupName"
ID="{b04c8f3f-cbbf-4fdc-b646-639377c1395a}"
SourceID="{5ec29463-9b4b-403d-b6c1-958d526382b7}"
Name="EstimationType" Mult="FALSE" Version="6" Required="FALSE" EnforceUniqueValues="FALSE" ShowInEditForm="FALSE" ColName="int3" RowOrdinal="0">
" p4:type="q1:string" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">7f76724b-947d-4aaf-a042-fcbe5a247852>
No hay comentarios:
Publicar un comentario