Usuário com melhor resposta
FetchXML campos Lookup

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.
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/- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 28 de setembro de 2011 14:40
- Marcado como Resposta Airton de Souza quarta-feira, 28 de setembro de 2011 14:44
-
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
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
-
-
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/- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 28 de setembro de 2011 14:40
- Marcado como Resposta Airton de Souza 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/