Dynamics 365 CE – Filtrar tipos de entidades visíveis em um lookup/partylist (setEntityTypes)


Olá pessoal,

Post com uma dica rápida!

Como filtrar a lista de entidades que é mostrada em um lookup/partylist através do uso de uma função pouco conhecida/divulgada do próprio SDK, chamada setEntityTypes!

Uma explicação sobre a imagem acima…

Vejam que temos um email aberto, uma regra de negócio requer que o partylist/lookup “To” (para) apenas mostre a entidade “User” (usuário). Com um pouco de JavaScript podem “resoolver” isso facilmente, vejam:

// Define TMC namespace
if (typeof (TMC) === "undefined") {
    TMC = {
        namespace: true
    };
}

// TMC.Email namespace
TMC.Email = {

    // Initialize Constants
    FORM_CONTEXT: null,
    EMAIL_TO_ENTITY_TYPES: null,

    OnLoad: function (executionContext) {
        TMC.FORM_CONTEXT = executionContext.getFormContext();  

        // Set To List to only show User entity
        // If you want to add more entities, create an array:
        //    var entityArray = ["systemuser","lead"];
        //    TMC.Email.SetToEmailField(entityArray);
        TMC.Email.SetToEmailField("systemuser");
    },

    // Set values to To field
    SetToEmailField: function (entity) {

        var entityArray = null;
        var to = TMC.FORM_CONTEXT.getControl("to");

        if (TMC.Email.EMAIL_TO_ENTITY_TYPES == null) {
            TMC.Email.EMAIL_TO_ENTITY_TYPES = to.getEntityTypes();
        }

        if (entity == null) {
            entityArray = TMC.Email.EMAIL_TO_ENTITY_TYPES;
        }

        if (entity != null) {
            if (entity.constructor.name == "Array") {
                entityArray = entity;
            }
            else {
                entityArray = [entity];
            }
        }

        // Check if multiple type dropdowns enabled for this lookup
        if (to.getEntityTypes().length >= 1) {
            // Set entity type to entity
            to.setEntityTypes(entityArray);
        }
    }
};

Adicione este script no formulário que pretende fazer o filtro, no meu caso “Email”:

Informe onde e quando a função será executada, no meu caso no OnLoad (abertura) do formulário:

Pronto! Filtro aplicado!

Se observarem a função SetToEmailField, vejam que adicionei a possibilidade de remover o filtro, assim se passarmos “null” como parametro (SetToEmailField(null)), o filtro será “resetado”!

Com o filtro, não precisamos necessariamente clicar no ícone do lookup (lupinha do lado direito), se simplesmente iniciarmos a digitação, apenas serão retornados resultados da(s) entidade(s) que filtramos:

 

Bom, como disse simples e rápida dica para ter em mente quando precisar!

[]’s,

Tiago

Deixe um comentário

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

Logo do WordPress.com

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

Foto do Facebook

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

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.