Lookup CRM 2013 e Google Chrome 38

By | 21/10/2014

Caros Leitores, hoje venho trazer uma informação útil para quem está utilizando o Dynamics CRM 2013 e utiliza o Chrome como navegador.

Infelizmente o novo uptade do browser, na sua versão 38, gerou problemas para quem usa o CRM nele. O problema é notado que os lookups deixaram de funcionar. Ao tentar localizar um registro ele informa tela padrão de erro.

lookuperror

Com isso comecei uma analise profunda nos códigos javascript do CRM, algo nada fácil pois são obfuscados, para tentar encontrar onde ocorre o erro.  Com isso, encontrei algo estranho na chamada para o endereço /AppWebServices/LookupService.asmx  quando busca através do botão de lookup ou da resolução automática quando digitado algo.

Para testes, eu utilizei a busca da palavra “teste” no lookup. Com isso percebi diferenças nas chamadas entre o chrome e o internet explorer.

Chamada no Chrome

<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">
  <soap:Body>
    <RetrieveItem xmlns="http://schemas.microsoft.com/crm/2009/WebServices">
      <typesArray>
        <int>1</int>
        <int>2</int>
      </typesArray>
      <bindingColumns></bindingColumns>
      <additionalParameters>null&#38;customFilter&#61;&#38;customFilterTypes&#61;</additionalParameters>
      <positions>
        <int>0</int>
      </positions>
      <resolveEmailAddress>false</resolveEmailAddress>
      <savedQueryTypeParameter></savedQueryTypeParameter>
      <defaultViewId></defaultViewId>
    </RetrieveItem>
  </soap:Body>
</soap:Envelope>

Chamada no Internet Explorer

<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">
  <soap:Body>
    <RetrieveItem xmlns="http://schemas.microsoft.com/crm/2009/WebServices">
      <typesArray>
        <int>1</int>
        <int>2</int>
      </typesArray>
      <bindingColumns></bindingColumns>
      <additionalParameters>null&#38;customFilter&#61;&#38;customFilterTypes&#61;</additionalParameters>
      <positions>
        <int>0</int>
      </positions>
      <resolveEmailAddress>false</resolveEmailAddress>
      <savedQueryTypeParameter></savedQueryTypeParameter>
      <defaultViewId></defaultViewId>
      <values>
        <string>teste</string>
      </values>
    </RetrieveItem>
  </soap:Body>
</soap:Envelope>

O chrome não está enviando a tag <values>…</values> para fazer a requisição das informações para o lookupservice.asmx. Então achei o método que monta esses esta parte:


function pushCommandParameter(oParameter) {
    if (!IsNull(aParameters[oParameter.Name]))
        aParameters[aParameters[oParameter.Name]] = oParameter;
    else {
        aParameters[oParameter.Name] = aParameters.length;
        aParameters.push(oParameter);
    }
}

Aqui é que encontramos o problema, a variável oParameter.Name tem como valor a string “values” e quando isso feito no objeto Array() aParamters no chrome ele retorna uma função nativa do chrome.

Execução no Internet Explorer:
Execução no Internet ExplorerAqui percebemos que quando o valor “values” é requisitado ele vai buscar dentro do array. Agora no chrome:
Execução no ChromeQuando localizado ele não retornar um valor undefined e sim uma função, fazendo com o que o CRM não envie os dados dentro do array.

Devido na empresa termos cliente com o bastante uso do Chrome, abrimos um caso com a Microsoft que sinalizou que já tem conhecimento do caso porém ainda sem uma hotfix para resolver.
Para quem deseja resolver sem esperar a Microsoft resolver, no codeplex alguém colocou um ajuste neste script para ser aplicado em cada entidade.
Testei e funciona corretamente. Para baixar basta acessar a url http://chrome38lookupfix.codeplex.com/

 Atualização 06/11/2014

A Microsoft informou no KB http://support.microsoft.com/kb/3008160 que a próxima atualização do Chrome irá resolver o problema.

Step one foot forward, slowly selling essays online lower your whole body for 4 counts?

Leave a Reply

Your email address will not be published. Required fields are marked *

Protected by WP Anti Spam