none
Consultar CRM e obter resposta

    Question

  • Boa tarde,

    Gostaria de saber como faço para fazer uma consulta no CRM via plugin e nesta comparar valores. Ex: Digito um CPF e quero verificar se ele já existe ou não

    Obrigado
    Thursday, February 12, 2009 6:06 PM

Answers

  • Tiago,

    Você pode utilizar a classe [QueryExpression] do SDK, de forma a fazer um "Select" na base de dados do CRM e procurar o que deseja.

    using Microsoft.Crm.Sdk;
    using Microsoft.Crm.SdkTypeProxy;
    using dynamicsCrmSDK = PluginSample.dynamicsCrmSDK;

    dynamicsCrmSDK.CrmAuthenticationToken token = new dynamicsCrmSDK.CrmAuthenticationToken();
    token.AuthenticationType = 0;
    token.OrganizationName = "Nome da Sua Organizacao";

    dynamicsCrmSDK.CrmService service = new dynamicsCrmSDK.CrmService();
    service.CrmAuthenticationTokenValue = token;
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;

    dynamicsCrmSDK.QueryExpression _Query = new dynamicsCrmSDK.QueryExpression();
    _Query.EntityName = "contact";
    _Query.ColumnSet = new dynamicsCrmSDK.AllColumns();

    dynamicsCrmSDK.ConditionExpression _ConditionExpression = new dynamicsCrmSDK.ConditionExpression();
    _ConditionExpression.AttributeName = "new_cpf";
    _ConditionExpression.Operator = dynamicsCrmSDK.ConditionOperator.Equal;
    _ConditionExpression.Values = new object[] { "12121212" };

    FilterExpression _FilterExpression = new dynamicsCrmSDK.FilterExpression();
    _FilterExpression.FilterOperator = dynamicsCrmSDK.LogicalOperator.And;
    _FilterExpression.Conditions = new dynamicsCrmSDK.ConditionExpression[] { _ConditionExpression };

    _Query.Criteria = _FilterExpression;
    dynamicsCrmSDK.BusinessEntityCollection _Bec = service.RetrieveMultiple(_Query);

    Note que o retorno é uma [BusinessEntityCollection], como se fosse uma tabela temporária com os registros do "Select".

    []

    Thursday, February 12, 2009 6:53 PM
  • Tiago, Existem várias manerias de realizar isto que você quer...acho que a melhor para o que você quer seria a utilização de um código java script dentro do evento OnChange do campo CPF que irá chamar um WebService que irá verificar no banco se este CPF já existe. Este webService poderá consultar o banco do CRM de forma comum e retornar um inteiro 0 ou 1 se sim ou não e com isto você abilitar ou não o botão de salvar ou informar na tela que o CPF está invalido.

    Segue abaixo o código comentado do Java Script:   
     
    // A função abaixo chama um Web Service passando parametros   
    // e retorna inteiro (Verificar no WebService a função comentada deste metódo  
    function Funcao()  
    {  
        //URL do WebService/Serviço  
        var url = "http://ENDEREÇO_DO_WEBSERVICE/SERVIÇO";  
        try 
        {  
           var oXmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");  
            oXmlHTTP.Open("POST", url, false);  
            oXmlHTTP.setRequestHeader("Content-Type""application/x-www-form-urlencoded");  
            //Parâmetro de entrada do WebServuce mais o objeto  
            //Caso o WebService tenha mais de um, deve-se usar assim:  
            // oXmlHTTP.Send("Parametro1=" + Objeto1 + "&Parametro2=" + Objeto2);  
            oXmlHTTP.Send("Parametro1=" + Objeto);  
            // Variavel de Retorno  
            var RetornoWebService = "ini";   
     
            // Checa se obtivemos uma resposta válida  
            if ((oXmlHTTP.responseXML.xml) != null)  
            {   
     
    // Retorno do WebService  
    RetornoWebService = oXmlHTTP.responseXML.selectSingleNode('int').text;  
            }   
            else 
                            {  
                alert("Webservice retornou nulo ou vazio!");   
            }  
        }  
        catch(e)  
        {  
            alert("erro na chamada do webservice:" + e);  
        }   
     
        var Retorno = RetornoWebService;  
        return Retorno;  
    }   
     
     
    Wednesday, February 18, 2009 12:34 AM

All replies

  • Tiago,

    Você pode utilizar a classe [QueryExpression] do SDK, de forma a fazer um "Select" na base de dados do CRM e procurar o que deseja.

    using Microsoft.Crm.Sdk;
    using Microsoft.Crm.SdkTypeProxy;
    using dynamicsCrmSDK = PluginSample.dynamicsCrmSDK;

    dynamicsCrmSDK.CrmAuthenticationToken token = new dynamicsCrmSDK.CrmAuthenticationToken();
    token.AuthenticationType = 0;
    token.OrganizationName = "Nome da Sua Organizacao";

    dynamicsCrmSDK.CrmService service = new dynamicsCrmSDK.CrmService();
    service.CrmAuthenticationTokenValue = token;
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;

    dynamicsCrmSDK.QueryExpression _Query = new dynamicsCrmSDK.QueryExpression();
    _Query.EntityName = "contact";
    _Query.ColumnSet = new dynamicsCrmSDK.AllColumns();

    dynamicsCrmSDK.ConditionExpression _ConditionExpression = new dynamicsCrmSDK.ConditionExpression();
    _ConditionExpression.AttributeName = "new_cpf";
    _ConditionExpression.Operator = dynamicsCrmSDK.ConditionOperator.Equal;
    _ConditionExpression.Values = new object[] { "12121212" };

    FilterExpression _FilterExpression = new dynamicsCrmSDK.FilterExpression();
    _FilterExpression.FilterOperator = dynamicsCrmSDK.LogicalOperator.And;
    _FilterExpression.Conditions = new dynamicsCrmSDK.ConditionExpression[] { _ConditionExpression };

    _Query.Criteria = _FilterExpression;
    dynamicsCrmSDK.BusinessEntityCollection _Bec = service.RetrieveMultiple(_Query);

    Note que o retorno é uma [BusinessEntityCollection], como se fosse uma tabela temporária com os registros do "Select".

    []

    Thursday, February 12, 2009 6:53 PM
  • Tiago, Existem várias manerias de realizar isto que você quer...acho que a melhor para o que você quer seria a utilização de um código java script dentro do evento OnChange do campo CPF que irá chamar um WebService que irá verificar no banco se este CPF já existe. Este webService poderá consultar o banco do CRM de forma comum e retornar um inteiro 0 ou 1 se sim ou não e com isto você abilitar ou não o botão de salvar ou informar na tela que o CPF está invalido.

    Segue abaixo o código comentado do Java Script:   
     
    // A função abaixo chama um Web Service passando parametros   
    // e retorna inteiro (Verificar no WebService a função comentada deste metódo  
    function Funcao()  
    {  
        //URL do WebService/Serviço  
        var url = "http://ENDEREÇO_DO_WEBSERVICE/SERVIÇO";  
        try 
        {  
           var oXmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");  
            oXmlHTTP.Open("POST", url, false);  
            oXmlHTTP.setRequestHeader("Content-Type""application/x-www-form-urlencoded");  
            //Parâmetro de entrada do WebServuce mais o objeto  
            //Caso o WebService tenha mais de um, deve-se usar assim:  
            // oXmlHTTP.Send("Parametro1=" + Objeto1 + "&Parametro2=" + Objeto2);  
            oXmlHTTP.Send("Parametro1=" + Objeto);  
            // Variavel de Retorno  
            var RetornoWebService = "ini";   
     
            // Checa se obtivemos uma resposta válida  
            if ((oXmlHTTP.responseXML.xml) != null)  
            {   
     
    // Retorno do WebService  
    RetornoWebService = oXmlHTTP.responseXML.selectSingleNode('int').text;  
            }   
            else 
                            {  
                alert("Webservice retornou nulo ou vazio!");   
            }  
        }  
        catch(e)  
        {  
            alert("erro na chamada do webservice:" + e);  
        }   
     
        var Retorno = RetornoWebService;  
        return Retorno;  
    }   
     
     
    Wednesday, February 18, 2009 12:34 AM