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
ConfirmeNotifysimples 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"})
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
Navegar
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)
Navegar para uma página personalizada
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 )
Navegar até a exibição padrão da tabela
Para navegar até a visualização padrão da tabela, passe o nome da tabela como o primeiro argumento.
Navigate( Accounts )
Navegar até a exibição do sistema específico da tabela
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' )
Navegar até a forma padrão da tabela
Para navegar para o formulário padrão da tabela, passe o registro como o primeiro argumento.
Navigate( Gallery1.Selected )
Navegar até a forma padrão da tabela no modo de criação
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'
Verificar a propriedade de um registro relacionado
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
Comentários
Enviar e exibir comentários de