Usando 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. Você pode selecionar Visível à esquerda da barra de fórmulas e então escrever uma expressão do Power Fx usando a barra de fórmulas.

Propriedade selecionada

Campo Type Descrição
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 Galeria, mas esse é um novo padrão.
  • Se não houver nenhum 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 estará 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"})

Criar um registro relacionado

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 ) )

Otimizar a experiência do usuário com fontes de dados e informações de registro

Use a função DataSourceInfo e RecordInfo para otimizar a experiência do usuário com informações sobre os dados que estão sendo exibidos e manipulados.

Por exemplo, use RecordInfo para determinar se o usuário atual tem permissão para modificar um registro e mostrar ou ocultar adequadamente um botão "Editar" usando a propriedade Visible:

EditButton.Visible = 
   RecordInfo( Gallery1.Selected, RecordInfo.EditPermission )

Por exemplo, use DataSourceInfo para determinar se o usuário atual tem permissão para criar um registro e mostrar ou ocultar adequadamente um botão "Criar" usando a propriedade Visível:

CreateButton.Visible = 
   DataSourceInfo( Accounts, DataSourceInfo.CreatePermission )

Peça confirmação antes de agir

Use a função Confirm para exibir uma caixa de diálogo na parte superior da tela atual.

Notify( Confirm( "Are you sure?", 
                 { ConfirmButton: "Yes", CancelButton: "No" } 
        ) 
)

Exibe uma notificação de verdadeiro se o botão Sim for pressionado e uma notificação de falso se o botão Não for pressionado.

Usuário para notificar

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

Observação

No momento, NotificationType.Success não tem suporte e resultará em um tipo de notificação informativa.

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'

Verificar a propriedade de um registro relacionado

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

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()
  • Copy()
  • Disable()
  • Enable()
  • Exit()
  • InvokeControl()
  • Language()
  • LoadData()
  • Param()
  • Imprimir()
  • ReadNFC()
  • RequestHide()
  • ResetForm()
  • Revert()
  • SaveData()
  • ScanBarcode()
  • Set()
  • SubmitForm()
  • UpdateContext()
  • User()
  • ViewForm()

Enumerações sem suporte

  • Align
  • AlignInContainer
  • BarcodeType
  • BorderStyle
  • Color
  • Direction
  • DisplayMode
  • Font
  • FontWeight
  • FormPattern
  • GridStyle
  • ImagePosition
  • ImageRotation
  • LabelPosition
  • Layout
  • LayoutAlignItems
  • LayoutDirection
  • LayoutJustifyContent
  • LayoutMode
  • LayoutOverflow
  • ListItemTemplate
  • MapStyle
  • Overflow
  • PDFPasswordState
  • PenMode
  • RemoveFlags
  • ScreenTransition
  • TeamsTheme
  • TextFormat
  • TextMode
  • TextPosition
  • Themes
  • Transition
  • VerticalAlign
  • VirtualKeyboardMode
  • Zoom

Outras áreas sem suporte

  • Aceleração
  • Apl
  • Bússola
  • Conexão
  • Colunas de tipo de arquivo do Dataverse
  • Ambiente
  • Host
  • Layout
  • Localização
  • ScreenSize

Confira também

Entender fórmulas comportamentais

Referência de fórmula

Visão geral do Power Fx