Funções AsType e IsType
Aplica-se a: Aplicativos de tela CLI de aplicativos Power Pages Power Platform controlados por modelo
Verifica uma referência de registo para um tipo de tabela específico (IsType) e trata a referência como um tipo específico (AsType).
Nota
Os comandos PAC CLI pac power-fx não suportam IsType.
Descrição
Leia Noções sobre referências de registo e pesquisas polimórficas para obter uma introdução mais ampla e mais detalhes.
Um campo de pesquisa geralmente refere-se a registos numa tabela em particular. Como o tipo de tabela está bem estabelecido, pode aceder aos campos da pesquisa usando uma simples notação de pontos. Por exemplo, Primeira(Contas). 'Contacto principal'. 'Nome Completo caminha da tabela Contas para o registo de contacto primário na tabela Contactos e extrai o campo Nome Completo.
Microsoft Dataverse também suporta campos de pesquisa polimórfica, que se podem referir a registos de um conjunto de tabelas, como nestes exemplos.
Campo de pesquisa | Podem fazer referência a |
---|---|
Proprietário | Utilizadores ou Equipas |
Cliente | Contas ou Contactos |
No que diz respeito à | Contas, Contactos, Artigos de Conhecimento, etc. |
Nas fórmulas de aplicações de tela, utilize referências de registos para trabalhar com pesquisas polimórficas. Como uma referência recorde se pode referir a diferentes tabelas, não sabe que campos estarão disponíveis quando escrever uma fórmula. A notação Registo.Campo não está disponível. Essas fórmulas têm de se adaptar aos registos que a aplicação encontra quando é executada.
A função IsType testa se a referência de um registo se refere a um tipo de tabela específico. A função devolve um valor booleano TRUE ou FALSE.
A função AsType trata uma referência de registo como um tipo de tabela específico, por vezes referido como seleção. Pode utilizar o resultado como se fosse um registo da tabela e utilizar novamente a notação Record.Field para aceder a todos os campos desse registo. Ocorre um erro se a referência não for do tipo específico.
Utilize estas funções em conjunto para primeiro testar o tipo de tabela de um registo e, em seguida, tratá-lo como um registo desse tipo de modo que os campos estejam disponíveis:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Só necessita destas funções se estiver a aceder aos campos de uma referência de registo. Por exemplo, pode utilizar referências de registo na função Filter sem IsType ou AsType:
Filter( Accounts, Owner = First( Users ) )
Da mesma forma, pode utilizar referências de registo com a função Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Se for utilizado num contexto de registo, como dentro de um controlo de Gallery ou Edit form, poderá ser necessário utilizar o operador global de desambiguação para fazer referência ao tipo de tabela. Por exemplo, esta fórmula seria eficaz para uma galeria que esteja a apresentar uma lista de contactos em que o Nome da Empresa seja uma pesquisa de Cliente:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Para ambas as funções, especifique o tipo através do nome do origem de dados que está ligado à tabela. Para que a fórmula funcione, também tem de adicionar um origem de dados à aplicação para quaisquer tipos que pretenda testar ou converter. Por exemplo, deve adicionar a tabela de Utilizadores como uma origem de dados se quiser utilizar IsType e AsType com uma pesquisa do Proprietário e registos a partir dessa tabela. Pode adicionar apenas as fontes de dados que realmente utiliza na sua aplicação; não precisa de adicionar todas as tabelas a que uma pesquisa possa fazer referência.
Se a referência do registo estiver blank, IsType devolverá FALSE e AsType devolve blank. Todos os campos de registo blank ficarão em branco.
Sintaxe
AsType(RecordReference,TableType )
- RecordReference - Obrigatório. Uma referência de registo, muitas vezes um campo de pesquisa que se pode referir a um registo em qualquer uma das várias tabelas.
- TableType - Obrigatório. A tabela específica para a qual o disco deve ser convertido.
IsType(RecordReference,TableType )
- RecordReference - Obrigatório. Uma referência de registo, muitas vezes um campo de pesquisa que se pode referir a um registo em qualquer uma das várias tabelas.
- TableType - Obrigatório. A tabela específica para a qual testar.
Exemplo
Compreender referências de registros e pesquisas polimórficas contém exemplos extensos.
Crie uma aplicação de tela em branco para tablets.
No painel esquerdo, selecione Dados>Adicionar dados. E, em seguida, adicione tabelas de Contas e Contactos.
No painel esquerdo, selecione + (Inserir) >Esquema>Galeria vertical em branco.
Selecione Ligar os dados e, em seguida, selecione Contactos como origem de dados.
Defina o esquema da galeria como Título e Subtítulo.
No painel Dados, abra a lista Title1 e, em seguida, selecione Nome Completo.
Selecione o controlo de etiqueta Subtitle1.
Defina a propriedade Text de Subtitle1 para esta fórmula:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
O subtítulo na galeria mostra estes valores:
- "--" se o "Nome da Empresa" for blank.
- "Conta: " e, em seguida, o campo Nome de Conta da tabela Contas se o campo Nome da Empresa se referir a uma conta.
- "Contacto: " e, em seguida, o campo Nome completo da tabela Contactos se o campo Nome da Empresa se referir a um contacto.
Os resultados poderão ser diferentes daqueles existentes neste tópico porque utilizam dados de exemplo que foram modificados para mostrar tipos de resultados adicionais.