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
eNotify
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"})
Criar um registo relacionado
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
Navegar
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)
Navegue para uma página personalizada
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 )
Navegue para a vista predefinida da tabela
Para navegar para a vista predefinida da tabela, transmita o nome da tabela como primeiro argumento.
Navigate( Accounts )
Navegue para uma vista do sistema específico da tabela
Para navegar para uma vista do sistema específica da tabela, transmita a enumeração Views
da tabela.
Navigate( 'Accounts (Views)'.'My Active Accounts' )
Navegue para o formulário predefinido da tabela
Para navegar para o formulário predefinido da tabela, transmita o registo como o primeiro argumento.
Navigate( Gallery1.Selected )
Navegue para o formulário predefinido da tabela no modo de criação
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'
Marcar a propriedade de um registo relacionado
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()
- Impressão()
- 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