none
Crear una cuenta desde programa c# RRS feed

  • Pregunta

  • Hola a todos, llevo poco tiempo con el CRM y varios dias mirando el sdk pero no me aclaro. Os agradeceria a alguno si me pudieseis poner el codigo de un programita en c# que lo único que haga sea conectarse al CRM 2011 y crear una cuenta con el guid y el nombre por ejemplo. Os agradeceria vuestra ayuda pues me hace falta y no tengo mucho tiempo.

    Gracias.

    viernes, 3 de junio de 2011 8:10

Respuestas

  • ok, perfecto.

    Sugiero te fijes si tienes para instanciar una clase llamada XrmServiceContext. Esa deberia ser la clase en 2011.

    Me avisas si la has encontrado y te resulta, saludos.

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 16:55
  • caromu,

    Aquí encontré un ejemplo que entiendo te va a servir mucho de guía:

    http://207.46.16.252/en-us/library/gg695803.aspx

    Me dices como te fue, saludos!

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 17:00

Todas las respuestas

  • Hola caromu,

    Te sugiero utilizar LINQ que es lo más simple a mi criterio.

    Aquí puedes ver como autogenerar el proxy de linq. Esto aplica para CRM 4.0 pero es muy parecido para CRM 2011. Si tienes problemas con esto me avisas que busco un ejemplo de como generarlo para 2011 que tengo que tener por ahí.

    Luego el código es bastante simple, te pego a continuación unas lineas a modo de referencia:


        var crm = new MyCRMDataContext("MSCRM");
        contact contact = new contact();
        contact.firstname = "first name";
        contact.lastname = "last name";
        ....
        crm.AddTocontacts(contact);
        crm.SaveChanges();

    Espero te resulte util, saludos

    PP

     


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    lunes, 6 de junio de 2011 12:24
  • Hola Pablo, gracias por tu ayuda. Lo primero que hice fue generar el fichero crmsvcutil.exe, lo he incluido en un pequeño proyecto para probarlo pero me da un error, a ver si me puedes decir que estoy haciendo mal.

    Error: "Los metadatos contienen una referencia que no se puede resolver: http://ip_servidor:5555/myorganizacion/XRMServices/2011/Organization.svc?wsdl

    codigo:

    ClientCredentials credentials = new ClientCredentials();
    credentials.Windows.ClientCredential = new System.Net.NetworkCredential("Administrador","pass","dominio");
    Uri organizationUri = new Uri("http://ip_servidor:5555/myorganizacion/XRMServices/2011/Organization.svc");

    Uri homeRealmUri = null;

    OrganizationServiceProxy orgService = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);   //error
    IOrganizationService _service = (IOrganizationService)orgService;

    Account oCuenta = new Account();
    oCuenta.Name = this.sNombre;
    oCuenta.WebSiteURL = this.sWeb;
    oCuenta.EMailAddress1 = this.sEmail;
    _service.Create(oCuenta);

    Cuando llega a la linea marcada con //error me da el error que te he indicado arriba y no puedo seguir. Dime si es que estoy haciendo algo mal.

    Gracias


    martes, 7 de junio de 2011 10:33
  • Hola,

    la clase proxy te la generó bien entonces ??

    Luego lo que no me queda claro es si realmente lo que estás haciendo en el codigo es instanciar el DataContext de la clase proxy generada.

    esta clase puede recibir un connection string que pones en el .config, yo el que tengo on-premise tiene el siguiente formato:

     

    <connectionStrings>
        <add name="MSCRM" connectionString="Authentication Type=AD;Server=http://server_ip:5555/OrganizationName;User ID=domain\user;Password=pass" />
      </connectionStrings>

     

    Espero te sirva, aguardo tus comentarios, saludos.

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 13:48
  • Buenas Pablo, a ver te explico lo que hice paso a paso porque no me entero de lo que me dices.

    Lo primero que hice fue con la utilidad crmsvcutil.exe generar el fichero de clases, hice lo siguiente: crmsvcutil /url:"http://ip_servidor:5555/myorganizacion/XRMServices/2011/Organization.svc" /out:"myorganizacion.cs" /username:"Administrador" /password:"pass" /domain:"dominio" /serviceContextName:Context

    Esto me ha generado un fichero cs donde estan definidas las clases de las Entidades. Lo que me extraña es que no hay un DataContext como tu me dices. Igual me salté algún paso. Te recuerdo que lo estoy haciendo para CRM 2011.

    El fichero generado empieza asi:

    [assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()]

    [System.Runtime.Serialization.DataContractAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9688.1046")]
    public enum AccountState
    {
     
               [System.Runtime.Serialization.EnumMemberAttribute()]
               Active = 0,
     
               [System.Runtime.Serialization.EnumMemberAttribute()]
               Inactive = 1,
    }

    /// <summary>
    /// Empresa que representa a un cliente o cliente potencial. La empresa a la que se factura en transacciones comerciales.
    /// </summary>
    [System.Runtime.Serialization.DataContractAttribute()]
    [Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute("account")]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9688.1046")]
    public partial class Account : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged
    {
     
                /// <summary>
                /// Default Constructor.
                /// </summary>
               public Account() :
                       base(EntityLogicalName)
               {
               }
     
               public const string EntityLogicalName = "account";
     
               public const int EntityTypeCode = 1;

        .......

    }

    Una vez hecho esto he creado un proyecto en c# donde incluí el fichero este fichero de definición de clases que me generó el crmsvcutil.exe Aquí no tengo ningun DataContext

    En el proyecto yo he creado una clase llamada CRMCuenta donde defino las propiedades comunes a la entidad y un metodo llamado AddAccount().

    En un proyecto asp.net lo que hago es lo siguiente:

    CRMCuenta oCuen = new CRMCuenta();
    oCuen.Nombre = "PRUEBA 1 CRM";
    oCuen.Nif = "111111111A";
    oCuen.Domicilio = "SU CALLE ";
    oCuen.AddAccount();               // metodo definido por mi en la clase CRMCuenta

    //En la clase CRMCuenta

    public class CRMCuenta

    {

       private string Nombre;

       private string Nif;

       private string Domicilio;

       ClientCredentials credentials = new ClientCredentials();
       credentials.Windows.ClientCredential = new System.Net.NetworkCredential("Administrador","pass","dominio");
       Uri organizationUri = new Uri("http://ip_servidor:5555/myorganizacion/XRMServices/2011/Organization.svc");

       Uri homeRealmUri = null;

       OrganizationServiceProxy orgService = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null); //error
       IOrganizationService _service = (IOrganizationService)orgService;

       Account oCuenta = new Account();
       oCuenta.Name = this.Nombre;
       oCuenta.Address1_Line1 = this.Domicilio;
       oCuenta.new_Nif = this.Nif;
       _service.Create(oCuenta);

    }

    Esto es lo que hago y cuando intenta crear el ServiceProxy me falla con el error que te comente: Los metadatos contienen una referencia que no se puede resolver: http://ip_servidor:5555/myorganizacion/XRMServices/2011/Organization.svc?wsdl 

    Y no se si es que me falta algo.

    Gracias.

    martes, 7 de junio de 2011 14:42
  • ok, dejame buscar si tengo algun ejemplo a la mano de 2011.

    Mientras tanto por las dudas te pregunto: seguro utilizaste el crmsvcutil de 2011 no?

    el mismo se encuentra en el sdk\bin del SDK de 2011. También te recomiendo utilizar el ultimo SDK. Lo hemos anunciado aquí.

    saludos,

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 15:33
  • Si Pablo es el del 2011, SDK Version 5.0.3 April 2011, espero tu ayuda.

    Gracias


    martes, 7 de junio de 2011 16:07
  • ok, perfecto.

    Sugiero te fijes si tienes para instanciar una clase llamada XrmServiceContext. Esa deberia ser la clase en 2011.

    Me avisas si la has encontrado y te resulta, saludos.

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 16:55
  • caromu,

    Aquí encontré un ejemplo que entiendo te va a servir mucho de guía:

    http://207.46.16.252/en-us/library/gg695803.aspx

    Me dices como te fue, saludos!

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    martes, 7 de junio de 2011 17:00
  • Ok Pablo muchas gracias ahora ya me funciona. Ahora me surge una duda, en la entidad Cuenta tengo campos Lookup que estan relacioneados con otra entidad, en estos campos tendria que introducir el Guid del registro que deseo de la otra entidad, ¿sabes como puedo sacar el guid del registro de la otra entidad desde el mismo programa? Lo puedo hacer con XrmServerContext?

    Gracias :P

    miércoles, 8 de junio de 2011 14:24
  • Me alegro caromu que te haya funcionado.

    Entiendo que puedo ayudarte con tu última pregunta. Te agradeceria si no te molesta por favor publicarla en un nuevo thread y cerrar este.

     

    saludos,

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    miércoles, 8 de junio de 2011 14:39