CRM 2011 - Recuperar dados via JScript
-
segunda-feira, 23 de julho de 2012 18:57
Pessoal boa tarde,
Eu queria saber se é possível obter por código de JS quantas contas, produtos ou mesmo oportunidades existem cadastradas(os), na minha concepção talves pelos ID's buscados pelo xml, mas é só o que eu acho ser possível, porém se existe alguma forma de fazer isso eu gostaria de um exemplo pratico, pois aparentemente daria pra fazer com um for, alguém pode me dar uma luz?
- Editado Tiago Michelini CardosoMVP, Moderator terça-feira, 24 de julho de 2012 14:26 padronização
Todas as Respostas
-
segunda-feira, 23 de julho de 2012 19:25
Willer, Boa tarde
Para fazer isso que você quer eu utilizaria uma consulta via Js na entidade que eu quero e verficaria o Count, para isso basta usar as dias do link a seguir.
http://crmxpg.nl/wp/2010/12/17/retrieve-one-or-more-fields-in-ms-crm-using-fetchxml/
basta você fazer uma localição avançada e passar o xml para a função que ela vai retornar.
Bruno Viegas | Desenvolvedor Web | Desenvolvedor Dynamics CRM
- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator terça-feira, 24 de julho de 2012 14:27
-
quarta-feira, 25 de julho de 2012 17:04
Boa tarde,
tem essa função que retorna dados de registros de uma entidade
//Busca dados de Outra entidade Universal
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;
}
Utilizando a função
//Chamando a Função (Campo Simples)
var EntityMoedaCliente = GetEntityNodes('account', 'accountid', crmForm.all.new_clienteid.DataValue[0].id);
if (EntityMoedaCliente.length != 0) {
var EntityNodeMoedaCliente = EntityMoedaCliente[0];
var IdMoedaCliente = EntityNodeMoedaCliente.selectSingleNode("q1:transactioncurrencyid");
if (IdMoedaCliente != null) {
IdMoedaCliente = IdMoedaCliente.text;
}
else {
IdMoedaCliente = null;
}
}
if ((crmForm.all.pricelevelid.DataValue == null) && (crmForm.FormType != 4)) {
//Chamando a Função (Lookup)
var EntityPriceLevel = GetEntityNodes('pricelevel', 'name', 'Lista de Preços Padrão');
if (EntityPriceLevel.length != 0) {
var EntityNodePriceLevel = EntityPriceLevel[0];
var Id = EntityNodePriceLevel.selectSingleNode("q1:pricelevelid");
var Nome = EntityNodePriceLevel.selectSingleNode("q1:name");
var lookupData = new Array();
var lookupItem = new Object();
lookupItem.id = Id.text;
lookupItem.typename = 'pricelevel';
lookupItem.name = Nome.text;
lookupData[0] = lookupItem;
crmForm.all.pricelevelid.DataValue = lookupData;
}
else {
crmForm.all.pricelevelid.DataValue = null;
}
}Tiago Henrique Consultor de Implantação
- Marcado como Resposta Willer Albuquerque quarta-feira, 1 de agosto de 2012 15:12
-
sexta-feira, 24 de agosto de 2012 18:57Cara isso funcionaria para campo do tipo data?
-
sexta-feira, 24 de agosto de 2012 19:32Moderador
Willer,
Apesar de sua thread já ter sido fechada, aqui vai meu post.
Da forma descrita pelo outro Tiago, funciona para qualquer tipo de dados ou entidade, só é preciso adaptar para o seu uso e tomar cuidado na hora de percorrer os resultados. Como ponto negativo da resposta proposta por ele, vejo o uso de SOAP e o framework de CRM 4, ambos os fatos podem prejudicar o seu script o primeiro, por ser mais lento do que REST e o segundo, por em breve não ser mais suportado.
Para não ter problemas futuros, recomendo o uso de uma biblioteca:
http://xrmservicetoolkit.codeplex.com/
Adicione em seus formulário e faça o bom uso.
Dúvidas em como recuperar determinado tipo de atributo, consulte o SDK:
http://www.microsoft.com/en-us/download/details.aspx?id=24004
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator sexta-feira, 24 de agosto de 2012 19:33

