none
¿es posible extraer los registros de una entidad para utilizarla en una aplicación Desktop de visual studio? RRS feed

  • Pregunta

  • Buenas,

    necesito acceder a la información de una entidad del CRM para utilizarla en mi aplicacion de escritorio.

    para explicar con mayor detalle lo que necesito expongo el siguiente ejemplo:

    tengo una aplicación que lee un archivo de texto(.txt) y lo descompone para despues cargar la información obtenida a una entidad del crm.

    sin embargo dentro de los campos que se deben llenar en la aplicación desktop está el campo país, el cual es un comboBox.

    Necesito llenar ese comboBox con los paices previamente registrados en la entidad paices en el CRM, para que el usuario no ingrese un pais que no esta registrado en el CRM.

    lunes, 7 de mayo de 2012 22:39

Respuestas

  • ya quedó resuelto para aquellos que tengan la misma pregunta:  lo hice de la siguiente manera.   "ver ejemplo del sdk quickStart"

    Es necesario hacer uso de la herramienta crmsvcutil para generar la clase con el metadata del servidor crm que despues se importa al proyecto de VS

    abrir el símbolo del sistema y situarse en la dirección de la carpeta del sdk que contenga el crmsvcutil : en mi caso sería "C:\CRM_SDK\bin"

    después de estar situado ahi, copian la siguiente instrucción 

    crmsvcutil.exe /url: "direccion de organization service del crm"  /out: cualquierNombre.cs /username: nombreUsuarioCRM /password:XXXXXXX /domain: Nombre de dominio

    --------------------------------------------------------------------------------------------------------------------------------

    private OrganizationServiceProxy _serviceProxy; //variable global

    Configuration serverConfig = new Configuration(); //variable global

    private void Credenciales(Configuration serverConfig)  {

               using (this._serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri,  serverConfig.HomeRealmUri, serverConfig.Credentials,

                                                                        serverConfig.DeviceCredentials))
                {
                    this._serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
                }
            }

    ////// donde Configuration es una clase con los credenciales para conectarse al servidor del crm que yo hice con ayuda del ejemplo quickStart del SDK

                         

    private void ObtenerPais()
            {
                Credenciales(this.serverConfig); // parametro global de la clase Configuration

                QueryExpression query = new QueryExpression("psi_pais");
                query.ColumnSet.AddColumns("psi_descripcionpais","psi_nacionalidadpais","psi_porcentajederiesgo");// las campos que contiene mi entidad //en el crm

                IOrganizationService service = (IOrganizationService)this._serviceProxy;
                EntityCollection retrieved = service.RetrieveMultiple(query);
                    foreach (var c in retrieved.Entities)
                        {
                            object abs = c.Attributes["psi_descripcionpais"];
                            comboBoxPaisInc.Items.Add((abs.ToString()));
                        }
            }

    dejo mi correo para cualquier duda:  a_lizanoc@hotmail.com

    • Marcado como respuesta Alizanoc miércoles, 9 de mayo de 2012 15:17
    miércoles, 9 de mayo de 2012 15:17

Todas las respuestas

  • Hola Aliza,

    Una alternativa que puedes analizar es la viabilidad de que control comboBox consuma como origen de datos los campos de la entidad País perteneciente a la Base de datos del CRM. Con ello vas a poder garantizar que unicamente se registren países que se encuentran registrados en CRM. 

    Espero haberte ayudado.


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri

    miércoles, 9 de mayo de 2012 13:14
    Moderador
  • ya quedó resuelto para aquellos que tengan la misma pregunta:  lo hice de la siguiente manera.   "ver ejemplo del sdk quickStart"

    Es necesario hacer uso de la herramienta crmsvcutil para generar la clase con el metadata del servidor crm que despues se importa al proyecto de VS

    abrir el símbolo del sistema y situarse en la dirección de la carpeta del sdk que contenga el crmsvcutil : en mi caso sería "C:\CRM_SDK\bin"

    después de estar situado ahi, copian la siguiente instrucción 

    crmsvcutil.exe /url: "direccion de organization service del crm"  /out: cualquierNombre.cs /username: nombreUsuarioCRM /password:XXXXXXX /domain: Nombre de dominio

    --------------------------------------------------------------------------------------------------------------------------------

    private OrganizationServiceProxy _serviceProxy; //variable global

    Configuration serverConfig = new Configuration(); //variable global

    private void Credenciales(Configuration serverConfig)  {

               using (this._serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri,  serverConfig.HomeRealmUri, serverConfig.Credentials,

                                                                        serverConfig.DeviceCredentials))
                {
                    this._serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
                }
            }

    ////// donde Configuration es una clase con los credenciales para conectarse al servidor del crm que yo hice con ayuda del ejemplo quickStart del SDK

                         

    private void ObtenerPais()
            {
                Credenciales(this.serverConfig); // parametro global de la clase Configuration

                QueryExpression query = new QueryExpression("psi_pais");
                query.ColumnSet.AddColumns("psi_descripcionpais","psi_nacionalidadpais","psi_porcentajederiesgo");// las campos que contiene mi entidad //en el crm

                IOrganizationService service = (IOrganizationService)this._serviceProxy;
                EntityCollection retrieved = service.RetrieveMultiple(query);
                    foreach (var c in retrieved.Entities)
                        {
                            object abs = c.Attributes["psi_descripcionpais"];
                            comboBoxPaisInc.Items.Add((abs.ToString()));
                        }
            }

    dejo mi correo para cualquier duda:  a_lizanoc@hotmail.com

    • Marcado como respuesta Alizanoc miércoles, 9 de mayo de 2012 15:17
    miércoles, 9 de mayo de 2012 15:17
  • Hola Aliza,

    Una alternativa que puedes analizar es la viabilidad de que control comboBox consuma como origen de datos los campos de la entidad País perteneciente a la Base de datos del CRM. Con ello vas a poder garantizar que unicamente se registren países que se encuentran registrados en CRM. 

    Espero haberte ayudado.


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri

    gracias por tu respuesta Jimmy
    miércoles, 9 de mayo de 2012 15:20
  • Con mucho gusto, me alegra que hayas encontrado la solución.

    Un abrazo.


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri

    miércoles, 9 de mayo de 2012 15:23
    Moderador