Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Função | Aplica-se a |
|---|---|
| AsType |
|
| IsType |
|
Verifica se uma referência de registro é um tipo de tabela específico (IsType) e trata a referência como esse tipo (AsType).
Observação
Os comandos pac CLI pac power-fx não dão suporteIsType.
Description
As AsType funções e IsType as funções podem ser usadas para converter referências de registro (por exemplo, pesquisas polimórficas no Dataverse) e valores dinâmicos em valores tipados que podem ser usados diretamente.
Referências de Registro
Leia Compreender referências de registros e pesquisas polimórficas para uma introdução mais ampla e mais detalhes.
Um campo de pesquisa geralmente se refere a registros em uma tabela específica. Como o tipo de tabela está bem estabelecido, você pode acessar os campos da pesquisa usando uma notação de ponto simples. Por exemplo, First( Accounts ).'Primary Contact'.'Full Name' vai da tabela Accounts para o registro Primary Contact na tabela Contacts e extraia o campo Full Name.
O Microsoft Dataverse também oferece suporte a campos de pesquisa polimórficos, que podem se referir a registros de um conjunto de tabelas, como nestes exemplos.
| Campo de consulta | Pode fazer referência a |
|---|---|
| Proprietário | Usuários ou Equipes |
| Cliente | Contas ou Contatos |
| Referente a | Contas, Contatos, Artigos de Conhecimentoetc. |
Em fórmulas de aplicativo de tela, use referências de registro para trabalhar com pesquisas polimórficas. Como uma referência de registro pode se referir a tabelas diferentes, você não pode saber quais campos estão disponíveis em runtime ao escrever uma fórmula. A notação Record.Field não está disponível. Essas fórmulas precisam se adaptar aos registros que o aplicativo encontra quando ele é executado.
A IsType função verifica se uma referência de registro se refere a um tipo de tabela específico. A função retorna um Booliano TRUE ou FALSE.
A AsType função trata uma referência de registro como um tipo de tabela específico, também chamado de conversão. Use o resultado como se fosse um registro da tabela e use a notação Record.Field para acessar todos os campos desse registro. Se a referência não for do tipo específico, ocorrerá um erro.
Use essas funções em conjunto para primeiro verificar o tipo de tabela de um registro e, em seguida, tratá-lo como um registro desse tipo para 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'
)
Você só precisará dessas funções se acessar os campos de uma referência de registro. Por exemplo, você usa referências de registro na função Filter sem IsType ou AsType:
Filter( Accounts, Owner = First( Users ) )
Da mesma forma, você pode usar referências de registro com a função Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Quando você usa essas funções em um contexto de registro, como em um controle de formuláriode Edição ou Galeria, talvez seja necessário o operador de desambiguação global para fazer referência ao tipo de tabela. Por exemplo, essa fórmula funciona para uma galeria que exibe uma lista de contatos em que o Nome da Empresa é uma pesquisa do 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 usando o nome da fonte de dados conectada à tabela. Para que a fórmula funcione, adicione uma fonte de dados ao aplicativo para todos os tipos que você deseja verificar ou converter. Por exemplo, adicione a tabela Usuários como uma fonte de dados se você quiser usar IsType e AsType com uma pesquisa de proprietário e registros dessa tabela. Adicione apenas as fontes de dados que você usa em seu aplicativo; você não precisa adicionar todas as tabelas que uma pesquisa pode referenciar.
Se a referência de registro estiver em branco, IsType retornará FALSE e AsType retornará em branco. Todos os campos de um registro em branco também estarão em branco.
Valores dinâmicos
Importante
- Usar AsType e IsType com valores dinâmicos é um recurso experimental.
- Os recursos experimentais não são destinados ao uso de produção e podem não estar completos. Esses recursos são disponibilizados antes de um lançamento oficial para que você possa ter acesso antecipado e fornecer comentários. Mais informações: Compreender os recursos experimentais, em versão preliminar e descontinuados em aplicativos de tela
- O comportamento que este artigo descreve está disponível somente quando o recurso experimental Tipos definidos pelo usuário em Configurações > Recursos futuros > Experimentais está ativado (está desativado por padrão).
- Seus comentários são valiosos para nós. Dê a sua opinião no Fórum da comunidade de recursos experimentais do Power Apps.
Um valor dinâmico de uma API Web ou da função [ParseJSON ] precisa ser convertido em um valor tipado específico antes que você possa usá-lo no Power Fx. Aqui estão algumas opções:
- Digite implicitamente o campo no ponto em que você o usa. Por exemplo, um objeto será convertido em um número se você usá-lo com o
+operador, se ele puder ser convertido em um número. Essa opção pode causar conversões inesperadas e não pode converter registros e tabelas como um todo. - Digite explicitamente cada campo individualmente com as funções Decimal, Text, DateTime, GUID e outras funções de construtor de tipo. Essa opção é a mais invasiva para suas fórmulas porque você precisa fazer cada campo separadamente.
- Digite explicitamente o JSON com o segundo argumento para a função ParseJSON. Essa opção é fácil e evita a necessidade do valor dinâmico .
- Digite explicitamente um valor dinâmico usando a AsType função. Você também pode verificar o tipo antes de tentar a conversão com a IsType função.
Sintaxe
AsType( RecordReference, TableType )
- RecordReference - obrigatório. Uma referência de registro, geralmente um campo de pesquisa que se refere a um registro em qualquer uma das várias tabelas.
- TableType - obrigatório. A tabela específica para a qual converter o registro.
AsType( DynamicValue, TypeSpecification )
- DynamicValue – Obrigatório. Um valor dinâmico da função ParseJSON ou da chamada à API.
- TypeSpecification - Obrigatório. Um nome de tipo ou especificação de tipo que você define com a função Type.
IsType( RecordReference, TableType )
- RecordReference - obrigatório. Uma referência de registro, geralmente um campo de pesquisa que pode se referir a um registro em qualquer uma das várias tabelas.
- TableType - obrigatório. A tabela específica para a qual testar.
IsType( DynamicValue, TypeSpecification )
- DynamicValue – Obrigatório. Um valor dinâmico da função ParseJSON ou de uma chamada à API.
- TypeSpecification - Obrigatório. Um nome de tipo ou especificação de tipo definido com a função Type.
Exemplos
Referências de Registro
Noções básicas sobre referências de registros e pesquisas polimórficas contém exemplos extensos.
Crie um aplicativo de tela em branco para tablets.
No painel esquerdo, selecione Adicionar>dados e, em seguida, adicione as tabelas Contas e Contatos .
No painel esquerdo, selecione + (Inserir) >Galeria vertical layout>em branco.
Selecione Conectar-se aos dados e, em seguida, selecione Contacts como a fonte de dados.
Defina o layout da galeria como Título e subtítulo.
No painel Dados, abra a lista Title1 e selecione Full Name.
Selecione o controle de rótulo Subtitle1.
Defina a propriedade Text de Subtitle1 como 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 'Nome da Empresa' estiver em branco.
- "Conta: " e o campo Nome da Conta da tabela Contas se o campo Nome da Empresa se referir a uma conta.
- "Contato: " e o campo Nome Completo da tabela Contatos se o campo Nome da Empresa se referir a um contato.
Seus resultados podem ser diferentes porque os dados de exemplo podem ser modificados para mostrar mais tipos de resultados.
Valores dinâmicos
Os exemplos a seguir mostram um registro JSON simples interpretado de várias maneiras por ParseJSONAsType e IsType no PAC CLI Power Fx REPL.
Neste primeiro exemplo, nenhuma informação de tipo é fornecida ao ParseJSON, portanto, ela retorna um valor dinâmico.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>
O campo é implicitamente convertido em um número quando usado em um contexto numérico.
>> 1 + rec.a
2
Como alternativa, este exemplo converte explicitamente o registro em um registro do Power Fx digitado com o segundo argumento para ParseJSON,
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
E outra alternativa, este exemplo converte explicitamente o registro em um registro do Power Fx digitado usando AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Por fim, se você não tiver certeza, este exemplo testará o tipo antes de convertê-lo com a IsType função.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true