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