CRM 2015 – Enviar Parâmetros Customizados em um Formulário

Pessoal,

Desde a versão 2011 do CRM temos a possibilidade de passarmos parametros customizados através de querystring de forma suportada pelo SDK. O objeto Xrm.Utility nos proporciona a interação de novos parâmetros sendo enviados e recuperados via querystring do browser.

Em algumas situações necessitamos passar informações adicionais via querystring, como por exemplo quando utilizamos o USD (Unified Service Desk) e queremos recuperar informações do contexto do operador de call center e passá-las via querystring para uma página CRM. Outros momentos que o uso de parâmetros customizados podem ser requerido seria itens de menu (command bar ou sitemap), aberturas de formulários CRM dentro de outro formulário CRM, entre outros.

O trabalho deve ser dividido em três partes:

 

  • Inclusão dos Parâmetros Customizados no Formulário CRM

 

Devemos previamente cadastrar os parâmetros customizados que desejamos passar para nosso formulário, deste modo, o formulário deve ser aberto em modo edição, clicar em “Propriedades do Formulário” > aba “Parâmetros”.

Neste exemplo utilizarei a entidade “Tarefa” que receberá o parâmetro “Percentual Realizado” já previamente preenchido.

parametros_customizados_0

parametros_customizados_1

  • Recuperação dos Parâmetros Customizados

Depois de configurado o parâmetro customizado que desejamos que o formulário receba, devemos programar o código que realiza a recuperação do parâmetro. Para isso necessitamos de um JScript sendo executado no Load do formulário “Tarefa”:

function getCustomParameters()
{
    // Recupera todos os parâmetros customizados
    var parametros = Xrm.Page.context.getQueryStringParameters();

    // Valida se existem parâmetros informados E se existe o nosso parâmetro cadastrado "perc_realizado"
    if (parametros && parametros["perc_realizado"]) {
        var percentualRealizado = parseInt(parametros["perc_realizado"]);

        // Atribui o valor informado no atributo Percentual Realizado
        Xrm.Page.getAttribute("percentcomplete").setValue(percentualRealizado);
    }
}

Abra as propriedades do formulário e adicione um biblioteca JScript e coloque o evento “getCustomParameters” no Load do formulário:

parametros_customizados_2

  • Passagem dos Parâmetros Customizados via Querystring

Por fim, temos o ponto que informa o parâmetro customizado, no exemplo que usei de acordo com a “Origem” de uma “Ocorrência”, uma tarefa será criada e seu o percentual realizado será informado.

Devemos abrir em modo de edição a entidade “Ocorrência”, adicionar uma biblioteca JScript com o código que pode ser visualizado à seguir e no evento Change do atributo “Origem” o método “getCaseOriginAndOpenTask” deve ser adicionado:

function getCaseOriginAndOpenTask()
{
    // Recupera o valor do atributo "Origem"
    var origem = parseInt(Xrm.Page.getAttribute("caseorigincode").getValue());

    var parameters = {};

    // Verifica se a Origem é Telefone ou Email e atribui como Percentual Realizado o valor 20
    if(origem == 1 || origem == 2)
        parameters["perc_realizado"] = 20;
    // Para as demais origens o valor 30 deve ser atribuído
    else
        parameters["perc_realizado"] = 30;

    // Abre o formulário de Tarefa com o parâmetro informado
    Xrm.Utility.openEntityForm("task", null, parameters);
}

parametros_customizados_3

 

Bom, terminamos os ajustes e configurações necessárias para a passagem de parâmetros customizados entre as entidade Ocorrência e Tarefa. Agora vamos ao teste, abra um registro de uma ocorrência e selecione um valor no atributo Origem:

parametros_customizados_4

 

Automaticamente seremos direcionados para a entidade Tarefa e o parâmetros “perc_realizado” será informado, na abertura da tarefa o JScript irá recuperar o valor e atribuir no atributo Percentual Realizado:

parametros_customizados_5

 

Como eu disse anterioremente este é só um exemplo de como podemos fazer para passar parâmetros customizados e recuperá-los no formulário CRM “alvo”. Atualmente estou usando com certa frequencia no USD para passar um parâmetro do contexto do operador de call center e recuperá-lo em um formulário CRM.

[]’s,

Tiago Cardoso

Anúncios

Sobre Tiago Michelini Cardoso

I have been working with IT since 2006, much of this period using Microsoft Dynamics CRM as a source of solutions. I graduated in Bachelor of Information Systems at FIAP (University of Informatics and Management Paulista). I participated of different industries projects like Payments, Services, Automotive, Sales, Education, Marketing, Insurances and Manufacture of Glass. Currently, I have the honor of being the only Brazilian who got the award for Microsoft MVP (Most Valuable Professional) for Microsoft Dynamics CRM product. I have received the award since 2012.
Esse post foi publicado em Dynamics CRM e marcado , , , , , , . Guardar link permanente.

2 respostas para CRM 2015 – Enviar Parâmetros Customizados em um Formulário

  1. hdlances disse:

    Tiago,
    Estou com um problema em relação ao CRM 2016, possuo 2 forms diferentes da entidade Conta. Exemplo: ao abrir o form 1 eu faço uma pergunta ao usuário se ele deseja ir para o form 2, caso o usuário diga que sim, eu utilizo o Xrm.Utility.openEntityForm() para abrir o outro form.

    Mas por se tratar da mesma entidade, apenas forms diferentes, o sistema acaba salvando um registro totalmente em branco (sendo que existem campos obrigatorios na tela), e em muitas vezes nessa troca de um form para outro, o sistema trava e nunca termina de carregar o novo form.

    Poderia ser algum bug dessa função nativa (openEntityForm) do CRM?

    Curtir

    • Hdlances,

      Não avaliei se é ou não um bug, mas fiquei pensando sobre o que está querendo fazer…

      Acredito que possa utilizar outras formas para resolver seu requisito, pois o Diálogo, poderia ser melhor para o preechimento das informações quando não temos ainda o registro criado. Eu imagino que os usuários sejam instruido a acessar um Diálogo que definirá quais informações precisam ser preenchidas e depois que o registro for criado, você conseguiria abrir o form correto de acordo com os preenchimentos.

      O que acha da ideia?

      Outra possível solução, seria separar o cadastro em duas entidades diferentes, já que os formulários são bem diferentes, talvez realmente sejam dados de tipos de diferentes, ai vale uma análise se isso é uma realidades ou não.

      Por fim, eu iria para a criação de um único form e adicionar alguns controles visuais para exibir/esconder guias/seções/atributos. Não recomendo por conta do alto nível de customização necessário para concluir a solução.

      Bom é isso!

      []’s,
      Tiago Cardoso

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s