25/03/2011
por Ricardo Alves
Uma dica muito interessante ao trabalhar com dados no Dynamics CRM 2011 é a utilização de OData (Open Data Protocol).
Com esse protocolo é possível fazer consultas utilizando o REST Endpoint do WCF utilizando Ajax, Jscript e jQuery.
Com ele é possível criar um CRUD completo.
Na função abaixo, por exemplo, eu recupero as contas com o atributo Name igual a Teste:
function ObterContas() {
//caminho para o serviço WCF
var ODataPath = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc";
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
//Endpoint para efetuar as condições
url: ODataPath + "/AccountSet?$filter=Name eq 'Teste'",
/*
Operadores de consulta suportados:
$filter, $select, $top, $skip, $orderby
Exemplo:
$filter=Name eq ‘Teste’ and Email eq ‘teste@teste.com’$orderby=CreatedOn asc
*/
beforeSend: function (XMLHttpRequest) {
//tipo do retorno
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
//retorno dos dados em JSON. Coleção em data.d.results
var id = data.d.results[0].AccountId
alert(id);
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
//mensagem de falha
alert("Falha");
}
});
}
Vamos ao exemplo.
Antes de mais nada iremos utilizar o jQuery, biblioteca JavaScript que facilita muito o trabalho. Faça download aqui da versão Minified (os testes foram feitos com a versão 1.4.1):
http://docs.jquery.com/Downloading_jQuery
Com o arquivo .js em mãos, crie um Recurso da Web (WebResource) para ele.
Configurações > Personalizações > Personalizar o Sistema > Recursos da Web > Clique em Nova e preencha desta forma:

Carregue o arquivo do jQuery (jquery-1.4.1.min.js) e clique em Salvar e Fechar.
Crie mais um Recurso da Web com este dados (este ira conter as nossas funções):

Não é necessario carregar nenhum arquivo, apenas clique em Salvar e Fechar.
Pronto, com o jQuery dentro da aplicação podemos começar a customização.
Neste eu quero recuperar todas as contas com determinado nome, isso acionado em um OnChange qualquer.
Abrar a customização do formulário (neste caso estou fazendo em Conta mesmo):

De um duplo clique em um campo, para customizarmos o OnChange:

Clique na aba (guia) Eventos, logo abaixo do subtitulo Lista de Eventos, expanda Bibliotecas de Formulários:

Clique em Adicionar, e adicione os Recursos jQuery e Teste que criamos nos passos anteriores.
Logo em seguida de um Editar na biblioteca Teste e cole a função criada para o exemplo:

No próximo passo vá na seção abaixo, Manipuladores de Eventos:

Clique em Adicionar e preencha o OnChange desta forma e clique em OK:

Bom, clique em OK em Propriedades do Campo para fechar. Feche e Salve a tela de customização do formulário de Conta.
Antes de testar vá em Configurações > Personalizações > Personalizar o Sistema e clique em Publicar Todas as Personalizações (caso contrário suas personalizações não surtiram efeito):

Pronto, agora só testar:

Espero que tenham gostado, vou alguns exemplos de CRUD para postar.
Abraços