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

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 )

Foto do Google+

Você está comentando utilizando sua conta Google+. 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 )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.