archivos mensuales: Noviembre 2007

MOSS dice mi nombre de columna es reservado o en uso … Pero no es

ACTUALIZACIÓN 12/04/07: Ver Este Microsoft KB (http://support.microsoft.com/kb/923589) para obtener información relacionada.

Realmente, resulta es, pero tricksy MOSS tuvo que hacen difícil.

Mi cliente hace algún trabajo de desarrollo en su sitio MOSS durante el fin de semana. Es un poco una confusión en cuanto a lo que realmente hizo, pero el resultado final es este:

  • Intenta agregar una columna de sitio llamada "cantidad" y respuestas MOSS: "El nombre de la columna que escribiste está ya en uso o reservados. Elegir otro nombre."
  • Intenta agregar a otro ambiente y que funciona. Por lo tanto, "Cantidad" No es un nombre reservado.
  • Intenta encontrar una columna de sitio existente denominada "cantidad" en esa colección de sitio. Él no puede encontrar.

Hice algunos investigación, incluso algunos codificación y, encerado filosófico y finalmente encontró que una columna denominada cantidad hizo, En realidad, Existen. Fue en el "_Hidden" Grupo. Por lo tanto, No hemos podido encontrar mediante la interfaz de usuario de SharePoint.

¿Cómo llegó allí? No sé, Pero tengo una teoría (o como mi esposa lo llamaría, "blah blah blah"). En algún lugar a lo largo de la línea, un plantilla de cuarenta fabulosa fue añadido y activado probablemente en un sitio en la colección de sitios. Que luego fue desactivado (o el sitio retirado). La columna de sitio, Sin embargo, quedó en el "_Hidden" Grupo. Si alguien sabe mejor, por favor, házmelo saber vía Correo electrónico o por correo en los comentarios.

SharePoint le estaba diciendo la verdad. Apenas cabe señalar que ese mensaje no es tan útil como podría ser. Sería bueno ver eso bifurcación de mensaje en dos mensajes diferentes en el futuro: 1) Dicen que está reservado el nombre de columna o no es. 2) Si no está reservada, Mostrar el sitio, o por lo menos el grupo, donde ya se utiliza el nombre de columna.

</final>

Presentar los datos de OM a través de una lista personalizada (o, Sin embargo otro datos de OM Displayor [como YACC, pero diferentes])

Hoy en día, Pasé un puñado de horas rastreando la causa detrás del mensaje "el nombre de la columna que escribiste ya está en uso o reservados. Elegir otro nombre."

La columna en cuestión podría crearse, elimina y vuelve a crear en otro entorno, así que sabía que no era un nombre reservado. Sin embargo, Simplemente no encontré la columna en cualquier lugar mediante la interfaz de usuario de SharePoint estándar en cualquier sitio en la colección de sitios.

Envié a Foros MSDN aquí y el Indomable Andrew Woodward me apuntaban en la dirección de los datos subyacentes de modelo de objeto.

Me fui a CodePlex para encontrar algunas herramientas que me ayudaría a asomarse a los datos subyacentes de OM y ayudarme a localizar el problema.

Intenté varias herramientas y eran muy chulo e interesante pero al final, la interfaz de usuario no era lo suficientemente bueno para mi propósito. No estoy criticando por cualquier medio, Pero claramente los matriceros no tienen mi problema en mente cuando crearon su interfaz de usuario :). Mayoría de las personas parece estar invirtiendo una buena cantidad de tiempo y esfuerzo en la creación de estaciones de trabajo / aplicaciones cliente que proporcionan vistas de árbol, Haga clic en menús contextuales, etc.. Estos son agradables y todos, Pero es mucho trabajo para crear una experiencia de usuario de top-of-the-line que también es muy flexible.

Realmente necesitaba una respuesta a este problema. Se me ocurrió si todas las columnas de sitio podría tener en la colección de sitios en una lista personalizada, Yo podría filtrar, ordenar y crear vistas que me ayudara a encontrar esta columna supuestamente existente (que lo hizo, BTW). Fui por delante y lo y una o dos horas más tarde, tenían todas las columnas de mi sitio cargado en una lista personalizada con agrupación, clasificación y así sucesivamente. Encontré mi respuesta cinco minutos más tarde.

Y si asumo con éxito sobre el mundo, Creo que se decreto que todos los proveedores de herramientas de SharePoint deben considerar seriamente superficie sus datos de modelo de objeto en una lista personalizada. De esa manera, Yo tengo el poder para buscar alguna manera quiero (limitada, Claro, por las características estándar de sharepoint).

Acción personalizada de SharePoint Designer flujo de trabajo — Observación acerca de <Tipo de diseñador FieldBind =”StringBuilder” … />

Sólo una observación rápida que hay una diferencia muy importante entre estas dos definiciones:

<Campo FieldBind = "InParam1" DesignerType = "StringBuilder" ID = "2" Texto = "Parámetro de entrada # 1" />

frente:

<Campo FieldBind = "InParam1" ID = "2" Texto = "Parámetro de entrada # 1" />

El primero muestra como este en el SPD:

imagen

mientras que el último muestra como este:

imagen

No estoy seguro de lo útil que estas capturas de pantalla son más que pongo en el esfuerzo por hacer que lo que hay que verlas 🙂

La observación es esto: StringBuilder permite crear una cadena (Obviamente) mezclando los literales de cadena y datos de flujo de trabajo (a través de la "Añadir búsqueda" botón en la esquina inferior izquierda). Cuando se utiliza el botón de agregar consulta, inserta un token en forma"[%token %]". Cuando SharePoint invoca la acción personalizada, (Código de C# en mi caso), SharePoint pasa el testigo de sí mismo, no el valor de la ficha. Si utiliza el tipo de diseño por defecto (el segundo tipo), SharePoint amplía el token y pasa el valor real del token a su acción.

StringBuilder = mal, por defecto el tipo de diseñador = buena.

Claro, eso es no lo que quiero realmente decir. Simplemente no probar y pasar un parámetro a la acción personalizada cuando el diseñador = StringBuilder. Utilice el tipo diseñador predeterminado y la cadena StringBuilder que delante si necesita construir cadenas complejas en su flujo de trabajo (que por cierto es exactamente lo que uno hace para crear a un tema dinámico para la acción de correo electrónico, pero eso es un tema para otra entrada de blog, Har har).

<final />

Activación prematura de flujo de trabajo — Una solución no médicos

ACTUALIZACIÓN: Ver esta discusión de MSDN, especialmente la última entrada: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. Describe una condición que puede cortocircuitar todo esto. En pocas palabras, puede ser tan simple como que al menos uno de los campos obligatorios.

Tengo una biblioteca de documentos compatible con ocho tipos de contenido.

Tengo un flujo de trabajo de SharePoint Designer que quiere calcular y asignar una fecha de recordatorio"" restando simplemente 30 días de otra columna, "fecha de vencimiento". Esto debe suceder solamente para uno de los tipos de contenido, "Seguro". El objetivo es producir un KPI que muestra dos categorías de documentos seguros: "a punto de caducar" y "expiró." (Puede leer más acerca de este tipo de KPI y más sustancial desglose aquí).

He configurado el flujo de trabajo al fuego cuando se crea un nuevo elemento y cuando se modifica un elemento. La idea es que cuando se carga un documento de seguro, calculamos una fecha de aviso"" basado en la fecha de vencimiento. Trabajar un par de puntos de vista con respecto a una lista de KPI para destacar estas condiciones cuando los usuarios de su página de inicio.

Esta estrategia no funciona cuando subo un documento.

Subo el documento y me presenté con la pantalla de entrada de datos meta. En este punto, Ya estoy en problemas. SharePoint tiene ya, prematuramente desde mi perspectiva, disparado el flujo de trabajo. No he tenido oportunidad de escoger el tipo de contenido correcto ni asignar una fecha de vencimiento. Al mismo tiempo, el flujo de trabajo no se dispara cuando golpeó el botón de enviar en este momento. Hay cierta lógica incorporada que "cree" que presentar primero es parte de la "crear" evento. Por lo tanto … mi trabajo ha despedido y cuando ejecuta, se aprobó valores meta datos.

La mejor alternativa que conozco es insertar una pausa"hasta" actividad del flujo de trabajo. Tengo la pausa de flujo de trabajo para la 1 minutos. Mientras que es pausa, Seleccionar el tipo correcto de contenido, introduce los datos de meta y. La pausa completa y el flujo de trabajo procede según sea necesario. (Tenga en cuenta que en mi entorno, las actividades de flujo de trabajo de temporizador de SPD no funcionan fuera de la caja. Que tenga el mismo problema. Ver aquí para obtener más detalles).

No me gusta "magia demora" trabajo-alrededor. Qué sucede si el usuario sube un documento y suena el teléfono y la conversación subsiguiente supera la pausa? Puedo hacer la pausa más larga, pero todavía no me gusta.

Escribí sobre esto en los foros MSDN aquí: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

Manual de fundamentos de seguridad de SharePoint / Evitar escollos comunes

ACTUALIZACIÓN 12/18/07: Consulte el artículo de Paul Liebrand para algunas consecuencias técnicas de quitar o modificar los nombres de grupo predeterminados (Véase también su comentario a continuación).

Visión general:

Es fácil de configurar y administrar SharePoint seguridad. Sin embargo, ha demostrado para ser difícil para algunos administradores primera vez realmente envolver sus manos alrededor de ella. No sólo, He visto a algunos administradores de llegar a un entendimiento perfecto el lunes sólo a han perdido viernes porque no tienen que hacer alguna configuración en el tiempo intermedio. (Admito que tengo este problema yo mismo). Esta entrada de blog que proporciona una útil cartilla de seguridad de SharePoint y apunta hacia unas mejores prácticas de configuración seguridad.

Nota importante:

Esta descripción se basa fuera de la caja de seguridad de SharePoint. Mi experiencia personal se orienta alrededor de musgo por lo que puede haber algunas cosas específicas musgo aquí, pero creo que es exacto para WSS. Espero que nadie pueda ver los errores u omisiones que señalan que en los comentarios o Enviarme un correo electrónico. Voy a hacer correcciones post prisa.

Fundamentos:

Para los propósitos de este Resumen, Hay cuatro aspectos fundamentales para la seguridad: usuarios/grupos, objetos asegurables, herencia y niveles de permisos.

Usuarios y grupos romper a:

  • Usuarios individuales: Tiró de activo creado directamente en SharePoint o directorio.
  • Grupos: Asignadas directamente desde active directory o creado en SharePoint. Los grupos son una colección de usuarios. Grupos son globales en una colección de sitios. Ellos no son nunca "atados" a un objeto asegurable específico.

Objetos asegurables romper a por lo menos:

  • Sitios
  • Bibliotecas de documentos
  • Elementos individuales en las listas y bibliotecas de documentos
  • Carpetas
  • Varios ajustes del BDC.

Hay otros objetos asegurables, Pero tienes la foto.

Niveles de permisos: Un paquete de granular / baja nivel de permisos que incluyen cosas tales como crear, leer o eliminar entradas en las listas de.

Herencia: Por defecto entidades heredarán configuración de seguridad de objeto que contiene. Subsitios heredan permisos de sus padres. Las bibliotecas de documentos heredan de su sitio. Así sucesivamente y así sucesivamente.

Usuarios y grupos se refieren a objetos asegurables mediante niveles de permisos y herencia.

Las reglas de seguridad más importantes para entender, alguna vez 🙂 :

  1. Los grupos son simplemente las colecciones de los usuarios.
  2. Los grupos son globales dentro de una colección de sitios (i.e. No hay nada como un grupo definido en un nivel de sitio).
  3. Nombre del grupo no soportar, los grupos no, en y de sí mismos, tienen ningún nivel particular de seguridad.
  4. Los grupos tienen seguridad en el contexto de un específico objeto asegurable.
  5. Puede asignar niveles de permisos diferentes para el mismo grupo para cada objeto asegurable.
  6. Las directivas de aplicación web triunfan sobre todo esto (ver abajo).

Los administradores de seguridad perdidos en un mar de anuncios de grupo y usuario siempre pueden confiar en estos axiomas para gestionar y comprender su configuración de seguridad.

Errores comunes:

  • Nombres de grupo implican falsamente permiso: Fuera de la caja, SharePoint define un conjunto de grupos cuyos nombres implican un nivel inherente de seguridad. Considerar el grupo de "Colaborador". Uno familiarizado con la seguridad de SharePoint puede mirar ese nombre y asumir que algún miembro de ese grupo puede "contribuir" a cualquier sitio/lista/Biblioteca en el portal. Eso puede ser cierto pero no porque el nombre del grupo pasa a ser "colaborador". Esto sólo es cierto fuera de la caja porque el grupo se ha proporcionado un nivel de permisos que permite añadir, editar o eliminar contenido en el sitio raíz. A través de la herencia, los contribuyentes"" Grupo también puede añadir, editar o eliminar contenido en cada sitio secundario. Uno puede "romper" la cadena de herencia y cambio el nivel de permiso de un subsitio tal que los miembros del llamada "colaborador" Grupo no contribuyen en absoluto, Pero sólo leer (por ejemplo). Esto no sería una buena idea, Obviamente, ya que sería muy confuso.
  • Los grupos no están definidos a nivel de sitio. Es fácil confundirse por la interfaz de usuario. Microsoft proporciona un conveniente enlace a administración de usuario o grupo a través "y grupos de cada sitio de personas" enlace. Es fácil creer cuando estoy en el sitio "xyzzy" y crear un grupo a través personas de xyzzy y grupos que yo he creado un grupo que sólo existe en xyzzy. Ese no es el caso. Realmente he creado un grupo para la colección de todo el sitio.
  • Miembros de grupos no varía por sitio (i.e. es el mismo en todas partes que se utiliza el grupo): Considerar el grupo propietario"" y dos sitios, "HR" y "Logística". Sería normal pensar que dos individuos separados dueños de esos sitios — un dueño de HR y un propietario de logística. La interfaz de usuario hace que sea fácil para un administrador de seguridad argumentado este escenario. Si no sabía mejor, Podría acceder a los enlaces de personas y grupos via el sitio HR, Seleccione los dueños"" Grupo y añadir mi dueño de HR a ese grupo. Un mes más tarde, Logística viene en línea. Acceder a personas y grupos desde el sitio de logística, Añadir Levante los dueños"" Grupo. Veo allí el dueño de HR y le quite, pensando que estoy quitando le de propietarios en el sitio de logística. En realidad, Yo le estoy quitando del Grupo Mundial de propietarios. Produce hilaridad.
  • Fallando a nombre de grupos basados en papel específico: Los aprobadores"" el grupo es un ejemplo perfecto. ¿Qué miembros de aprobar de este grupo? Puede que se apruebe? Realmente quiero Departamento de logística de la gente para poder aprobar documentos de RRHH? Por supuesto que no. Nombre siempre grupos basados en su papel dentro de la organización. Esto reducirá el riesgo de que el grupo se le asigna un nivel inadecuado de permiso para un objeto asegurable determinado. Grupos nombre basados en su papel previsto. En el anterior escenario de recursos humanos y logística, Que debería haber creado dos nuevos grupos: "Dueños de HR" y "dueños de logística" y asignar niveles de permisos razonable para cada uno y la cantidad mínima necesaria para que aquellos usuarios que hagan su trabajo.

Otras referencias útiles:

Si lo has hecho esto lejos:

Por favor, hágamelo saber sus pensamientos a través de los comentarios o enviarme por correo electrónico. Si conoces otras buenas referencias, por favor hacer lo mismo!

Etiquetas de Technorati:

Fácil y rápida: Crear un elemento Web de vista de datos (DVWP)

Hay una riqueza de gran información sobre el WSS 3.0 Elemento Web vista de datos (DVWP) en la web de varias fuentes. Sin embargo, Me pareció sorprendentemente difícil encontrar información sobre este primer paso muy básico. Aquí está otro artículo en el "rápido y fácil" serie para solucionar el problema.

Siga estos pasos para crear un elemento web vista de datos (DVWP). Se basan en un "anuncios" elemento Web, Pero se aplican a la mayoría de las listas.

  1. Crear un elemento web de anuncios y agregarlo a un sitio.
  2. Abrir el sitio de SharePoint Designer.
  3. Abra default.aspx el sitio.
  4. Seleccione el elemento de web de anuncios y haga clic.
  5. En el menú contextual, Seleccione "convertir a XSLVista de datos T".

SharePoint Designer le notifica que este sitio es ahora para requisitos particulares de su definición del sitio. Eso no es necesariamente malo, Pero hay importantes implicaciones (rendimiento, actualización, otros) que están fuera del alcance de este pequeño "rápido y fácil" entrada. Para obtener más información sobre este tema, Te recomiendo dos libros aquí así como su búsqueda favorita en Internet.

Confirmar que lo hiciste correctamente:

  1. Cierre y vuelva a abrir el navegador web (para evitar que accidentalmente volver a publicar el original "añade un nuevo elemento web").
  2. Seleccione la flecha desplegable de la parte web y seleccione "modificar compartido Web Part" en el menú.
  3. El panel de herramientas se abre a la derecha.
  4. El panel ha cambiado de sus habituales establecer opciones a este:
imagen

“No se puede obtener la propiedad de columna del esquema de lista de la lista de SharePoint” — Descripción, work-arounds

Esta semana, Finalmente hemos reproducido un problema que había sido informado por un usuario remoto: Cuando ella trató de exportar el contenido de una lista de excel, las cosas parecen comenzar a trabajar, pero entonces sería pop Excel hasta un error: "No se puede obtener la propiedad de columna del esquema de lista de la lista de SharePoint". Ella corría oficina 2003, Windows XP y conexión a MOSS.

He buscado las Internets y vio algunas especulaciones pero nada 100% definitivo. Por lo tanto, este post.

El problema: Exportar una vista de excel contiene una fecha (fecha = el tipo de datos de la columna).

Lo que funcionó para nosotros: Convertir la fecha a "una sola línea de texto". A continuación, convertir a una fecha.

Lo solucionó. Fue agradable ver que la conversión trabajado, en realidad. Estaba bastante nervioso que convertir las cosas de esta manera no, pero no.

Este fallo ha arrojado una sombra enorme sobre el tipo de datos date en la mente del cliente, así que vamos a estar buscando una respuesta definitiva de Microsoft y esperemos que voy a publicar y actualizar aquí en el próximo período corto de tiempo con la información oficial de respuesta y la revisión.

Otras referencias:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<final>

Suscribirse a mi blog.

Etiquetas de Technorati: ,

Rápida y sencilla: Enviar un correo electrónico con hipervínculo incrustado de flujo de trabajo de SharePoint Designer

Una vez o dos veces al mes, alguien puestos una pregunta del Foro: ¿"Cómo incluyo enlaces a URL que son seleccionables desde un correo electrónico de SharePoint Designer?"

Presentado sin más comentario: (bien, realmente no hay más comentarios después de la imagen):

imagen

Becky Isserman sigue con una útil explicación sobre cómo incrustar un vínculo a un artículo en el correo electrónico: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

Nueva versión: Extensiones de flujo de trabajo de SharePoint Designer (funciones de manipulación de cadenas)

ACTUALIZACIÓN: Consulte aquí para mis reflexiones sobre la comercialización de este proyecto: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

He estado ocupado trabajando en mi proyecto de Codeplex que actualmente se centra en proporcionar cadena extensiones de manipulación para flujos de trabajo creados a través de SharePoint Designer.

Consulte aquí para obtener más detalles:

Inicio de proyecto: http://www.codeplex.com/spdwfextensions

Lanzamiento: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Versión 1.0 incluye las siguientes nuevas características:

Función Descripción (Si no igual.Función neto)
Num-entradas() Devuelve las números "entradas" en una cadena según un delimitador especificado.

Por ejemplo: Num-entradas en una cadena de "un,b,c" con delimitadores"," = 3.

Entrada() Devuelve el token n-ésima de una cadena según un delimitador especificado.
Longitud String.Length
Reemplazar() String.Replace()
Contiene() String.Contains()
Devuelve la palabra "verdadero" o la palabra "falso".
Subcadena(Inicio) String.substring(Inicio)
Subcadena(Inicio,longitud) String.substring(Inicio,longitud)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Devuelve la palabra "verdadero" o la palabra "falso".
EndsWith() String.EndsWith()
Devuelve la palabra "verdadero" o la palabra "falso".

Un error de tiempo de ejecución BDC explicado

Se ha producido un error BDC esta semana que se manifiesta en la interfaz de usuario y en la 12 registro de colmena en tiempo de ejecución.

Primero, Esto apareció en la interfaz de usuario:

No se pudo encontrar campos para insertar todos los valores de identificador para ejecutar correctamente una SpecificFinder MethodInstance con nombre … Disponer de parámetros de entrada TypeDescriptors asociados con cada identificador definido para esta entidad.

Aquí hay una captura de pantalla:

clip_image001

Yo también podría causar este mensaje que aparezca en el 12 registro de colmena en va (usando mi high-tech-don't-try-this-at-home patentado "misteriosos errores" método):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C datos de SharePoint Portal Server Business 6q4x excepción alta en BusinessDataWebPart.OnPreRender: System.InvalidOperationException: El valor del identificador ”, de tipo ”, no es válido. Valor esperado de identificador de tipo 'System.String'. en Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objeto[] subIdentifierValues, LobSystemInstance lobSystemInstance) en Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entidad de entidad, Objeto[] userValues, LobSystemInstance lobSystemInstance) en Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) en Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() en Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Busqué alrededor y encontrar algunas pistas en el Foro de MSDN, pero no eran suficiente para mí entender lo que estaba haciendo mal. Estuve viendo una transmisión por Ted Pattison que mi empresa ha squirreled lejos en un servidor y llegó a darse cuenta de mi problema.

En mi ADF, Estoy conectando a una base de datos SQL como se muestra:

            <Propiedad Nombre="RdbCommandText" Tipo="System.String">
              <![CDATA[
                SELECCIONE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAÍS, ADDRESS1, 2, ADDRESS3, ADDRESS4, CIUDAD, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      CONDADO DE, ESTADO, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELÉFONO, EXTENSIÓN, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW con (NOLOCK)
                DONDE
                  (SETID <> 'COMPARTIR') y
                  (inferior(CARRIER_ID) >= menor(@MinId)) y
                  (inferior(CARRIER_ID) <= menor(@MaxId)) y
                  (inferior(DESCR) COMO inferior(@InputDescr))
                ]]>
            </Propiedad>

Yo fui siempre que SQL de una persona DBA y dan a entender que es un especial vista que crearon sólo para mí. La única clave que es CARRIER_ID.

Aquí está el error que introdujo:

      <Identificadores de>
        <Identificador de Nombre="CARRIER_ID" TypeName="System.String" />
        <Identificador de Nombre="DESCR" TypeName="System.String" /> 
</Identificadores de>

En algún lugar a lo largo de la línea, Que había conseguido yo confundir sobre el significado de <Identificadores de> y DESCR aunque no es realmente un identificador. Sacó de DESCR el conjunto de identificadores y presto! Todos los que trabajaron.

Espero que esto ahorra alguien alguna pena 🙂

Etiquetas de Technorati: , , ,