Usar o Power Fx com comandos

Este artigo aborda aspectos do Power Fx específicos para comandos. Muitas outras funções em uso hoje em aplicativos de tela também podem ser usadas. Lembre-se de que há diferenças porque os comandos são para aplicativos baseados em modelos.

  • Todas as funções de fluxo de dados existentes são compatíveis. O que são fluxos de dados?
  • Funções imperativas que operam com dados são compatíveis.
  • Funções imperativas para Confirm e Notify simples são compatíveis.
  • Para obter uma lista de funções sem suporte, vá para Funções sem suporte.

Observação

A publicação de comandos do Power Fx pode levar alguns minutos. Pode não ser óbvio que as operações em segundo plano ainda estejam em execução mesmo depois de a operação de publicação parecer ter sido concluída. Pode ser necessário aguardar alguns minutos após a publicação e atualizar o aplicativo para ver suas alterações refletidas. Isso normalmente leva mais tempo na primeira vez que um comando baseado no Power Fx é publicado para um aplicativo.

OnSelect

Define a lógica que será executada quando o botão for selecionado dentro do aplicativo.

Visível

Define a lógica para ocultar ou mostrar o botão ao executar o aplicativo.

Para definir a lógica de visibilidade, selecione o comando. Em seguida, selecione Visibilidade no painel de propriedades do comando direito e selecione Mostrar na condição da fórmula. Agora, selecione Visível à esquerda da barra de fórmulas e então escreva uma expressão do Power Fx usando a barra de fórmulas.

Propriedade selecionada

Campo Type Description
Item Registro de DataSource Um dos registros selecionados do DataSource.
AllItems Tabela de registros do DataSource Todos os registros selecionados do DataSource.
State Enum Estado do controle selecionado. Editar (=0), Novo (=1), Visualizar (=2)
Não salvo Boolean Retorna true se Selected ou SelectedItems tiverem alterações não salvas. Caso contrário, retorna falso. Sempre retorna false se o AutoSave estiver definido como true (opção padrão) na biblioteca de componentes de comando.
  • A propriedade Selecionado é fornecida pelo host do comando.
  • Os nomes Item e AllItems são mais consistentes com os controles ComboBox e Gallery, mas esse é um novo padrão.
  • Se não houver registro selecionado, Item retornará Em branco (IsBlank retorna verdadeiro) e AllItems retornará uma tabela vazia (IsEmpty retorna verdadeiro).
  • DataSource nulo para referências de registros (tipos de registros polimórficos). Podem ser chamadas funções genéricas, como Salvar, ou pode-se usar IsType/AsType.
  • Item está sempre em branco se SelectionMax <> 1. Isso evita escrever fórmulas em apenas um item e não escalar para mais de um.

Salvamento Automático

  • Muitos comandos JavaScript começam salvando o buffer do formulário. Isso ocorre porque facilita o trabalho com o resto do código.
  • Por padrão, o buffer de formulário é salvo em nome do criador do aplicativo.
    • O formulário é salvo antes do comando ser iniciado.
    • Problemas ocorridos durante a operação de salvamento são tratados na interface de usuário do formulário.

Função de patch

Patch (atualização) no atual registro selecionado

Patch(Accounts, Self.Selected.Item, {'Account Name': "Changed Account name"})

Observação

Se a tabela relacionada ainda não estiver na biblioteca de componentes de comando, você precisará abri-la no estúdio de tela e adicionar a fonte de dados lá.

Patch(Tasks,Defaults(Tasks),{Regarding:Self.Selected.Item},{Subject:"Subject of the Task"})

Verifique e edite uma propriedade de data

If(Self.Selected.Item.'Last Date Included in Campaign'>DateAdd(Now(),-3), Patch(Accounts,Self.Selected.Item,{'Last Date Included in Campaign':Date(2021,10,19)}))

Propriedade visível: só mostrará o comando se um ou mais registros estiverem selecionados em uma exibição em grade

CountRows(Self.Selected.AllItems) > 0

Visibilidade de controle com base em dados de registro

//Button will be visible for accounts with Account Rating > 20
Self.Selected.Item.'Account Rating'>20

Observação

Para obter opções adicionais, consulte a referência de API do cliente para usar JavaScript. Mais informações: navigateTo (referência de API do cliente)

Para navegar para uma página de tela personalizada em um aplicativo baseado em modelo, passe o nome da página como o primeiro argumento.

Navigate( myCustomPage )

Para navegar até a visualização padrão da tabela, passe o nome da tabela como o primeiro argumento.

Navigate( Accounts )

Para navegar para um exibição de sistema específica da tabela, passe a enumeração Views da tabela.

Navigate( 'Accounts (Views)'.'My Active Accounts' )

Para navegar para o formulário padrão da tabela, passe o registro como o primeiro argumento.

Navigate( Gallery1.Selected )

Para navegar até o formulário padrão da tabela, passe um registro do Dataverse criado a partir da função Padrões. Isso abrirá o formulário padrão com o registro como um novo registro. A função Defaults usa o nome da tabela para criar o registro.

Navigate( Defaults( Accounts ) )

Função RecordInfo

Fornece informações sobre um registro de uma fonte de dados.

Use RecordInfo para obter informações sobre um determinado registro de uma fonte de dados. No momento, apenas o Microsoft Dataverse é compatível.

As informações disponíveis:

Argumento de Informações Description
RecordInfo.DeletePermission O usuário atual tem permissão para remover este registro da fonte de dados?
RecordInfo.EditPermission O usuário atual tem permissão para modificar este registro na fonte de dados?
RecordInfo.ReadPermission O usuário atual tem permissão para visualizar este registro da fonte de dados?

RecordInfo retorna um valor booliano:

Retornar valor Description
true O usuário tem permissão.
false O usuário não tem permissão. Se o registro estiver em branco, RecordInfo também retornará false.

RecordInfo também leva em consideração as permissões no nível da fonte de dados. Por exemplo, se o usuário tiver privilégios no nível do registro para modificar um registro, mas não tiver privilégios no nível da tabela, ele retornará false para ModifyPermission. Use a função DataSourceInfo para obter informações sobre a fonte de dados como um todo.

Sintaxe RecordInfo

RecordInfo( Registro, Informações )

  • Record – obrigatório. O registro a ser testado.
  • Informações – obrigatório. As informações desejadas para o registro.

Exemplos de RecordInfo

RecordInfo(Self.Selected.Item, RecordInfo.EditPermission )

Usado para a propriedade Visible neste exemplo. Verifica se o usuário conectado tem privilégio de edição para o registro selecionado. Se o usuário tiver permissão para editar este registro e modificar a fonte de dados Accounts em geral, RecordInfo retornará true e o comando ficará visível. Caso contrário, o comando não ficará visível para o usuário.

CountRows(Filter(Self.Selected.AllItems, RecordInfo(ThisRecord,RecordInfo.EditPermission)))>0

Usado para a propriedade Visible para o local Grade principal neste exemplo. O botão ficará visível para o usuário que estiver executando o aplicativo quando um ou mais registros na grade forem selecionados e o usuário tiver privilégio de edição para pelo menos um dos registros selecionados.

CountRows(Filter(Self.Selected.AllItems, RecordInfo(ThisRecord,RecordInfo.EditPermission)))=CountRows(Self.Selected.AllItems)

Usado para a propriedade Visible para o local Grade principal neste exemplo. O botão ficará visível para o usuário que estiver executando o aplicativo quando um ou mais registros na grade forem selecionados e o usuário tiver privilégio de edição para todos os registros selecionados.

Função DataSourceInfo

As fontes de dados podem fornecer uma infinidade de informações para otimizar a experiência do usuário.

Você pode usar as informações no nível da coluna para validar a entrada do usuário e fornecer comentários imediatos ao usuário antes de usar a função Patch. A função Validate usa essas mesmas informações.

Você pode usar informações no nível de fonte de dados, por exemplo, para desativar ou ocultar os botões Editar e Novo para usuários que não têm privilégios para editar nem criar registros.

Informações da tabela de fonte de dados

Você pode usar o DataSourceInfo para obter informações sobre uma fonte de dados como um todo. Para comandar, também é muito comum usar para Visibility. Por exemplo, para mostrar ou ocultar um comando dependendo se o usuário tem um ou mais privilégios para a tabela.

Argumento de Informações Tipo de Resultado Description
DataSourceInfo.AllowedValues Booliano Quais tipos de permissões podem ser concedidos aos usuários nessa fonte de dados? Se isso não for definido pela fonte de dados, em branco será retornado.
DataSourceInfo.CreatePermission Boolean O usuário atual tem privilégios para criar registros nessa fonte de dados? Se não definido pela fonte de dados, true será retornado.
DataSourceInfo.DeletePermission Boolean O usuário atual tem privilégios para excluir registros nessa fonte de dados? Se não definido pela fonte de dados, true será retornado.
DataSourceInfo.EditPermission Boolean O usuário atual tem privilégio para editar os registros nessa fonte de dados? Se não definido pela fonte de dados, true será retornado.
DataSourceInfo.ReadPermission Boolean O usuário atual tem privilégio para ler os registros nessa fonte de dados? Se não definido pela fonte de dados, true será retornado.

Observação

DataSourceInfo retorna verdadeiro se não puder determinar se o usuário atual tem a permissão solicitada. As permissões serão verificadas novamente pelo servidor quando a operação real for realizada, e um erro será exibido se não houver permissão. Neste momento, a verificação de permissões com DataSourceInfo só é possível quando se usa o Microsoft Dataverse.

Sintaxe DataSourceInfo

DataSourceInfo( DataSource, Informações, ColumnName )

  • DataSource – Obrigatório. A fonte de dados a ser usada.
  • Informações – obrigatório. O tipo de informações que você deseja recuperar.
  • ColumnName – opcional. Para informações no nível de coluna, o nome da coluna como uma cadeia de caracteres. A coluna Phone seria passada como "Phone", incluindo as aspas duplas. Para obter informações no nível de fonte de dados, o argumento ColumnName não pode ser usado.

Informações da coluna Fonte de Dados

Você pode usar o DataSourceInfo para obter informações sobre uma determinada coluna de uma fonte de dados.

Argumento de Informações Tipo de Resultado Description
DataSourceInfo.DisplayName Cadeia de Caracteres Nome de exibição para a coluna. Se nenhum nome de exibição for definido, o nome da coluna será retornado.
DataSourceInfo.MaxLength Número Número máximo de caracteres que a coluna pode conter. Aplica-se somente às colunas que contêm cadeias de caracteres. Se um máximo não for definido, em branco será retornado.
DataSourceInfo.MaxValue Número Valor numérico máximo que uma coluna pode conter. Aplica-se somente às colunas que contêm números. Se um máximo não for definido, em branco será retornado.
DataSourceInfo.MinValue Número Valor numérico mínimo que uma coluna pode conter. Aplica-se somente às colunas que contêm números. Se um mínimo não for definido, em branco será retornado.
DataSourceInfo.Required Booliano Esta coluna exige um valor específico? Se não for definido pela fonte de dados, falso será retornado.

Exemplos de DataSourceInfo

DataSourceInfo(Accounts, DataSourceInfo.DeletePermission)

Usado para a propriedade Visible neste exemplo. Verifica se o usuário conectado tem privilégio de exclusão para registros na tabela de contas (determinado pelos direitos de acesso que o usuário possui). Se o usuário tiver permissão para excluir registros de conta, DataSourceInfo retornará verdadeiro e o comando ficará visível. Caso contrário, o comando não ficará visível para o usuário.

Função "Confirmar"

A função Confirm exibe uma caixa de diálogo no topo da tela atual. Dois botões são fornecidos: um botão Confirmar e um botão Cancelar, que têm como padrão versões localizadas de "OK" e "Cancelar", respectivamente. O usuário deve confirmar ou cancelar antes que a caixa de diálogo seja descartada e a função retorne. Além do botão de diálogo, cancelar também pode ser selecionado com a tecla Esc ou outros gestos específicos da plataforma.

O parâmetro Message é exibido no corpo da caixa de diálogo. Se a mensagem for muito longa, ela será truncada ou será fornecida uma barra de rolagem.

Use o parâmetro OptionsRecord para especificar opções para a caixa de diálogo. Nem todas as opções estão disponíveis em todas as plataformas e são tratadas com base no "melhor esforço".

Observação

As opções na tabela abaixo não estão disponíveis atualmente com aplicativos de tela.

Campo de Opção Descrição
ConfirmButton O texto a ser exibido no botão confirmar, substituindo o texto "OK" localizado, padrão.
CancelButton O texto a ser exibido no botão cancelar, substituindo o texto "Cancelar" localizado, padrão.
Título O texto a ser exibido como título da caixa de diálogo. Uma fonte em negrito maior do que a fonte da mensagem pode ser usada para exibir este texto. Se esse valor for muito longo, ele será truncado.
Subtítulo O texto a ser exibido como subtítulo da caixa de diálogo. Uma fonte em negrito maior do que a fonte da mensagem pode ser usada para exibir este texto. Se esse valor for muito longo, ele será truncado.

Confirm retornará verdadeiro se o botão de confirmação tiver sido selecionado e falso, caso contrário.

Use a função Notify para exibir uma faixa na parte superior do aplicativo que não precisa ser descartada.

Observação

A função Notify não está disponível atualmente com aplicativos de tela.

Sintaxe

Confirm( Message [, OptionsRecord ] )

  • Message - obrigatório. Mensagem a ser exibida ao usuário.
  • OptionsRecord - opcional. Fornece opções avançadas para a caixa de diálogo. Nem todas as opções estão disponíveis em todas as plataformas e são tratadas com base no melhor esforço. No momento, em aplicativos de tela, nenhuma dessas opções é compatível.

Exemplos

Caixa de diálogo de confirmação simples, solicitando ao usuário que confirme a exclusão de um registro antes de removê-lo. A menos que o usuário selecione o botão OK, o registro não será excluído.

If( Confirm( "Are you sure?" ), Remove( ThisItem ) )

Mesma caixa de diálogo que o último exemplo, mas adiciona o texto do título.

If( Confirm( "Are you sure?", {Title: "Delete Confirmation"} ), Remove( ThisItem ) )

Exibe uma mensagem semelhante à função Notify, mas é modal e exige que o usuário selecione um botão para continuar. Use em situações em que é importante que o usuário reconheça a mensagem antes de prosseguir. Nesse caso, não é importante o botão selecionado.

Confirm( "There was a problem, please review your order." )

Adicionar notificações a um aplicativo baseado em modelo

Uma notificação pode ser mostrada a usuários do aplicativo chamando a função de notificação.

Notify( "Model-driven app notification message" )

Outros exemplos

Iniciar uma URL

Launch("https://www.bing.com");

Acessar a propriedade 1:N

Self.Selected.Item.'Recurring Appointments'
Self.Selected.Item.'Parent Account'.'Account Name'="parent"

Funções do Power Fx sem suporte

Funções sem suporte

No momento, as seguintes funções do Power Fx não são compatíveis com comandos em aplicativos baseados em modelos.

  • Back()
  • Clear()
  • Collect()
  • Disable()
  • Enable()
  • Exit()
  • InvokeControl()
  • LoadData()
  • Param()
  • ReadNFC()
  • RequestHide()
  • Revert()
  • SaveData()
  • ResetForm()
  • ScanBarcode()
  • Set()
  • SubmitForm()
  • UpdateContext()
  • ViewForm()

Enums sem suporte

  • BorderStyle
  • Color
  • Direction
  • DisplayMode
  • LayoutMode
  • LayoutAlignItems
  • AlignInContainer
  • LayoutJustifyContent
  • LayoutOverflow
  • Fonte
  • FontWeight
  • ImagePosition
  • Layout
  • LayoutDirection
  • TextPosition
  • TextMode
  • TextFormat
  • VirtualKeyboardMode
  • TeamsTheme
  • Temas
  • PenMode
  • RemoveFlags
  • ScreenTransition
  • Align
  • VerticalAlign
  • Transição
  • Disparo
  • MapStyle
  • GridStyle
  • LabelPosition
  • Aplicar Zoom
  • PDFPasswordState
  • BarcodeType
  • ImageRotation
  • FormPattern
  • ListItemTemplate
  • LoadingSpinner
  • Ativação
  • TextRole
  • ScreenSize
  • Icon
  • MessageSource

Outras áreas sem suporte

  • Aceleração
  • Apl
  • Bússola
  • Conexão
  • Ambiente
  • Host
  • Local
  • Layout
  • ScreenSize
  • Usuário

Consulte também

Entender fórmulas comportamentais

Referência de fórmula

Visão geral do Power Fx