none
Relacionamento entre Produto e Produto da fatura RRS feed

  • Pergunta

  • Bom dia pessoal,

    preciso criar um campo no cadastro de Produtos e outro na entidade Produtos da Fatura, e que o valor desse campo seja copiado ao inserir um produto na fatura. Acreditei que poderia fazer um mapeamento entre os campos criados na entidade Produto e Produto da Fatura, mas percebi que o CRM não permite criar mapeamento entre essas entidades. Como posso fazer essa cópia?

    []s

    Pedro


    Att: Pedro Andrade
    terça-feira, 24 de março de 2009 14:27

Respostas

  • Olá Pedro,

    Complementando a sugestão do Ulysses, segue exemplo do uso do Ajax no CRM para busca e preenchimento da informação: http://gtezini.blogspot.com/2008/12/crm-40-ajax-preenchimento-automtico-de.html

    []s
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    • Sugerido como Resposta Ivan Duarte quarta-feira, 20 de maio de 2009 19:36
    • Marcado como Resposta Carlos Amorim Junior domingo, 31 de janeiro de 2010 00:49
    terça-feira, 24 de março de 2009 17:50
  •                   Olá Gilberto!

             Finalmente funcionou! Usei o exemplo de FetchXml que vc indicou. O código que funciona está abaixo.
             Muito obrigado pela sua ajuda! Sem ela esta funcionalidade não teria sido implementada.

                             Até mais!

    if(crmForm.all.customerid.DataValue != null)
    {
        // Prepare variables to fetch accounts.
        var fetchMapping = "logical";
        var entityName = "contact"; // entidade contato
        var firstColumn = "defaultpricelevelid"; // id da lista de preço default deste contato
        var filterType = "and";
        var conditionAttribute = "contactid";
        var operator = "eq"; // operador =
        var value = crmForm.all.customerid.DataValue[0].id;
        var authenticationHeader = GenerateAuthenticationHeader();
    
        // Prepare the SOAP message.
        var xml =
        "<?xml version='1.0' encoding='utf-8'?>"+ 
        "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
            " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
            " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ 
            authenticationHeader+ 
            "<soap:Body>"+ 
                "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
                    "<fetchXml>&lt;fetch mapping='"+fetchMapping+"'&gt;"+ 
                        "&lt;entity name='"+entityName+"'&gt;"+ 
                            "&lt;attribute name='"+firstColumn+"'/&gt;"+ 
                            "&lt;filter type='"+filterType+"'&gt;"+ 
                                "&lt;condition attribute='"+conditionAttribute+"'"+
                                " operator='"+operator+"' value='"+value+"'/&gt;"+ 
                            "&lt;/filter&gt;"+ 
                        "&lt;/entity&gt;"+ 
                    "&lt;/fetch&gt;</fetchXml>"+ 
                "</Fetch>"+ 
            "</soap:Body>"+ 
        "</soap:Envelope>";
        
        // Prepare the xmlHttpObject and send the request.
        var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
        xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
        xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
        xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xHReq.setRequestHeader("Content-Length", xml.length);
        xHReq.send(xml);
        // Capture the result.
        var resultXml = xHReq.responseXML;
    
        // Check for errors.
        var errorCount = resultXml.selectNodes('//error').length;
        if (errorCount != 0)
        {
            alert('errorCount = ' + errorCount);
            var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
            alert(msg);
            
        }
        // Process and display the results.
        else
        {
    
            // Capture the result and UnEncode it.
            var resultSet = new String();
            resultSet = resultXml.text;
            resultSet.replace('&lt;','<');
            resultSet.replace('&gt;','>');
    
            // Create an XML document that you can parse.
            var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            oXmlDoc.async = false; 
            // Load the XML document that has the UnEncoded results.
            oXmlDoc.loadXML(resultSet);
            // Display the results.
            var results = oXmlDoc.getElementsByTagName('result');
            try{
                var priceLevelID = results[0].selectSingleNode('./defaultpricelevelid').nodeTypedValue;
                var lookupData = new Array();
                var lookupItem= new Object();
                lookupItem.id = priceLevelID;
                lookupItem.typename = 'pricelevel';
                lookupItem.name = 'Padrão';
                lookupData[0] = lookupItem;
                crmForm.all.pricelevelid.DataValue = lookupData;
            }
            catch(excecao)
            {
                crmForm.all.pricelevelid.DataValue = null;
            }
        }
    }
    else
    {
        crmForm.all.pricelevelid.DataValue = null;
    }
    



    Att,
    Ivan Luís Duarte

    Vamos compartilhar! "Quem amarra conhecimento promove a ignorância!"
    • Sugerido como Resposta Ivan Duarte quarta-feira, 20 de maio de 2009 19:34
    • Marcado como Resposta Carlos Amorim Junior domingo, 31 de janeiro de 2010 00:49
    quarta-feira, 20 de maio de 2009 19:34

Todas as Respostas

  • Pedro,

    A parte de MAPEAMENTOS funciona apenas para "trazer" dados de um registro "pai" para um registro "filho".

    Exemplo:
    A partir de uma CONTA, se criarmos um CONTATO, alguns dados da CONTA serão COPIADOS para o novo CONTATO criado.

    Se tratando de PRODUTO, PRODUTO DA FATURA e FATURA, sendo esta uma relação N:N (muitos para muitos), não há possibilidade via mapeamento, pois quando criamos um novo produto da fatura, a única informação que temos é a fatura. Somente depois é que escolhemos o produto.

    O que você precisa fazer é desenvolver uma funcionalidade em AJAX para que, toda vez que escolher um produto pelo formulário de produto da fatura, esta função busque dados do produto e traga para o produto da fatura.

    Ok?

    Qualquer dúvida estou à disposição!

    Abraços,
    Ulysses Neto
    Microsoft Dynamics CRM Specialist | http://DynamicsCRM.Blog.br
    • Sugerido como Resposta Ivan Duarte quarta-feira, 20 de maio de 2009 19:36
    terça-feira, 24 de março de 2009 15:50
  • Olá Pedro,

    Complementando a sugestão do Ulysses, segue exemplo do uso do Ajax no CRM para busca e preenchimento da informação: http://gtezini.blogspot.com/2008/12/crm-40-ajax-preenchimento-automtico-de.html

    []s
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    • Sugerido como Resposta Ivan Duarte quarta-feira, 20 de maio de 2009 19:36
    • Marcado como Resposta Carlos Amorim Junior domingo, 31 de janeiro de 2010 00:49
    terça-feira, 24 de março de 2009 17:50
  • Gilberto,
    E se não fosse um campo do tipo lookup? Como ficaria o código?
    Com o codigo que disponibilizou, estamos tendo problemas com permissão de acesso(a tela de login aparece solicitando login e senha, mas após a digitação continua não funcionando...), de acordo com outra explicação sua, limpei os registros cookies no navegador mas não adiantou.
    Tem idéia do que mais posso fazer!?
                  Ivan Duarte
    terça-feira, 24 de março de 2009 21:24
  • Olá Ivan,

    Na função de exemplo (StateChangeAccountPriceLevel) basta pegar o valor [oNodes[0].text] e alimentar no campo que deseja.


    Qto a permissão, se vc substituir:

       xmlhttp.open("POST", "http://" + server + "/mscrmservices/2007/crmservice.asmx", true);

    por

       xmlhttp.open("POST", "/mscrmservices/2007/crmservice.asmx", true);


    Consegue resultado?

    []
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quarta-feira, 25 de março de 2009 17:47
  •  Olá Gilberto,
    Ainda não consegui, continua pedindo o login do windows...
    Tem outra dica!?
               Agradeço a atenção,
                  Ivan Luís Duarte
    quarta-feira, 25 de março de 2009 20:58
  • Ivan,

    Sua máquina está em um Domínio diferente do Domínio onde o CRM está instalado?

    Por hora, adicione a URL de acesso ao CRM na área [Trusted Sites] do seu IE.

    Verifique também se as configurações do seu IE estão muito restritas. Por exemplo, se [Enable Native XMLHTTP Support] e [Use HTTP 1.1 through proxy connections] estão habilitadas em Tools -> Internet Options -> Advanced.


    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 26 de março de 2009 14:13
  •           Olá Gilberto!
          Infelizmente não funcionou, estamos no mesmo domínio do CRM e aquelas opções do internet explorer já estavam marcadas. Desmarquei para testar e nada...
          Daqui 20 dias mais ou menos estaremos montando um servidor de cliente e esperamos não ter novamente estes problemas, talvez seja só uma configuração de segurança aqui dentro e não conseguimos encontrá-la.
          De qualquer forma, agradeço a atenção!

          Sou recém formado em Sistemas de Informação e acabo de me iniciar no CRM 4.0. Estou procurando material para estudo, se puder me indicar algum site, apostila ou outro, ficaria grato. Atualmente estou iniciando estudo do curso 8969 e antes passei pela 8912.
          Agora estou com dúvidas em fluxo de trabalho, mas isso vou postar em outra pergunta...
          Novamente agradeço a atenção para meu problema!
                           Ivan Luís Duarte
    quinta-feira, 26 de março de 2009 20:06
  •                  Olá Gilberto!

              Retorno ao problema da lista de preços...

              No código da função StateChangeAccountPriceLevel() tem um if(xmlhttp.readyState == 4)... Pois é... minha xmlhttp.readyState está vindo com valor 1(um).

              O que significa o valor 4? E porque o meu está vindo com valor 1? E o que significa o 1?

                      Agradeço a atenção!

                                  Ivan Luís Duarte

    terça-feira, 5 de maio de 2009 19:31
  •       Ah! e me esqueci de comentar... 
          Tenho uma empresa de testes e outra em produção.
          Eu não deveria especificar no código qual delas é acessada!? Como fazer isso?
                              Ivan Luís Duarte
    terça-feira, 5 de maio de 2009 19:40
  • Ivan,

    Segue referência para os valores - http://msdn.microsoft.com/en-us/library/ms534361(VS.85).aspx

    No seu código, vc executou a função [send] ?
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    terça-feira, 5 de maio de 2009 19:48
  •           Olá Gilberto!
         Uso o metodos send() sim (xmlhttp.send(soapXml);). Exatamente como no seu exemplo(http://gtezini.blogspot.com/2008/12/crm-40-ajax-preenchimento-automtico-de.html).
         E esta chamada de método ocorre após a execução do método "StateChangeAccountPriceLevel()" que contém o "if(xmlhttp.readyState == 4)"... Também como no exemplo.
         No meu caso devo mudar de método ou de pergunta? Ou devo mudar outra parte do código?
                    Agradeço a atenção!
                           Ivan Luís Duarte
    terça-feira, 5 de maio de 2009 19:56
  •              Gilberto!
          Uso o este comando "var oNodes = xmlhttp.responseXML.selectSingleNode("//RetrieveResult").childNodes;" mas somente se "xmlhttp.readyState == 4".
          Devo substituir o 4 por 1 e o responseXML.selectSingleNode("//RetrieveResult").childNodes por send(soapXml)? Ou é algo mais complexo!?
                        Ivan Luís Duarte
    terça-feira, 5 de maio de 2009 20:17
  • Ivan,

    Esta correto [xmlhttp.readyState==4; O número 4 significa que está pronto para pegar informações na variável [xmlhttp]...
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quarta-feira, 6 de maio de 2009 18:42
  •           Gilberto!
         O que acontece para que meu código só traga o valor 1 para esta propriedade? O que não deu certo? Qual linha de código é responsável por modificar o estado desta propriedade?
                      Agradeço sua atenção!
                              Ivan Luís Duarte
    quarta-feira, 6 de maio de 2009 19:20
  • O AJAX (assíncrono) muda o status automaticamente.

    Se vc der um [ alert(xmlhttp.readyState) ] dentro da função [StateChangeAccountPriceLevel] aparecem quais alertas?
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quarta-feira, 6 de maio de 2009 19:55
  •                        Gilberto!

                Parece que de fato é algo assíncrono! coloquei o alert que vc indicou bem no inicio da função "StateChangeAccountPriceLevel" e o resultado foi o seguinte:
    Primeiro apresentou valor 1;
    Então abriu uma caixa de login e senha. Se informo meu login e senha, não passa! Então, cancelo!
    Depois, apresenta o valor2;
    Em seguida 3;
    E finalmente 4, e entra no if;
    Mas não passa por essa linha "var oNodes = xmlhttp.responseXML.selectSingleNode("//RetrieveResult").childNodes;" pois coloquei um alerte após ele para testar e não apareceu!

                 De acordo com este senário... O que há de errado no meu ambiente!? Permissões?

                            Agradeço a atenção!
                                 Ivan Luís Duarte
    quarta-feira, 6 de maio de 2009 20:47
  •                  Gilberto!

            Sempre fica pedindo login quando o script roda... Aqui usamos o AD... tem como indicar no script que o usuário a ser usado é o usuário do AD?
            E outra coisa... para entrar no crm uso o endereço "http://p-crm03:5555/bhsteste/" e quando o script roda ele me pede senha para o servidor nome de "p-crm03.bhs.corp". Isso pode ser o problema? nomes diferentes para um mesmo servidor?

                    Agradeço a atenção!
                                Ivan Luís Duarte
    quinta-feira, 7 de maio de 2009 12:48
  • Ivan,

    Verifique dois pontos:

    1 - No código JScript, qual o conteúdo da variável [server] qdo vc testa?

    2 - No IIS do servidor do CRM, entre em Properties -> Directory Security; Clique no botão [Edit] referente a autenticação; verifique se [somente] o opção [Integrated Windows Authentication] está Habilitada.
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 7 de maio de 2009 12:55
  •               Gilberto!
          O conteúdo da variável server é "p-crm03:5555".
          Somente a opção "Integrated Windows Authentication" está habilitada no IIS.

          Ah! Seu eu insistir em digitar meu usuário e senha, dá o seguinte erro em uma página toda branca que abre: "HTTP Error 401.1 - Unauthorized: Access is denied"

                     Ivan Luís Duarte
    quinta-feira, 7 de maio de 2009 13:50
  • Faça os seguintes testes:

    1 - Substitua a linha:

       xmlhttp.open("POST", "http://" + server + "/mscrmservices/2007/crmservice.asmx", true);

    por:

       xmlhttp.open("POST", "http://" + server + "/NOMEDASUAORG/mscrmservices/2007/crmservice.asmx", true);


    2 - Se não funcionar, na alteração feita acima, adicione o [usr] e [senha] no comando [Open]. São os dois últimos parâmetros do método.


    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 7 de maio de 2009 13:59
  •               Olá Gilberto!

          Finalmente parou de pedir login e senha, apenas inserindo o nome da organização.
          Mas quando chega na linha "var oNodes = xmlhttp.responseXML.selectSingleNode("//RetrieveResult").childNodes;" ele não retorna(não acontece o alert que inseri após esta linha)... E então a lista de preços não retorna.
          Porque isto acontece? Tem outra dica!?
                        
                                Ivan Luís Duarte
    quinta-feira, 7 de maio de 2009 14:45
  • Boa, falta pouco! rsrs

    Comente a linha:

       var oNodes = xmlhttp.responseXML.selectSingleNode("//RetrieveResult").childNodes

    e analise o retorno com [alerts], por exemplo:

    alert(xmlhttp.responseXML.xml);


    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 7 de maio de 2009 14:54
  •              Gilberto!

         Fiz o que pediu! Este alert retornou o seguinte XML:

    <?xml version="1.0"?>
    <Soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <soap:Body>
      <soap:Fault>
       <faultcode>soap:Server</faultcode>
       <faultstring>Server was unable to process request.</faultstring>
       <detail>
        <erro>
         <code>0x80040203</code>
         <description>Url does not contain MSCRMServices</description>
         <type>Platform</type>
        </erro>
       </detail>
      <soap:Fault/>
     </soap:Body>
    </Soap:Envelope>

    Não sei se entendi certo, mas está dizendo que o serviço não está lá!?
    O problema está no servidor!? Qual a solução para isso?

                           Ivan Luís Duarte

    quinta-feira, 7 de maio de 2009 17:32
  • Ivan,

    Mesmo problema do seu outro post (Como alterar um registro via Web Service em uma entidade customizada do CRM 4.0).

    Segundo o erro [ <description>Url does not contain MSCRMServices</description> ], não existe a classe [CrmService]...

    Penso em duas opções:

    1 - Abrir um chamado junto a Microsoft;

    2 - Desinstalar / Reinstalar o CRM (inclusive mudando o nome do servidor do crm, sem caracteres com o "-", espaços e outros).
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 7 de maio de 2009 18:22
  • Tente tb:

    1 - Substitua a linha:

       xmlhttp.open("POST", "http://" + server + "/mscrmservices/2007/crmservice.asmx", true);

    por:

       xmlhttp.open("POST", "/mscrmservices/2007/crmservice.asmx", true);


    2 - Se não funcionar, na alteração feita acima, adicione o [usr] e [senha] no comando [Open]. São os dois últimos parâmetros do método.
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    quinta-feira, 7 de maio de 2009 18:38
  •                     Olá Gilberto!
              Testei desta forma e não funcionou! Quanto a sua resposta anterior ainda vou testar...
                           Obrigado pela atenção!
                                      Ivan Luís Duarte
    sexta-feira, 8 de maio de 2009 12:17
  •                Olá Gilberto!

              Como vc já viu, graças a Deus, e claro, a você, o outro post foi resolvido!
              Acho estranho o CrmService ser encontrado para o plugin e não ser encontrado para o script...
              Quanto ao chamado junto à Microsoft é uma boa idéia, mas vou testar primeiro a opção 2(instalação e desistalação em uma máquina virtual).

                           Obrigado pela atenção, darei retorno do resultado!
                                        Ivan Luís Duarte

    sexta-feira, 8 de maio de 2009 12:36
  • Ivan,

    Boa idéia, faça um teste em uma VM.

    Antes da VM, no seu ambiente p-crm03, faça um teste de chamada da função FETCHXML do CRM em JScript. Pegue o exemplo em http://technet.microsoft.com/en-us/library/cc677073.aspx, e veja se funciona...

    []
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    sexta-feira, 8 de maio de 2009 13:50
  •              Gilberto!

           Testei este outro script que vc indicou, funcionou perfeitamente! Testei tanto na máquina virtual quanto em minha empresa de testes...
           Mas o script que traz a lista de preços continua sem funcionar... testei na maquina virtual e nada! Pede senha ou simplesmente não passa do comando "var oNodes = xmlhttp.responseXML.selectSingleNode("//RetrieveResult").childNodes;", de acordo com a URL qeu coloco em "xmlhttp.open("POST", "...mscrmservices/2007/crmservice.asmx", true);".
           É estranho funcionar para o outro script e não funcionar para este... como "CAMPO_RETORNO" usei o campo "DefaultPriceLevelId", quando fez o seu, usou este também!? Vai ver estou tentando acessar pelo valor errado...

                            Obrigado pela atenção!
                                      Ivan Luís Duarte       
    quarta-feira, 13 de maio de 2009 20:08
  • Ivan,

    Pode não estar funcionando devido a organização que não é passada no código. Porém, vc pode usar o exemplo que te passei, e funcionou, de FETCHXML via JScript para retornar o precisa.

    []
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    sexta-feira, 15 de maio de 2009 00:22
  •                       Gilberto,

              Onde e como passar a organização no código que não funciona? Qual linha daquele código pode receber o codigo da organização como parametro? Tipo... se eu tenho o codigo da organização na minha mão, onde insiro? Qual método?

                                      Obrigado pela atenção!
                                                     Ivan Luís Duarte
    Att, Ivan Luís Duarte _____________________________________ Vamos compartilhar! "Quem amarra conhecimento promove a ignorância!"
    sexta-feira, 15 de maio de 2009 12:12
  • Olá Ivan,

    Ainda preciso fazer mais testes referentes a isto, porém, gostaria de te sugerir o uso do recurso que já te passei, o FetchXml via JScript, que realmente é eficiente e funcional.

    []
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    segunda-feira, 18 de maio de 2009 16:20
  •                   Olá Gilberto!

             Finalmente funcionou! Usei o exemplo de FetchXml que vc indicou. O código que funciona está abaixo.
             Muito obrigado pela sua ajuda! Sem ela esta funcionalidade não teria sido implementada.

                             Até mais!

    if(crmForm.all.customerid.DataValue != null)
    {
        // Prepare variables to fetch accounts.
        var fetchMapping = "logical";
        var entityName = "contact"; // entidade contato
        var firstColumn = "defaultpricelevelid"; // id da lista de preço default deste contato
        var filterType = "and";
        var conditionAttribute = "contactid";
        var operator = "eq"; // operador =
        var value = crmForm.all.customerid.DataValue[0].id;
        var authenticationHeader = GenerateAuthenticationHeader();
    
        // Prepare the SOAP message.
        var xml =
        "<?xml version='1.0' encoding='utf-8'?>"+ 
        "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
            " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
            " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ 
            authenticationHeader+ 
            "<soap:Body>"+ 
                "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
                    "<fetchXml>&lt;fetch mapping='"+fetchMapping+"'&gt;"+ 
                        "&lt;entity name='"+entityName+"'&gt;"+ 
                            "&lt;attribute name='"+firstColumn+"'/&gt;"+ 
                            "&lt;filter type='"+filterType+"'&gt;"+ 
                                "&lt;condition attribute='"+conditionAttribute+"'"+
                                " operator='"+operator+"' value='"+value+"'/&gt;"+ 
                            "&lt;/filter&gt;"+ 
                        "&lt;/entity&gt;"+ 
                    "&lt;/fetch&gt;</fetchXml>"+ 
                "</Fetch>"+ 
            "</soap:Body>"+ 
        "</soap:Envelope>";
        
        // Prepare the xmlHttpObject and send the request.
        var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
        xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
        xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
        xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xHReq.setRequestHeader("Content-Length", xml.length);
        xHReq.send(xml);
        // Capture the result.
        var resultXml = xHReq.responseXML;
    
        // Check for errors.
        var errorCount = resultXml.selectNodes('//error').length;
        if (errorCount != 0)
        {
            alert('errorCount = ' + errorCount);
            var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
            alert(msg);
            
        }
        // Process and display the results.
        else
        {
    
            // Capture the result and UnEncode it.
            var resultSet = new String();
            resultSet = resultXml.text;
            resultSet.replace('&lt;','<');
            resultSet.replace('&gt;','>');
    
            // Create an XML document that you can parse.
            var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            oXmlDoc.async = false; 
            // Load the XML document that has the UnEncoded results.
            oXmlDoc.loadXML(resultSet);
            // Display the results.
            var results = oXmlDoc.getElementsByTagName('result');
            try{
                var priceLevelID = results[0].selectSingleNode('./defaultpricelevelid').nodeTypedValue;
                var lookupData = new Array();
                var lookupItem= new Object();
                lookupItem.id = priceLevelID;
                lookupItem.typename = 'pricelevel';
                lookupItem.name = 'Padrão';
                lookupData[0] = lookupItem;
                crmForm.all.pricelevelid.DataValue = lookupData;
            }
            catch(excecao)
            {
                crmForm.all.pricelevelid.DataValue = null;
            }
        }
    }
    else
    {
        crmForm.all.pricelevelid.DataValue = null;
    }
    



    Att,
    Ivan Luís Duarte

    Vamos compartilhar! "Quem amarra conhecimento promove a ignorância!"
    • Sugerido como Resposta Ivan Duarte quarta-feira, 20 de maio de 2009 19:34
    • Marcado como Resposta Carlos Amorim Junior domingo, 31 de janeiro de 2010 00:49
    quarta-feira, 20 de maio de 2009 19:34
  • Boa Ivan!
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    sexta-feira, 22 de maio de 2009 12:31