none
FetchXML campos Lookup RRS feed

  • Pergunta

  • Pessoal,

    Tenho um campo Lookup na Entidade Conta onde tenho todos os Municípios, na Entidade Conta faço um consulta a um webservice que retorna o Endereço através do CEP. Portanto, para informar o municipio que retorna da consulta do webservice preciso buscar o ID do Município para lançar o valor para o Lookup.

    Utilizei o seguinte JavaScript:

    function busca_municipio() {
        var municipio = Xrm.Page.getAttribute("name").getValue();
    
        //Xml com os parametro para consulta
        var fecthXml = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">';
        fecthXml += '<entity name="new_municipio">';
        fecthXml += '<attribute name="new_municipioid" />';
        fecthXml += '<attribute name="new_municipioid" />';
        fecthXml += '<attribute name="new_nomemunicipio" />';
        fecthXml += '<attribute name="createdon" />';
        fecthXml += '<order attribute="new_nomemunicipio" descending="false" />';
        //filtro por Nome do Município
        fecthXml += '<filter type="and">';
        fecthXml += '<condition attribute="new_municipioid" operator="eq" value="' + municipio + '" />';
        fecthXml += '</filter>';
        fecthXml += '</entity>';
        fecthXml += '</fetch>';
    
        var Xml = "<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\">"
        Xml += GenerateAuthenticationHeader()
        Xml += "<soap:Body>";
        Xml += "<Fetch xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">";
        Xml += "<fetchXml>";
        Xml += FetchEncode(Xml);
        Xml += "</fetchXml>";
        Xml += "</Fetch>";
        Xml += "</soap:Body>";
        Xml += "</soap:Envelope>";
    
        var XmlHttp = CreateXmlHttpObject();
        XmlHttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false);
        XmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
        XmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        XmlHttp.setRequestHeader("Content-Length", Xml.length);
        XmlHttp.send(Xml);
    
        var resultXml = xmlHttpRequest.responseXML;
        var id = resultXml.selectSingleNode('./id').text;
        alert(id[0].text);
    }
    

    Retorna o seguinte erro: 'Objeto Esperado'

     

    Alguém tem alguma dica?

     

    Abss.

    quarta-feira, 21 de setembro de 2011 16:16

Respostas

  • Airton,

    Você possui os métodos que está chamando em seu código os métodos?

    GenerateAuthenticationHeader() [esqueceu de um ";"], FetchEncode(), CreateXmlHttpObject()

    Em todo o código está usando a variável XmlHttp, porém na hora de usar está trocando:

    var resultXml = xmlHttpRequest.responseXML;
    

    Altere isso ai...

    A melhor ajuda! Seria debuggar o script, veja:

    http://blogs.msdn.com/b/ie/archive/2004/10/26/247912.aspx

     

    Att,


    Tiago Michelini Cardoso MCTS - MCC
    https://tiagomcardoso.wordpress.com/
    quarta-feira, 28 de setembro de 2011 14:40
    Moderador
  • Boas,

     

    verifique se o xmlHttpRequest.responseXML está vazio, se estiver provavelmente o motivo é que a sua linha:

    XmlHttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false);

    esta faltando informações, não é somente "/mscrmservices, antes disto vem o localhost:5555 por exemplo, utilize window.location.hostname.

     

    então ficaria "http:" + "//" + window.location.hostname + "/mscrmservices/2007...

     

    tenta ai, acho que não precisa do nome da organização, depois do window.location... de cabeça não lembro aqui, mas eu acesso webservice para buscar o usuário logado e é mais menos o que vc faz, porém sem lookup porque não se trata do que eu preciso...

     

    tente ai.

     

    abraço

    • Marcado como Resposta Airton de Souza quarta-feira, 28 de setembro de 2011 14:44
    sábado, 24 de setembro de 2011 02:45

Todas as Respostas

  • Boas,

     

    verifique se o xmlHttpRequest.responseXML está vazio, se estiver provavelmente o motivo é que a sua linha:

    XmlHttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false);

    esta faltando informações, não é somente "/mscrmservices, antes disto vem o localhost:5555 por exemplo, utilize window.location.hostname.

     

    então ficaria "http:" + "//" + window.location.hostname + "/mscrmservices/2007...

     

    tenta ai, acho que não precisa do nome da organização, depois do window.location... de cabeça não lembro aqui, mas eu acesso webservice para buscar o usuário logado e é mais menos o que vc faz, porém sem lookup porque não se trata do que eu preciso...

     

    tente ai.

     

    abraço

    • Marcado como Resposta Airton de Souza quarta-feira, 28 de setembro de 2011 14:44
    sábado, 24 de setembro de 2011 02:45
  • Olá Edilson,

    Já havia utilizado informando servername:5555 mas não obtive sucesso!

     

    mas vlw a dica, vou continuar tentando !

     

    Abs.

    segunda-feira, 26 de setembro de 2011 13:52
  • Airton,

    Você possui os métodos que está chamando em seu código os métodos?

    GenerateAuthenticationHeader() [esqueceu de um ";"], FetchEncode(), CreateXmlHttpObject()

    Em todo o código está usando a variável XmlHttp, porém na hora de usar está trocando:

    var resultXml = xmlHttpRequest.responseXML;
    

    Altere isso ai...

    A melhor ajuda! Seria debuggar o script, veja:

    http://blogs.msdn.com/b/ie/archive/2004/10/26/247912.aspx

     

    Att,


    Tiago Michelini Cardoso MCTS - MCC
    https://tiagomcardoso.wordpress.com/
    quarta-feira, 28 de setembro de 2011 14:40
    Moderador
  • Olá Tiago,

     

    Acabei utilizando OData e JQuery para fazer esta consulta.

     

    Valeu pela ajuda de todos!

    quarta-feira, 28 de setembro de 2011 14:44
  • Ótimo Airton,

    A versão 2011 tem uma série de melhorias, uma delas é a manipulação via OData.

    Att,


    Tiago Michelini Cardoso MCTS - MCC
    https://tiagomcardoso.wordpress.com/
    quarta-feira, 28 de setembro de 2011 14:58
    Moderador