none
BusinessEntityNodes.length sempre zerado RRS feed

  • Pergunta

  • Bom dia pessoal.

    Estou fazendo uma consulta normal no banco, porem nunca me retorna dados. ja usei enumeras vezes esse tipo de consulta sempre funciona e neste caso ja tentei de tudo e nao retorna.... Estou na entidade cotaçao.... tenho mais 2 buscas na mesma tela que funcionam perfeitamente..... sou adm entao nao deve ser segurança.....

    var XMLRequest = "" +
           "<?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\">" + GenerateAuthenticationHeader() +
           " <soap:Body>" +
           " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
           " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
           " <q1:EntityName>FilteredQuote</q1:EntityName>" +
           " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
           " <q1:Attributes>" +
           " <q1:Attribute>customeridtype</q1:Attribute>" +
           " </q1:Attributes>" +
           " </q1:ColumnSet>" +
           " <q1:Distinct>false</q1:Distinct>" +
           " <q1:Criteria>" +
           " <q1:FilterOperator>And</q1:FilterOperator>" +
           " <q1:Conditions>" +
           " <q1:Condition>" +
           " <q1:AttributeName>quoteid</q1:AttributeName>" +
           " <q1:Operator>Equal</q1:Operator>" +
           " <q1:Values>" +
           " <q1:Value xsi:type=\"xsd:string\">" +
           id +
           "</q1:Value>" +
           "</q1:Values>" +
           " </q1:Condition>" +
           " </q1:Conditions>" +
           " </q1:Criteria>" +
           " </query>" +
           " </RetrieveMultiple>" +
           " </soap:Body>" +
           "</soap:Envelope>" +
           "";
    
           var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
           xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
           xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
           xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
           xmlHttpRequest.setRequestHeader("Content-Length", XMLRequest.length);
           xmlHttpRequest.send(XMLRequest);
           alert(XMLRequest);
    
           var Result = xmlHttpRequest.responseXML;
           var BusinessEntityNodes = Result.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
           alert(BusinessEntityNodes.length);
           if (BusinessEntityNodes.length != 0) {
            for (var i = 0; i < BusinessEntityNodes.length; i++) {
              tipoCliente = (BusinessEntityNodes[i].firstChild.text);
              }
            }
    
    Alguem tem ideia do que pode ser?
    sexta-feira, 17 de dezembro de 2010 13:25

Respostas

  • Olá Maicon,

     

    Este tipo de busca é executada em uma camada intermediaria, não diretamente no banco. 

     

    No EntityName coloque apenas quote, que é o nome da entidade.

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    • Sugerido como Resposta RicardoAlves sábado, 18 de dezembro de 2010 18:26
    • Marcado como Resposta Maicon Cesar Vaz segunda-feira, 20 de dezembro de 2010 14:27
    sábado, 18 de dezembro de 2010 18:25

Todas as Respostas

  • Olá Maicon,

     

    Este tipo de busca é executada em uma camada intermediaria, não diretamente no banco. 

     

    No EntityName coloque apenas quote, que é o nome da entidade.

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    • Sugerido como Resposta RicardoAlves sábado, 18 de dezembro de 2010 18:26
    • Marcado como Resposta Maicon Cesar Vaz segunda-feira, 20 de dezembro de 2010 14:27
    sábado, 18 de dezembro de 2010 18:25
  • Hum entao não é possivel usar os Filtered!!!

    é colocando o nome da entidade vai. o rui que terei entao de fazer varios inners joins ali...

    Obrigado pela ajua Ricardo. ode posso encontrar materias sobre esse tipo de busca ?

     

    Maicon

     

     

     

    segunda-feira, 20 de dezembro de 2010 14:27
  • Pode usar este software, é free e ajudará e muito nos seus fetchXML, através de uma interface amigável você gera os fetch's e adiciona no seus js...

    http://www.stunnware.com/products/tools4/download.htm

    []'s,

    Tiago

    segunda-feira, 20 de dezembro de 2010 14:38
    Moderador
  • Maicon,

     

    Na verdade se você reparar, o que você está fazendo é utilizar o crmservice, como no .NET... Mas neste caso, no jscript, você monta a queryexpression no xml.

     

    Utilizando o crmservice, automaticamente você estará utiliza a filtered (que vai buscar de acordo com as permissões no usuário logado). A autenticação é passada para a requisição do webservice pela função GenerateAuthenticationHeader() , que montará a autenticação como nós fazemos no .NET (token, url, user/pass...).

     

    Além desta forma, existe a requisição por fetchxml propriamente dito (que também pode ser executado pelo método Fetch no jscript/.NET):

    http://msdn.microsoft.com/en-us/library/bb928434.aspx

    http://technet.microsoft.com/en-us/library/ms936573.aspx

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me
    segunda-feira, 20 de dezembro de 2010 15:41