CRM 2011 – Iniciar Diálogo Automaticamente

A funcionalidade de criar diálogos nos CRM nos possibilitou vários benefícios, podemos conduzir os usuários a preencherem as informações de forma sequencial e mais intuitivamente. Porém em alguns casos precisamos que eles sejam acionados automaticamente de acordo com algum evento no formulário.

Neste post, irei demonstrar um exemplo de como “chamar” um diálogo automaticamente.

Estarei usando a biblioteca XRMServiceToolkit para realizar as consultas nos Diálogos. Lembrando que precisamos do JSON2 e Jquery.

Crie os três Web Resources e adicione ao formulário que pretende utilizar a funcionalidade.

Agora segue um exemplo de script para acionar automaticamente o diálogo, vale lembrar que precisamos que o registro já tenha sido criado.

O método “RecuperarProcesso” percorre a entidade “workflow” e localiza pelo nome do processo informado, seguem os parâmetros utilizados:

dialog1

O código JScript que faz o processo:

function OnLoad() {
    var processoLookup = null;

    // Recuperar Processo (INFORMAR O NOME)
    processoLookup = RecuperarProcesso("CRM BRASIL - Ocorrência");

    // Verifica se localizou o Processo
    if (processoLookup != null) {
        var dialogId = processoLookup.value;

        // Executa Diálogo
        //var returnValue = showModalDialog("/" + Xrm.Page.context.getOrgUniqueName() + "/cs/dialog/rundialog.aspx?DialogId=%7b" + dialogId + "%7d&EntityName=incident&ObjectId=" + Xrm.Page.data.entity.getId());
        //var returnValue = window.open("/" + Xrm.Page.context.getOrgUniqueName() + "/cs/dialog/rundialog.aspx?DialogId=%7b" + dialogId + "%7d&EntityName=incident&ObjectId=" + Xrm.Page.data.entity.getId());
        //var returnValue = showModalDialog("/cs/dialog/rundialog.aspx?DialogId=%7b" + dialogId + "%7d&EntityName=incident&ObjectId=" + Xrm.Page.data.entity.getId());
        // POLARIS
        var returnValue = window.open("/cs/dialog/rundialog.aspx?DialogId=%7b" + dialogId + "%7d&EntityName=incident&ObjectId=" + Xrm.Page.data.entity.getId());
    }
}

function RecuperarProcesso(nomeProcesso) {
    var processoLookup = null;

    // Consulta
    var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
        "<entity name='workflow'>" +
            "<attribute name='workflowid' />" +
            "<attribute name='name' />" +
            "<attribute name='category' />" +
            "<attribute name='primaryentity' />" +
            "<attribute name='statecode' />" +
            "<attribute name='createdon' />" +
            "<attribute name='ownerid' />" +
            "<attribute name='owningbusinessunit' />" +
            "<attribute name='type' />" +
            "<order attribute='name' descending='false' />" +
            "<filter type='and'>" +
                "<filter type='and'>" +
                "<condition attribute='category' operator='eq' value='1' />" +
                "<condition attribute='primaryentity' operator='eq' value='112' />" +
                "<condition attribute='statecode' operator='eq' value='1' />" +
                "<condition attribute='name' operator='like' value='" + nomeProcesso + "%' />" +
                "<condition attribute='type' operator='eq' value='1' />" +
                "</filter>" +
            "</filter>" +
        "</entity>" +
    "</fetch>";

    // Recupera Registros
    var retrievedProcessos = XrmServiceToolkit.Soap.Fetch(fetchXml);

    // Verifica se foram localizados registros
    if (retrievedProcessos && retrievedProcessos.length > 0) {
        // Verifica se o Processo foi localizado
        if (retrievedProcessos[0].attributes['workflowid']) {
            processoLookup = retrievedProcessos[0].attributes['workflowid'];
        }
    }

    return processoLookup;
}

Após isso, basta criar/adicionar o web resource ao formulário e incluir no evento OnLoad.

Podemos inserir uma lógica para que os diálogos sejam acionados apenas uma vez para cada registro, mas isso vai de caso à caso.

Att,

Tiago Cardoso

Anúncios

Sobre Tiago Michelini Cardoso

I have been working with IT since 2006, almost of this time using Microsoft Dynamics CRM/365 as a source of solutions. I graduated in Bachelor of Information Systems at FIAP (Brazil) in 2012. I really love what I do! Technology has been my interest since always. Even in a tool different world of the current. When we didn't have internet, tablets, smartphones e social networks! Although I have worked in some roles, I can't give up "the developer life". Even so far of the greatest developers. Development in general is the thing that I love to work! I started my contributions about Dynamics in 2010. At the beginning, I used to help at MSDN and TechNet forums. But now, I'm dedicating all my time in my personal blog! Currently, I have the enormous honour of being the only Brazilian who got the award for Microsoft MVP (Most Valuable Professional) for Microsoft Dynamics CRM/365 product. I have been receiving the award since 2012.
Esse post foi publicado em Dynamics CRM e marcado , . Guardar link permanente.

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