Principales respuestas
Cambio de campos masivo Sharepoint 2007

Pregunta
-
Buenos días,
Tenemos un campo del Sharepoint que es departamento (una columna personalizada del tipo de sharepoint de "persona o grupo"), en el cuál aparece una referencia al grupo del departamento correspondiente en el active directory. El problema es que ahora todos los grupos han cambiado de nombre y para no ir cambiando 1 a 1 en los 8000 documentos que tenemos hay que hacer alguna herramienta que permita cambiar todos los nombres de los departamentos de todos los documentos con poco trabajo
como se debería hacer esto? con visual Basic? con sharepoint designer 2007 es posible? Habría que hacer un entorno donde aparezca un menu desplegable que te permita seleccionar un grupo y otro al lado que te permita escribir el nuevo nombre y luego cuando aceptes que se modifique el nombre en todos los documentos. No es necesario que tenga este formato en modo web pero si muy recomendable
Ejemplo:
Departamento: [MENU DESPLEGABLE] Nuevo nombre de departament [CUADRO DE TEXTO] [Botón Aceptar]
Departamento:<select name="dia" size="1"> <option selected="selected">2412_Recursos_Humanos</option> <option>2411_Marketing</option> <option>2410_Finanzas</option></select> Nuevo nombre departamento:<input name="nombre" type="text" /> <input name="enviar" type="submit" value="cambiar" />
Muchas gracias por adelantado
ManuelPa
Respuestas
-
Hola ManuelPa,
Básicamente, el modelo de objetos te facilita el acceso a los campos de una lista y a la modificación de su contenido que es lo que quieres. Usar el modelo de objetos implica desarrollar, ya sea en C# o en Visual Basic para hacer esas actualizaciones. Lo que yo te estoy sugiriendo es lo siguiente:
- Por un lado, dispones del listado de valores actuales que tienes en el campo Departamento y que son incorrectos.
- Por otro, dispones de listado con los valores correctos del campo Departamento.
- Entonces, te tienes que recorrer los elementos de tu lista y actualizar el campo Departamento con el valor correcto para cada elemento de la lista.
Ejemplos de como actualizar los elementos de una lista son los siguientes:
- http://www.sharepointdevwiki.com/display/public/Updating+a+List+Item+programmatically+using+the+object+model
- http://sharepointhelps.wordpress.com/2008/08/05/programmatically-update-list-content-in-sharepoint/
- http://www.mindfiresolutions.com/Add-Update-and-Delete-List-Items-Programmatically-in-Sharepoint-372.php
Saludos!
- Propuesto como respuesta Juan Carlos GonzálezMVP viernes, 8 de abril de 2011 7:31
- Marcado como respuesta ManuelPa viernes, 8 de abril de 2011 7:45
-
Hola ManuelPa,
Por supuesto, de hecho yo lo haría de la siguiente forma:
- Creas una Custom Action para la lista como las que tienes para conectar a outlook o sincronizarte por RSS. Para crar tu custom action tienes que seguir las ideas de: http://blogit.create.pt/blogs/andrevala/archive/2008/08/11/SharePoint-2007-Deployment_3A00_-Custom-Action-Features.aspx o http://www.darrinbishop.com/blog/archive/2007/04/08/46.aspx
- Esa Custom Action te redirige a una página en la que o bien tienes una WebPart con el botón que hace la actualización o bien en si misma (página de aplicación) tiene la lógica necesaria para hacerlo. Para crearte una WebPart, te recomiendo que te bajes e instales (si no las tienes) las Visual Studio Extensios para WSS que te añaden en Visual Studio 2005 / 2008 una plantilla que facilita su creación y despliegue
Un saludo!
- Marcado como respuesta ManuelPa viernes, 8 de abril de 2011 10:44
Todas las respuestas
-
-
Buenas ManuelPa,
Claramente yo desarrollaría una aplicacioncilla que te permita realizar la actualización que necesitas mediante el modelo de objetos de SharePoint. Mediante dicha aplicación tienes que mapear los pares valor antiguo - valor nuevo y actualizar cada registro al valor nuevo. Con SharePoint Designer olvidate de intenar hacerlo, ya que necesitas de cierta inteligencia que no vas a poder añadir desde aquí. La opción de Access que comenta Alberto creo que no te soluciona el tema de las actualizaciones manuales.
Saludos!
JC's
-
Juan Carlos me podrías concretar un poco más acerca del modelo de objetos de sharepoint? no te entiendo muy bien lo que me quieres decir.
Alberto tu respuesta no me sirve porque tiene que ser algo para que pueda acceder un usuario, no tiene que hacerlo alguien con conocimientos de informatica
Muchas gracias a los dos
ManuelPa -
Hola ManuelPa,
Básicamente, el modelo de objetos te facilita el acceso a los campos de una lista y a la modificación de su contenido que es lo que quieres. Usar el modelo de objetos implica desarrollar, ya sea en C# o en Visual Basic para hacer esas actualizaciones. Lo que yo te estoy sugiriendo es lo siguiente:
- Por un lado, dispones del listado de valores actuales que tienes en el campo Departamento y que son incorrectos.
- Por otro, dispones de listado con los valores correctos del campo Departamento.
- Entonces, te tienes que recorrer los elementos de tu lista y actualizar el campo Departamento con el valor correcto para cada elemento de la lista.
Ejemplos de como actualizar los elementos de una lista son los siguientes:
- http://www.sharepointdevwiki.com/display/public/Updating+a+List+Item+programmatically+using+the+object+model
- http://sharepointhelps.wordpress.com/2008/08/05/programmatically-update-list-content-in-sharepoint/
- http://www.mindfiresolutions.com/Add-Update-and-Delete-List-Items-Programmatically-in-Sharepoint-372.php
Saludos!
- Propuesto como respuesta Juan Carlos GonzálezMVP viernes, 8 de abril de 2011 7:31
- Marcado como respuesta ManuelPa viernes, 8 de abril de 2011 7:45
-
Muchas Gracias Juan Carlos,
mi última pregunta es si hacerlo en visual studio con el codigo que me has pasado, me permitiría hacer un entorno gráfico para poder añadir un botón en mi sharepoint para escoger las opciones. Es decir puedo hacer un programa para cambiar el nombre del departamento pero me gustaría hacer un entorno gráfico que se pueda manipular desde sharepoint.
Es posible esto?
ManuelPa -
Hola ManuelPa,
Por supuesto, de hecho yo lo haría de la siguiente forma:
- Creas una Custom Action para la lista como las que tienes para conectar a outlook o sincronizarte por RSS. Para crar tu custom action tienes que seguir las ideas de: http://blogit.create.pt/blogs/andrevala/archive/2008/08/11/SharePoint-2007-Deployment_3A00_-Custom-Action-Features.aspx o http://www.darrinbishop.com/blog/archive/2007/04/08/46.aspx
- Esa Custom Action te redirige a una página en la que o bien tienes una WebPart con el botón que hace la actualización o bien en si misma (página de aplicación) tiene la lógica necesaria para hacerlo. Para crearte una WebPart, te recomiendo que te bajes e instales (si no las tienes) las Visual Studio Extensios para WSS que te añaden en Visual Studio 2005 / 2008 una plantilla que facilita su creación y despliegue
Un saludo!
- Marcado como respuesta ManuelPa viernes, 8 de abril de 2011 10:44
-
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; namespace ConsoleApplication1{ class Program{ static void Main(string[] args){ SPSite miSite = new SPSite("https://bla-bla"); SPWeb miWeb = miSite.OpenWeb(); SPListCollection misListas = miWeb.Lists; SPList miLista = misListas["Metadocuments"]; SPListItemCollection items = miLista.Items; foreach (SPListItem fila in items){ //como miro el campo departamento de fila? El campo departamento es del tipo usuario } } } }
Bueno días estoy inmerso en esto que me comentaste, pero me he encontrado con un problema. Soy bastante novato en sharepoint y no se imprimir el valor de una columna. El codigo que tengo hasta la fecha es el que aparece arriba. Necesito tener el contenido del campo departamento y necesito tenerlo en string para así después poder hacer comparaciones para poder hacer los cambios masivos
Muchas Gracias
ManuelPa
-
-