segunda-feira, 30 de junho de 2025

🧩 Como Exibir Erros com Detalhes Técnicos no Dataverse Usando Xrm.Navigation.openErrorDialog

Em projetos com Microsoft Dataverse e Power Apps model-driven, é comum criar botões personalizados na faixa de opções (ribbon) para executar ações via API Web. Mas o que acontece quando uma chamada de API falha? Como informar o erro ao usuário de forma clara e profissional — e ainda oferecer a opção de baixar os detalhes do erro para análise?

Neste post, mostro a abordagem recomendada utilizando a API Xrm.Navigation.openErrorDialog.


🎯 O cenário

Você criou um botão na ribbon que:

  • Realiza uma chamada à API Web personalizada

  • Pode retornar um erro (ex: 404, 500, Unauthorized, etc.)

  • Precisa:

    • Exibir uma mensagem amigável para o usuário

    • Exibir detalhes técnicos do erro

    • Permitir baixar um arquivo de log


✅ A solução: Xrm.Navigation.openErrorDialog

A função openErrorDialog da API do cliente (Client API) permite exibir uma caixa de diálogo de erro com dois campos principais:

Xrm.Navigation.openErrorDialog({
  message: "Ocorreu um erro durante a requisição.",
  details: error.message
});

🔍 Entendendo os parâmetros:

  • message: Mensagem amigável, que o usuário consegue entender.

  • details: Mensagem técnica — geralmente capturada da exceção (error.message) — que será incluída no arquivo de log.

Quando o parâmetro details está presente, a caixa de diálogo oferece automaticamente o botão "Baixar Arquivo de Log" com as informações técnicas do erro. Isso é extremamente útil para suporte e diagnóstico.


❌ O que não usar

Outras opções como Xrm.Navigation.openAlertDialog apenas exibem mensagens simples — não incluem o botão de log, nem foram pensadas para tratamento de erros técnicos.

Exemplo que não exibe o botão de log:

Xrm.Navigation.openErrorDialog({
  message: "Ocorreu um erro durante a requisição."
});

📌 Dica extra

Certifique-se de que o error.message esteja corretamente definido. Em chamadas fetch, axios, ou XMLHttpRequest, o conteúdo do erro pode estar em campos diferentes — adapte conforme necessário:

catch(error) {
  const errorMessage = error?.message || "Erro desconhecido";
  Xrm.Navigation.openErrorDialog({
    message: "Não foi possível completar a ação.",
    details: errorMessage
  });
}

🧠 Conclusão

A função Xrm.Navigation.openErrorDialog é a maneira recomendada para lidar com erros em ações personalizadas em Power Apps Model-Driven. Ela melhora a experiência do usuário, oferece transparência e facilita o suporte técnico com a possibilidade de baixar logs.



sexta-feira, 1 de setembro de 2023

Personalizar uma galeria no Power Apps como mais de três colunas

     Personalizar galerias no Power Apps é fundamental para criar interfaces dinâmicas e envolventes. As galerias permitem exibir dados de maneira organizada, interativa e visualmente atraente. Ao personalizar uma galeria, você pode definir o layout, as interações e a exibição dos dados de acordo com as necessidades específicas do seu aplicativo.

  1. Abrir um aplicativo em branco ou já criado;



  2. Conectar a base de dados;

    Para facilitar a compreensão, fornece-se um link para download da tabela em formato Excel. Ou pode optar por carregar essa tabela no SharePoint ou diretamente em seu aplicativo do Excel para fins de referência e estudo.
    Link Tabela

  3. Inserir uma Galeria vertical em Branco; 




  4. Conecte a lista do SharePoint;

  5. Adicionar os componentes necessários;


    Tendo como resultado:


  6. Personalizar quantidades de colunas; Na barra direita, como mostra a imagem, será utilizado o Contagem de quebras automáticas, para definir a quantidade de colunas desejadas.



    Mostrando para quatro colunas, tem-se o seguinte resultado, mostrado na imagem.



    A personalização de galerias no Power Apps capacita você a criar aplicativos que não apenas exibem dados, mas também proporcionam uma experiência interativa e envolvente para os usuários.


quarta-feira, 2 de agosto de 2023

Integrando o Power Apps, Power Automate e Power BI com o SharePoint Online

     A integração do Power Apps, Power Automate e Power BI ao SharePoint Online é uma combinação poderosa da Power Platform da Microsoft, que permite aos usuários criar soluções avançadas para melhorar a produtividade, automatizar processos e obter insights valiosos dos dados armazenados no SharePoint Online.

     Com a integração perfeita entre o SharePoint Online, Power Apps, Power Automate e Power BI, nasceu nossa inovadora aplicação de Solicitação de Materiais para aprová-los com facilidade. Com um fluxo de aprovação inteligente, as solicitações podem ser enviadas diretamente por e-mail ou através do Teams, agilizando o processo. E para uma análise mais profunda, contamos com o poder do Power BI, proporcionando insights valiosos. Tudo isso em uma estrutura simples e eficiente, como mostra a figura abaixo. Simplificando a gestão de materiais e otimizando nossas operações.


     Todas as informações são armazenadas em nossa tabela do SharePoint, conforme ilustrado na figura abaixo as colunas e o tipo. Agora, com facilidade e eficiência, gerenciamos materiais e otimizamos nossas operações. Acesse o link aqui para ter acesso aos dados utilizados.

O fluxo do Power Automate é criado com o gatilho do SharePoint, que é acionado quando ocorre uma nova solicitação de material. A partir desse gatilho, é iniciado um processo de aprovação automatizado, onde as informações relevantes são enviadas por e-mail para os responsáveis pela aprovação.

O fluxo aguarda a resposta da aprovação enviada por e-mail ou teams e, com base na resposta recebida, atualiza o status do item no SharePoint. Esse fluxo garante que todos os envolvidos estejam cientes da solicitação e permite uma comunicação ágil e eficiente durante o processo de aprovação.

A imagem abaixo ilustra o fluxo de aprovação:




    Com essa integração entre SharePoint e Power Automate, garantimos que as solicitações de material sejam tratadas de forma eficaz, economizando tempo e esforço enquanto mantemos todos os membros da equipe atualizados e informados.

As imagens abaixo ilustra todas as telas do Power Apps:

Tela com todas as solicitação e Status do progresso:

Tela para uma nova solicitação:
Tela de edição:

    
    Complementando todo o processo de integração, as informações referentes às solicitações de material e seus status de aprovação são consolidadas e apresentadas no Power BI. O Power BI proporciona uma visualização clara e abrangente dos dados, permitindo uma análise detalhada do desempenho e fluxo das solicitações.
    
A seguir, está um exemplo da visualização no Power BI:



    Dessa forma, ao integrar o Power Apps, Power Automate e Power BI ao SharePoint Online, conseguimos criar um fluxo contínuo e automatizado para a aprovação de materiais, além de proporcionar uma análise poderosa dos dados através do Power BI. Essa integração traz mais agilidade, transparência e eficiência ao processo, permitindo que a equipe tome decisões mais embasadas e alcance melhores resultados.

Este material também pode ser acessado através do meu repositório no GitHub:

terça-feira, 11 de julho de 2023

Melhores Práticas para Desenvolvimento de Aplicativos no PowerApps: Padrões de Codificação e Diretrizes para Aplicativos Canvas

     O desenvolvimento de aplicativos é uma tarefa crucial para criar soluções personalizadas que atendam às necessidades específicas de uma organização. O PowerApps da Microsoft é uma plataforma que permite criar aplicativos de negócios com facilidade, conectando-se a uma variedade de fontes de dados. Neste texto, exploraremos diretrizes importantes de nomenclatura e organização de código no PowerApps, que ajudarão você a desenvolver aplicativos eficientes, fáceis de manter e de alta qualidade.

  • Renomeação das telas :  Uma prática recomendada para a organização de aplicativos PowerApps é renomear as telas de forma a refletir seu propósito e simplificar a navegação. É importante utilizar nomes descritivos para as telas, evitando abreviações e utilizando linguagem clara. Isso facilita a identificação das telas. Renomear as telas de acordo com o contexto em que são utilizadas permite uma melhor compreensão da estrutura do aplicativo e agiliza o desenvolvimento e a manutenção.
    • Exemplos
             

  • Nomes de componentes: Nomes adequados para os componentes em seus aplicativos PowerApps são essenciais para uma melhor compreensão e manutenção do código. Seguir diretrizes de nomenclatura consistente é fundamental. Utilize "prefixo" para controles e variáveis, com um prefixo em minúsculas e a primeira letra de cada palavra subsequente em maiúsculas. Além disso, certifique-se de que os nomes sejam descritivos e reflitam o propósito dos controles. Evite nomes curtos e criptografados, optando por nomes mais explícitos e significativos. Isso tornará mais fácil encontrar, entender e trabalhar com os controles em seu aplicativo PowerApps.
Prefixo | Exemplo de usos

Exemplos nomes de variáveis incluem:

  • Variável global: gblNomeProjeto;
  • Variável Local: locMessagemSucesso.

Adotar diretrizes de nomenclatura e organização de código no PowerApps é fundamental para o desenvolvimento de aplicativos eficientes, fáceis de manter e de alta qualidade. Ao seguir práticas recomendadas para os nomes de controles, fontes de dados, variáveis e coleções, promove-se a clareza, legibilidade e consistência no seu código. Essas práticas permitem uma rápida localização do código, aumentam a produtividade durante o desenvolvimento. Ao adotar essas diretrizes, estará construindo uma base sólida para o sucesso na criação de aplicativos PowerApps poderosos e bem estruturados. Lembre-se de que essas diretrizes são flexíveis e podem ser adaptadas de acordo com o seu projeto e preferências pessoais. A chave para o sucesso está em encontrar uma abordagem que funcione melhor para você e sua equipe, mantendo a consistência e a clareza do código em todo o aplicativo PowerApps.

Fontes:

  • Documentação oficial do PowerApps da Microsoft.
  • Experiência profissional dos autores envolvidos na criação deste artigo.

🧩 Como Exibir Erros com Detalhes Técnicos no Dataverse Usando Xrm.Navigation.openErrorDialog Em projetos com Microsoft Dataverse e Power...