Utilizar o Power Fx com comandos

Este artigo abrange aspetos do Power Fx específicos aos comandos. Muitas outras funções que estão a ser usadas hoje em dia nas aplicações de tela também podem ser usadas. Tenha em atenção que existem diferenças porque os comandos destinam-se a aplicações condicionadas por modelo.

  • Todas as funções de fluxo de dados existentes são suportadas. O que são fluxos de dados?
  • As funções imperativas que funcionam com os dados são suportadas.
  • As funções imperativas para Confirm e Notify simples são suportadas.
  • Para uma lista de funções não suportadas, aceda a Funções não suportadas.

Nota

A publicação dos comandos do Power Fx poderá demorar alguns minutos. Pode não parecer que as operações em segundo plano ainda estão em execução mesmo depois de a operação de publicação parece ter sido concluída. Poderá ter de aguardar alguns minutos após a publicação; em seguida, atualize a aplicação para ver as alterações refletidas. Normalmente, a primeira vez que um comando baseado em Power Fx é publicado para uma aplicação demora mais tempo.

OnSelect

Define a lógica que é executada quando o botão for selecionado na aplicação.

Visible

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

Para definir lógica de visibilidade, selecione o comando. Em seguida, selecione Visibility no painel de propriedades do comando direito e escolha Mostrar na condição a partir da fórmula. Pode selecionar Visible à esquerda da barra de fórmulas e, em seguida, escreveu uma expressão no Power Fx utilizando a barra de fórmulas.

Propriedade selecionada

Campo Tipo Descrição
Item Registo de DataSource Um dos registos selecionados a partir de DataSource.
AllItems Tabela de registos de DataSource Todos os registos selecionados a partir de DataSource.
Estado Enumerar Estado do controlo selecionado. Editar (=0), Novo (=1), Vista (=2)
Não guardado Boolean Devolve true se Selected ou SelectedItems tiverem alterações não guardadas. Caso contrário, devolve false. Devolve sempre false se AutoSave estiver definido como true (opção predefinida) na biblioteca do componentes de comandos.
  • A propriedade Selected é fornecida para o anfitrião do comando.
  • Os nomes Item e AllItems são relativamente consistentes com o controlo Caixa de verificação e o controlo Galeria, mas este é um novo padrão.
  • Se não houver registo selecionado, Item devolve Blank (IsBlank devolve true) e AllItems devolve uma tabela vazia (IsEmpty devolve true).
  • DataSource nula para referências de registo (tipos de registo polimórfico). As funções genéricas podem ser chamadas, como Guardar ou IsType/AsType, podem ser utilizadas.
  • Item está sempre em branco, se SelectionMax <> 1. Isto impede a escrita de fórmulas para apenas um item e não dimensionar para mais de um.

AutoSave

  • Muitos comandos JavaScript começam por guardar a memória intermédia do formulário. Isto deve-se ao facto de facilitar o resto do trabalho com o código.
  • Por predefinição, a memória intermédia do formulário é guardada em nome do criador de aplicações.
    • O formulário é guardado antes de o comando ser iniciado.
    • Quaisquer problemas que ocorram durante a operação de gravação serão tratados dentro da IU do formulário.

Função Patch

Aplica um patch (atualização) ao registo selecionado atual

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

Nota

Se a tabela relacionada ainda não se estiver na biblioteca de componentes de comandos, terá de abri-la no estúdio de tela e adicionar o origem de dados aí.

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

Verificar e editar 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: mostrar apenas o comando se um ou mais registos forem selecionados numa vista de grelha

CountRows(Self.Selected.AllItems) > 0

Controlo da visibilidade com base em dados de registo

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

Nota

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

Para navegar para uma página de tela personalizada numa aplicação condicionada por modelo, transmita o nome da página como primeiro argumento.

Navigate( myCustomPage )

Para navegar para a vista predefinida da tabela, transmita o nome da tabela como primeiro argumento.

Navigate( Accounts )

Para navegar para uma vista do sistema específica da tabela, transmita a enumeração Views da tabela.

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

Para navegar para o formulário predefinido da tabela, transmita o registo como o primeiro argumento.

Navigate( Gallery1.Selected )

Para navegar para o formulário predefinido da tabela, transmita um registo do Dataverse criado a partir da função Predefinições. Isto abre o formulário predefinido com o registo como um novo registo. A função Predefinições fica com o nome da tabela para criar o registo.

Navigate( Defaults( Accounts ) )

Otimizar a experiência de utilizador com origens de dados e gravar informações

Utilize a função DataSourceInfo e a função RecordInfo para otimizar a experiência de utilizador com informações sobre os dados que estão a ser apresentados e manipulados.

Por exemplo, utilize RecordInfo para determinar se o utilizador atual tem permissão para modificar um registo e mostrar ou ocultar apropriadamente um botão "Editar" utilizando a respetiva propriedade Visible:

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

Por exemplo, use DataSourceInfo para determinar se o utilizador atual tem permissão para criar um registo e mostrar ou ocultar devidamente um botão "Criar" utilizando a sua propriedade Visible:

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

Pedir confirmação antes de agir

Utilize a função Confirm para apresentar uma caixa de diálogo na parte superior do ecrã atual.

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

Apresenta uma notificação true se o botão Sim for premido e uma notificação false se o botão Não for premido.

Notificar o utilizador

Uma notificação pode ser mostrada aos utilizadores da aplicação chamando a função Notify.

Nota

Atualmente, NotificationType.Success não é suportado e irá resultar num tipo de notificação informativa.

Notify( "Model-driven app notification message" )

Outros exemplos

Iniciar um URL

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

Aceder à propriedade 1:N

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

Funções não suportadas

As seguintes funções do Power Fx não são atualmente suportadas com comandos em aplicações condicionadas por modelo.

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

Enumerações não suportadas

  • 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 não suportadas

  • Acceleration
  • App
  • Compass
  • Connection
  • Colunas de tipo de ficheiro Dataverse
  • Environment
  • Host
  • Layout
  • Localização
  • ScreenSize

Consulte também

Compreender fórmulas comportamentais

Referência de fórmula

Descrição geral do Power Fx