sábado, 16 de febrero de 2008

Cargar un picklist desde BBDD

Sin duda, todos los que nos hemos o estamos pegándonos con Microsoft Dynamic CRM 3.0 nos ha surgido la duda de como cargar un picklist (típico combox de asp.net ) desde un origen de datos distinto al propio de CRM (BBDD, ficheros, etc,...). Y es que el SDK de CRM 3.0 NO nos proporciona métodos Add para cargar elementos en un picklist ¡es necesario modificar el xml que contiene la estrcutura de cada entidad!

La solución es la siguiente para Microsoft Dynamics CRM 3.0:

Ejemplo en vb.net para modificar el xm de la entidad cuenta (account)

1. Exportamos la entidad:





2. Realizamos los cambios del campo del picklist la entidad.

En este proceso hay que cargar en un xmldocument el xml que representa la entidad (el xml que hemos exportado con el procedimiento anterior). Posteriormente hay que modificar la sección del xml que representa el campo picklist que muestro acontinuación para añadir, quitar o modificar los elementos del picklist:



3. Importamos la entidad y la publicamos:

Public Sub importar_entidad()
Dim service As New CRMWebServer.CrmService

service.Credentials = System.Net.CredentialCache.DefaultCredentials
' Create the import request.
Dim importRequest As New CRMWebServer.ImportXmlRequest
' Tell the request where the temporary xml file is located.

'importRequest.Filename = temporyFileName
Dim customizationPath As String = Path.Combine(Environment.CurrentDirectory, "customization_original.xml")
' Pass the stream of customization XML to the import request.

Dim sr As New StreamReader(customizationPath)
Dim customizationXml = sr.ReadToEnd()
importRequest.CustomizationXml = customizationXml

' Tell the request that the Account entity is being imported.
importRequest.ParameterXml = _
"" + _
"" + _
"account" + _
"" + _
"" + _
""
' Execute the import.

Dim importResponse As CRMWebServer.ImportXmlResponse = CType(service.Execute(CType(importRequest, CRMWebServer.Request)), CRMWebServer.ImportXmlResponse)
'Publico la entidad
Dim publishRequest As New CRMWebServer.PublishXmlRequest
' Supply the request that is being published with the Bank Account and Safe Deposit Box. publishRequest.ParameterXml =

"" + _
"" + _
"account" + _
"" + _
"" + _
""
' Execute the request. Dim publishResponse As CRMWebServer.PublishXmlResponse = CType(service.Execute(CType(publishRequest, CRMWebServer.Request)), CRMWebServer.PublishXmlResponse)

End Sub


Pero en el nuevo SDK de Microsoft Dynamics CRM 4.0 parece ser que ya tenemos estos métodos Add tan deseados para cargar de una manera mucho más sencilla un picklist con datos de cualquier origen de datos...No lo he probado pero en próximos post seguro que puedo ofreceros algunos ejemplos!

No hay comentarios: