none
Mestre detalhe RRS feed

  • Pergunta

  • Galera , como posso fazer um Mestre Detalhe no MS-CRM 2011

    Eu tenho a seguinte estrutura, na tabela Mestre preciso salvar o somatório do Valor total da tabela detalhe, conforme a imagem


    terça-feira, 5 de novembro de 2013 16:55

Respostas

  • /*   função para buscar Dados em Outra Entidade   */
    function getEntityNodes(entidade, atributo, parametro) {
        var DataXml = "" +
      "<?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>" + entidade + "</q1:EntityName>" +
         " <q1:ColumnSet xsi:type=\"q1:AllColumns\" />" +
         " <q1:Distinct>false</q1:Distinct>" +
         " <q1:Criteria>" +
          " <q1:FilterOperator>And</q1:FilterOperator>" +
          " <q1:Conditions>" +
           " <q1:Condition>" +
           " <q1:AttributeName>" + atributo + "</q1:AttributeName>" +
           " <q1:Operator>Equal</q1:Operator>" +
           " <q1:Values>" +
           " <q1:Value xsi:type=\"xsd:string\">" + parametro + "</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", DataXml.length);
        xmlHttpRequest.send(DataXml);
        var Result = xmlHttpRequest.responseXML;
        var BusinessEntityNodes = Result.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
        return BusinessEntityNodes;
    }
    sexta-feira, 8 de novembro de 2013 13:53
  • function setValueCampoExterno(entidade,idEntidade,campo,valor){
       var camposValores = new Array();
       camposValores[0] = new Array(campo,valor);
       gravaNovoValor(entidade, idEntidade, camposValores);
    }

    function gravaNovoValor(entidade, idEntidade, camposValores){
         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>"+
      "<Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
      "<entity xsi:type='" + entidade + "'>"+
      "<" + idEntidade[0] + ">"+ idEntidade[1] +"</" + idEntidade[0] + ">";
      for (var i = 0; i < camposValores.length; i++){
           xml = xml + "<" + camposValores[i][0] + ">"+ camposValores[i][1] +"</" +      camposValores[i][0] + ">";
      }
      xml = xml + "</entity>"+
      "</Update>"+
      "</soap:Body>"+
      "</soap:Envelope>";

      var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
      xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
      xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Update");
      xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      xHReq.setRequestHeader("Content-Length", xml.length);
      xHReq.send(xml);

      var resultXml = xHReq.responseXML;

      var errorCount = resultXml.selectNodes('//error').length;
      if (errorCount != 0)  {
        var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
        alert("DEBUG: erro ao atualizar entidade "+entidade+". Erro: "+msg);
      }
    }
    sexta-feira, 8 de novembro de 2013 15:20

Todas as Respostas

  • Boas Denilson,

    Para mim o melhor é ter um total como no RQ como está na figura. Pelo que percebi você quer que cada vez que seja criado um IRQ ou o total de um IRQ seja alterado, atualizar o valor total na entidade RQ.

    Para isso você tem duas opções criar um Workflow (criar, alterar apenas para o campo total, eliminar) que vai atualizar o campo total_de_item da entidade RQ. Com o javascript também pode ter este comportamento, por exemplo de ter um evento save do formulário e atualizar o total.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP terça-feira, 5 de novembro de 2013 23:07
    terça-feira, 5 de novembro de 2013 23:07
  • Pedro

    Goste da opção de implementar um javascript no onSave do formulário do IRQ.

    mas eu não tenho nem ideia de como escrever este código.

    quarta-feira, 6 de novembro de 2013 17:37
  • /*   função para buscar Dados em Outra Entidade   */
    function getEntityNodes(entidade, atributo, parametro) {
        var DataXml = "" +
      "<?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>" + entidade + "</q1:EntityName>" +
         " <q1:ColumnSet xsi:type=\"q1:AllColumns\" />" +
         " <q1:Distinct>false</q1:Distinct>" +
         " <q1:Criteria>" +
          " <q1:FilterOperator>And</q1:FilterOperator>" +
          " <q1:Conditions>" +
           " <q1:Condition>" +
           " <q1:AttributeName>" + atributo + "</q1:AttributeName>" +
           " <q1:Operator>Equal</q1:Operator>" +
           " <q1:Values>" +
           " <q1:Value xsi:type=\"xsd:string\">" + parametro + "</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", DataXml.length);
        xmlHttpRequest.send(DataXml);
        var Result = xmlHttpRequest.responseXML;
        var BusinessEntityNodes = Result.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
        return BusinessEntityNodes;
    }
    sexta-feira, 8 de novembro de 2013 13:53
  • function setValueCampoExterno(entidade,idEntidade,campo,valor){
       var camposValores = new Array();
       camposValores[0] = new Array(campo,valor);
       gravaNovoValor(entidade, idEntidade, camposValores);
    }

    function gravaNovoValor(entidade, idEntidade, camposValores){
         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>"+
      "<Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
      "<entity xsi:type='" + entidade + "'>"+
      "<" + idEntidade[0] + ">"+ idEntidade[1] +"</" + idEntidade[0] + ">";
      for (var i = 0; i < camposValores.length; i++){
           xml = xml + "<" + camposValores[i][0] + ">"+ camposValores[i][1] +"</" +      camposValores[i][0] + ">";
      }
      xml = xml + "</entity>"+
      "</Update>"+
      "</soap:Body>"+
      "</soap:Envelope>";

      var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
      xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
      xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Update");
      xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      xHReq.setRequestHeader("Content-Length", xml.length);
      xHReq.send(xml);

      var resultXml = xHReq.responseXML;

      var errorCount = resultXml.selectNodes('//error').length;
      if (errorCount != 0)  {
        var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
        alert("DEBUG: erro ao atualizar entidade "+entidade+". Erro: "+msg);
      }
    }
    sexta-feira, 8 de novembro de 2013 15:20