Como criar um scanner de códigos de barras em Power Apps / Power Platform
Este tutorial mostra como criar um scanner de códigos de barras em Power Apps / Power Platform que usa a câmara do telemóvel para ler códigos e gravar resultados em SharePoint ou Dataverse — útil para inventário, registo de ativos ou triagem rápida. Explicarei o porquê das escolhas e um passo-a-passo prático, incluindo tratamento de erros comuns.
Pré-requisitos
- Conta com licença Power Apps e acesso para criar Canvas Apps.
- Um site SharePoint com uma lista ou um ambiente Dataverse (escolhe onde guardar os registos).
- Telemóvel com câmara e a aplicação Power Apps instalada para testar o scanner.
Passo 1: Criar a lista em SharePoint (ou tabela em Dataverse)
Precisamos de um local para guardar os dados lidos. Se optares por SharePoint, cria uma lista com colunas simples: Title (único), BarcodeText, DataHora, Observações. Em Dataverse cria uma tabela com colunas equivalentes.
Passo 2: Criar um Canvas App em branco
Cria um Canvas App (Phone layout) no Power Apps Studio. O Phone layout facilita o uso da câmara. Nomeia a app como 'ScannerBarcodeApp' para fácil identificação.
Passo 3: Adicionar a câmara de scanner
Usa o controlo BarcodeScanner incorporado. Este controlo simplifica a leitura de códigos 1D e 2D sem bibliotecas externas.
Inserir > Media > BarcodeScanner
Define propriedades essenciais: OnScan para tratar o resultado e Visible para controlar quando mostrar o scanner.
Passo 4: Guardar o resultado na fonte de dados
Adiciona a ligação à lista SharePoint (ou Dataverse). Depois usa a função Patch ou Collect no evento OnScan do BarcodeScanner para gravar. Explicação: Patch permite criar um novo registo e devolver erros; Collect cria sem feedback imediato.
// Exemplo usando Patch para SharePoint
OnScan =
If(
!IsBlank(BarcodeScanner1.Value),
Patch(
'ListaInventario',
Defaults('ListaInventario'),
{
Title: BarcodeScanner1.Value,
BarcodeText: BarcodeScanner1.Value,
DataHora: Now(),
Observações: "Lido via BarcodeScanner"
}
);
Notify("Código gravado com sucesso", NotificationType.Success),
Notify("Erro ao ler ou gravar o código", NotificationType.Error)
)
Passo 5: Mostrar feedback e evitar leituras duplicadas
É comum o scanner ler o mesmo código várias vezes. Usa uma variável para debouncing e uma verificação de duplicados antes de gravar.
// Variável para evitar leituras rápidas em OnScan
Set(varLastScan, BarcodeScanner1.Value);
Set(varScanTime, Now());
// Verificar duplicado (exemplo SharePoint)
If(
CountRows(Filter('ListaInventario', BarcodeText = varLastScan)) = 0,
// Guardar
Patch('ListaInventario', Defaults('ListaInventario'), { Title: varLastScan, BarcodeText: varLastScan, DataHora: Now() }),
Notify("Código já existe", NotificationType.Information)
)
Passo 6: Tratar erros e melhorar a experiência
Trata cenários comuns: sem permissão de câmara, código ilegível, ou problemas de rede. Usa IfError, Notify e verifica permissões com App.IsDevicePermissionGranted('Camera').
// Exemplo de verificação de permissão antes de mostrar scanner
If(
App.IsDevicePermissionGranted("Camera"),
Set(varShowScanner, true),
RequestDevicePermissions("Camera")
)
// Exemplo simples de tratamento de erro no Patch
IfError(
Patch('ListaInventario', Defaults('ListaInventario'), { Title: varLastScan, BarcodeText: varLastScan, DataHora: Now() }),
Notify("Falha ao gravar. Tenta novamente.", NotificationType.Error)
)
Verificar o resultado
Testa na aplicação móvel do Power Apps: abre a app no telemóvel, permite acesso à câmara, lê um código e confirma se o registo aparece na lista SharePoint (ou tabela Dataverse). Verifica as mensagens Notify e confirma se os duplicados são prevenidos. Erros comuns: câmara bloqueada, nome da lista diferente, ou colunas ausentes — ajusta os nomes nas fórmulas.
Conclusão
Agora tens um scanner de códigos de barras funcional em Power Apps / Power Platform que grava para SharePoint ou Dataverse e trata duplicados e permissões. Próximos passos: adicionar a identificação do tipo de código (QR vs EAN), obter informações externas via Custom Connector, ou mostrar a imagem do produto após a leitura. Dica: testa em diferentes condições de iluminação para melhorar a taxa de leitura — qual será o próximo campo que queres automatizar no inventário?