Usuário com melhor resposta
Mestre detalhe

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
- Editado Denilson I. Julião terça-feira, 5 de novembro de 2013 16:56
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;
}- Marcado como Resposta Denilson I. Julião sexta-feira, 8 de novembro de 2013 13:53
-
function setValueCampoExterno(entidade,idEntidade,campo,valor){
function gravaNovoValor(entidade, idEntidade, camposValores){
var camposValores = new Array();
camposValores[0] = new Array(campo,valor);
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);
}
}- Marcado como Resposta Denilson I. Julião sexta-feira, 8 de novembro de 2013 15:20
- Editado Denilson I. Julião sexta-feira, 8 de novembro de 2013 15:24
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
-
-
/* 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;
}- Marcado como Resposta Denilson I. Julião sexta-feira, 8 de novembro de 2013 13:53
-
function setValueCampoExterno(entidade,idEntidade,campo,valor){
function gravaNovoValor(entidade, idEntidade, camposValores){
var camposValores = new Array();
camposValores[0] = new Array(campo,valor);
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);
}
}- Marcado como Resposta Denilson I. Julião sexta-feira, 8 de novembro de 2013 15:20
- Editado Denilson I. Julião sexta-feira, 8 de novembro de 2013 15:24