Para esto puede ser que necesitemos a veces conocer todas las entidades que hay en el CRM, como por ejemplo para rellenear una lista o un desplegable.
Aquí les dejo un pequeño código en donde se recogen todas las entidades del CRM y se devuelven en un ArrayList:
public ArrayList GetEntidades(string servidor, string empresa, string usuario, string password, string dominio)
{
ArrayList arrEntidades = new ArrayList();
MetadataService metadataService = ConectaMetadata(servidor, empresa, usuario, password, dominio);
RetrieveAllEntitiesRequest allEntitiesRequest = new RetrieveAllEntitiesRequest();
allEntitiesRequest.RetrieveAsIfPublished = false;
allEntitiesRequest.MetadataItems = MetadataItems.EntitiesOnly;
RetrieveAllEntitiesResponse allEntitiesResponse = (RetrieveAllEntitiesResponse)metadataService.Execute(allEntitiesRequest);
foreach (EntityMetadata entity in allEntitiesResponse.CrmMetadata)
{
arrEntidades.Add(entity.SchemaName);
}
arrEntidades.Sort();
return arrEntidades;
}
MetadataService ConectaMetadata(string servidor, string empresa, string usuario, string password, string dominio)
{
//1) Recojo los datos de la entidad original
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.OrganizationName = empresa;
token.AuthenticationType = 0;
MetadataService metadataService = new MetadataService();
metadataService.Url = "http://" + servidor + "/MSCRMServices/2007/MetadataService.asmx";
metadataService.CrmAuthenticationTokenValue = token;
if (usuario != "")
{
metadataService.Credentials = new System.Net.NetworkCredential(usuario, password, dominio);
}
else
{
metadataService.Credentials = System.Net.CredentialCache.DefaultCredentials;
}
metadataService.PreAuthenticate = true;
return metadataService;
}
A la funcion "GetEntidades" hay que pasarle todos los datos de conexión y de autenticación, y dicha funcion devolverá el listado de todas las entidades del CRM.
La función "ConectaMetadata" conecta con el web service de metadatos, si el usuario es "vacío", se conectará con las credenciales por defecto (DefaultCredentials).
Un saludo!
No hay comentarios:
Publicar un comentario