Operadores e identificadores en Power Apps

Algúns destes operadores dependen do idioma do autor. Consulte Aplicacións globais para obter máis información.

Símbolo Tipo Sintaxe Descripción
. Seleccionar de propiedades Slider1.Value
Color.Red
Acceleration.X
Extrae unha propiedade dunha táboa, control, sinal ou enumeración. Para unha compatibilidade retroactiva, ! tamén se pode usar.
.
[dependente do idioma]
Separador decimal 1.23 Separador entre partes enteiras e fraccionarias dun número. O carácter depende do idioma.
( ) Parénteses Filter(T, A < 10)

(1 + 2) * 3
Aplica a orde de precedencia e agrupa subexpresións nunha expresión maior
+ Operadores aritméticos 1 + 2 Adición
-   2 - 1 Subtracción e signo
*   2 * 3 Multiplicación
/   2 / 3 División (ver tamén a función Mod)
^   2 ^ 3 Potenciación, equivalente á función Power
%   20 % Porcentaxe (equivalente a "* 1/100")
= Operadores de comparación Prezo = 100 Igual que
>   Prezo > 100 Superior a
>=   Prezo >= 100 Maior ou igual que
<   Prezo < 100 Inferior a
<=   Prezo <= 100 Menor ou igual que
<>   Prezo <> 100 Non igual que
& Operador de concatenación de cadeas "ola" & " " & "mundo" Fai que varias cadeas aparezan de forma continua
&& ou And Operadores lóxicos Prezo < 100 && Slider1.Value = 20
ou Prezo < 100 And Slider1.Value = 20
Conxunción lóxica, equivalente á función And
|| ou Or   Prezo < 100 || Slider1.Value = 20 ou Prezo < 100 Or Slider1.Value = 20 Disxunción lóxica, equivalente á función Or
! ou Not   !(Prezo < 100) ou Not (Prezo < 100) Negación lóxica equivalente á función Not
exactin Operadores de afiliación Gallery1.Selected exactin SavedItems Pertencente a unha colección ou unha táboa
exactin   "Windows" exactin "Para mostrar ventás no sistema operativo de Windows..." Proba de subcadea (distingue maiúsculas de minúsculas)
en   Gallery1.Selected in SavedItems Pertencente a unha colección ou unha táboa
en   "Operador" in "Teclado e monitor..." Proba de subcadea (non distingue maiúsculas de minúsculas)
@ Operador de desambiguación MyTable[@fieldname] Desambiguación de campos
@   [@MyVariable] Desambiguación global
,
[dependente do idioma]
Separador de lista Se ( X < 10, "Baixo", "Bo" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Separa:
  • argumentos nas chamadas de función
  • campos nun rexistro
  • rexistros nunha táboa
Este carácter depende do idioma.
;
[dependente do idioma]
Encadeamento de fórmulas Collect(T, A); Navigate(S1, "") Invocacións separadas de funcións nas propiedades de comportamento. O operador de encadeamento depende do idioma.
Como Operador As AllCustomers como cliente Anula ThisItem e ThisRecord en galerías e funcións co ámbito do rexistro. As é útil para ofrecer un nome mellor e específico e é especialmente importante en escenarios aniñados.
Automático Operador automático Self.Fill Acceso ás propiedades do control actual
Principal Operador principal Parent.Fill Acceso ás propiedades dun contedor de controis
ThisItem Operador ThisItem ThisItem.FirstName Acceso aos campos dun control de formulario ou galería
ThisRecord Operador ThisItem ThisRecord.FirstName Acceso ao rexistro completo e campos individuais do rexistro en ForAll, Sum, With e outras funcións do ámbito do rexistro. Pódese anular co operador As.

Operadores in e exactin

Use os operadores in e exactin para atopar unha cadea nunha orixe de datos, como unha colección ou unha táboa importada. O operador in identifica as coincidencias independentemente do caso e o operador exactin identifica as coincidencias só se usan as mesmas maiúsculas. Este é un exemplo:

  1. Cree ou importe unha colección nomeada Inventario e móstrea nunha galería, como se describe no primeiro procedemento en Mostrar imaxes e texto nunha galería.

  2. Axuste a propiedade Elementos da galería nesta fórmula:
    Filter(Inventory, "E" in ProductName)

    A galería mostra todos os produtos, excepto Callisto, porque o nome dese produto é o único que non contén a letra que especificou.

  3. Modifique a propiedade Elementos da galería nesta fórmula:
    Filter(Inventory, "E" exactin ProductName)

    A galería só mostra Europa porque só o seu nome contén a letra que especificou no caso especificado.

Operadores ThisItem, ThisRecord e As

Algúns controis e funcións aplican fórmulas aos rexistros individuais dunha táboa. Para referirse ao rexistro individual nunha fórmula, use un dos seguintes:

Operador Aplícase a Descripción
ThisItem Control Galería
Control Editar  formulario 
Control Mostrar formulario
O nome predeterminado do rexistro actual nunha Galería ou control de formulario.
ThisRecord ForAll, Filter, With, Sum e outras funcións do ámbito do rexistro O nome predeterminado para o rexistro actual en ForAll e outras funcións do ámbito do rexistro.
Como nome Control Galería
ForAll, Filter, With, Sum e outras funcións do ámbito do rexistro
Define un nome para o rexistro actual, substituíndo o valor de ThisItem ou ThisRecord predeterminado. Usa As para facilitar as fórmulas para comprender e resolver a ambigüidade ao aniñar.

Operador ThisItem

Por exemplo, no seguinte control de Galería, a propiedade Elementos está definida na orixe de datos de Empregados (como a entidade Empregados incluída coa Mostra de comerciantes de Northwind ):

Employees

Empregados amosados nunha galería

O primeiro elemento da galería é un modelo que se replica para cada empregado. Na plantilla, a fórmula da imaxe usa ThisItem para referirse ao elemento actual:

ThisItem.Picture

Fórmula para a imaxe dun empregado

Do mesmo xeito, a fórmula do nome tamén usa ThisItem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Fórmula para o nome e apelidos dun empregado

Operador ThisRecord

ThisRecord úsase en funcións que teñen un ámbito de rexistro. Por exemplo, podemos usar a función Filter coa propiedade Elementos da nosa galería para que só mostre os nomes que comezan por M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

Filtrado dos empregados en función do nome, usando ThisRecord

ThisRecord é opcional e está implicado usando directamente os campos. Por exemplo, neste caso, puidemos escribir:

Filter( Employees, StartsWith( 'First Name', "M" ) )

Aínda que sexa opcional, empregar ThisRecord pode facer que as fórmulas sexan máis fáciles de entender e poden ser necesaria en situacións ambiguas onde un nome de campo tamén pode ser un nome de relación. ThisRecord é opcional mentres que ThisItem sempre se require.

Use ThisRecord para facer referencia a todo o rexistro con Patch, Collect e outras funcións do ámbito do rexistro. Por exemplo, a seguinte fórmula establece o estado de todos os empregados inactivos en activos:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees, 
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

Operador As

Use o operador As para dar nome a un rexistro nunha función de galería ou do ámbito do rexistro, que anule o valor predeterminado de ThisItem ou ThisRecord. Dar nome ao rexistro pode facer que as súas fórmulas sexan máis fáciles de entender e pode ser necesario en situacións aniñadas para acceder a rexistros noutros ámbitos.

Por exemplo, pode modificar o a propeidade Elementos da nosa galería para usar As para identificar que estamos a traballar cun empregado:

Employees As Employee

Galería de empregados, co operador As

As fórmulas para a imaxe e o nome axústanse para usar este nome para o rexistro actual:

Employee.Picture

Imaxe dun empregado que usa o nome de Empregado establecido co operador As

Employee.'First Name' & " " & Employee.'Last Name'

Nome e apelidos dun empregado que usa o nome de Empregado establecido co operador As

As tamén se pode usar con funcións do ámbito do rexistro para substituír o nome por defecto ThisRecord. Podemos aplicar isto ao noso exemplo anterior para aclarar o rexistro co que estamos a traballar:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee, 
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

Ao aniñar galerías e funcións do ámbito do rexistro, ThisItem e ThisRecord refírense sempre ao ámbito máis interno, deixando os rexistros en ámbitos externos non dispoñibles. Use As para facer que todos os ámbitos do rexistro estean dispoñibles dándolle a cada un un nome único.

Por exemplo, esta fórmula produce un padrón de taboleiro de xadrez como unha cadea de texto ao aniñar dúas funcións ForAll:

Concat( 
    ForAll( Sequence(8) As Rank,
        Concat( 
            ForAll( Sequence(8) As File, 
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " ) 
            ),
            Value 
        ) & Char(10) 
    ), 
    Value 
)

Ao configurar a propiedade Texto dun control de Etiqueta nesta fórmula móstrase:

Texto de táboa de xadrez que se mostra nun control de etiqueta

Descifremos o que está pasando aquí:

  • Comezamos por repetir unha táboa sen nome de 8 rexistros numerados a partir da función Sequence. Este bucle é para cada liña do taboleiro, ao que se denomina comunmente Rango e así lle damos este nome.
  • Para cada liña, repetimos outra táboa sen nome de 8 columnas e dámoslle o nome común Ficheiro.
  • Se Rango.Valor + Ficheiro.Valor é un número impar, o cadrado obtén un X, se non, un punto. Esta parte da fórmula fai referencia a ambos bucles ForAll, posible mediante o uso do operador As.
  • Concat úsase dúas veces, primeiro para montar as columnas e logo as filas, con Char(10) engadida para crear unha nova liña.

Un exemplo similar é posible con controis de Galería aniñados en vez de funcións ForAll. Comecemos coa galería vertical para Rango. Este control da galería terá unha fórmula de Elementos de:

Sequence(8) as Rank

Ilustración da galería exterior que proporciona a repetición de Rango

Dentro desta galería, colocaremos unha galería horizontal para Ficheiro, que se replicará para cada Rango, cunha propiedade de Elementos de:

Sequence(8) as File

Ilustración da galería interior que proporciona a repetición de Ficheiro

E finalmente, dentro desta galería, engadiremos un contorl de Etiqueta que se replicará para cada Ficheiro e cada Rango. Dimensionarémolo para cubrir todo o espazo e empregar a propiedade Encher para proporcionar a cor con esta fórmula:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

Control de etiqueta dentro das dúas galerías que fornece as cores alternativas para o taboleiro de xadrez

Operadores autónomos e principais

Hai tres xeitos de referirse a un control e ás súas propiedades dentro dunha fórmula:

Método Descripción
Por nome do control Pódese facer referencia a calquera control polo nome desde calquera parte da aplicación.

Por exemplo, Label1.Fill refírese á propiedade de recheo do control cuxo nome é Etiqueta1.
Operador automático Con frecuencia é conveniente facer referencia a outra propiedade do mesmo control cando se escribe unha fórmula. En lugar de usar unha referencia absoluta por nome, é máis sinxelo e portátil usar unha referencia relativa a unmesmo. O operador Auto ofrece acceso sinxelo ao control actual.

Por exemplo, Self.Fill fai referencia á cor de recheo do control actual.
Operador principal Algúns controis acollen outros controis, como os de Pantalla e Galería. O control de aloxamento dos controis interiores chámase principal. Como o operador Automático, o operador Principal ofrece unha referencia relativa doada ao control do contedor.

Por exemplo, Parent.Fill fai referencia á propiedade de recheo do control que é o recipiente para o control actual.

Auto e Principal son operadores e non propiedades dos propios controis. Non se admite facer referencia a Parent.Parent, Self.Parent ou Parent.Self.

Nomes de identificadores

Os nomes de variables, orixes de datos, columnas e outros obxectos poden conter calquera Unicode.

Empregue comiñas simples ao redor dun nome que conteña un espazo ou outro carácter especial.
Use dúas comiñas simples xuntas para representar unha única cita no nome. Os nomes que non conteñan caracteres especiais non precisan comiñas simples.

Aquí están algúns exemplos de nomes de columnas que pode atopar nunha táboa e como se representan nunha fórmula:

Nome de columna nunha base de datos Referencia de columna nunha fórmula
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
Nome con espazos 'Name with spaces'
Nome con comiñas "dobres" 'Name with "double" quotes'
Nome con comiñas 'simples' 'Name with ''single'' quotes'
Nome cun signo @ 'Name with an @ at sign'

As comiñas dobres úsanse para designar cadeas de texto.

Nomes para mostrar e nomes lóxicos

Algunhas orixes de datos, como SharePoint e Common Data Service, teñen dous nomes diferentes para referirse á mesma táboa ou columna de datos:

  • Nome lóxico: nome que se garante que é único, non cambia despois de crealo, normalmente non permite espazos nin outros caracteres especiais e non está localizado en diferentes idiomas. Como resultado, o nome pode ser críptico. Estes nomes úsanos os programadores profesionais. Por exemplo, cra3a_customfield. Este nome tamén se pode denominar nome do esquema ou simplemente nome.

  • Nome para mostrar: nome descritivo e deseñado para que o vexan os usuarios finais. Este nome pode non ser único, pode cambiar co paso do tempo, pode conter espazos e calquera carácter Unicode e pode localizarse en diferentes idiomas. En correspondencia co exemplo anterior, o nome para mostrar pode ser un Campo personalizado con espazo entre as palabras.

Dado que os nomes para mostrar son máis fáciles de entender, as aplicacións de lenzo suxeriranos como opcións e non suxerirán nomes lóxicos. Aínda que os nomes lóxicos non se suxiren, poden usarse se se escriben indirectamente.

Por exemplo, imaxine que engadiu un Campo personalizado a unha entidade en Common Data Service. O sistema asignaralle un nome lóxico que só pode modificar ao crear o campo. O resultado sería semellante ao seguinte:

Entidade de contas cun campo personalizado engadido, que mostra un nome de "Campo personalizado" e un nome lóxico de "cr5e3_customfield"

Ao crear unha referencia a un campo de Contas, farase unha suxestión para usar "Campo personalizado", xa que este é o nome para mostrar. Teña en conta que deben usarse as comiñas simples porque este nome inclúe un espazo:

A barra de fórmulas de Studio mostra suxestións para os nomes de campos de Contas co nome para mostrar "Campo personalizado" realzado

Despois de seleccionar a suxestión, "Campo personalizado" móstrase na barra de fórmulas e os datos recupéranse:

A barra de fórmulas de Studio mostra o uso do nome para mostrar "Campo personalizado" do campo

Aínda que non se suxire, tamén poderiamos usar o nome lóxico para este campo. Isto fará que se recuperen os mesmos datos. Teña en conta que non se necesitan comiñas simples, xa que este nome non contén espazos nin caracteres especiais:

A barra de fórmulas de Studio mostra o uso do nome lóxico cr5e3_customfield do campo

En segundo plano, mantense unha asignación entre os nomes para mostrar que aparecen nas fórmulas e os nomes lóxicos subxacentes. Dado que os nomes lóxicos deben usarse para interactuar coa orixe de datos, esta asignación úsase para converter automaticamente do nome para mostrar actual ao nome lóxico e iso é o que se ve no tráfico da rede. Esta asignación tamén se usa para volver converter en nomes lóxicos para cambiar a novos nomes para mostrar, por exemplo, se un nome para mostrar cambia ou un fabricante nun idioma diferente edita a aplicación.

Nota

Os nomes lóxicos non se traducen ao mover unha aplicación entre ambientes. No caso dos nomes de campos e entidades do sistema de Common Data Service, isto non debería ser un problema, xa que os nomes lóxicos son coherentes nos ambientes. No entanto, os campos personalizados, como cra3a_customfield neste exemplo anterior, poden ter un prefixo de ambiente diferente (cra3a neste caso). Os nomes para mostrar teñen preferencia, xa que poden coincidir cos nomes para mostrar do novo ambiente.

Desambiguación de nomes

Dado que os nomes para mostrar non son únicos, o mesmo nome para mostrar pode aparecer máis dunha vez na mesma entidade. Cando isto suceda, o nome lóxico engadirase ao final do nome para mostrar entre parénteses para un dos nomes en conflito. Baseándose no exemplo anterior, se houbese un segundo campo co mesmo nome para mostrar de Campo personalizado cun nome lóxico de cra3a_customfieldalt, mostraríanse as suxestións:

Barra de fórmulas de Studio que mostra o uso do nome lóxico cr5e3_customfieldalt para eliminar a ambigüidade entre as dúas versións de "Campo personalizado"

As cadeas de desambiguación de nomes engádense noutras situacións nas que se producen conflitos de nomes, como os nomes de entidades, conxuntos de opcións e outros elementos de Common Data Service.

Operador de desambiguación

Algunhas funcións crean ámbitos de rexistro para acceder aos campos da táboa ao procesar cada rexistro, como Filter, AddColumns e Sum. Os nomes de campos engadidos co ámbito de rexistro anulan os mesmos nomes doutros lugares da aplicación. Cando isto sucede, aínda pode acceder a valores desde fóra do ámbito de rexistro co operador de desambiguación @:

  • Para acceder a valores desde ámbitos de rexistro aniñados, use o operador @ co nome da táboa que se opera ao usar este padrón:
    Table[@FieldName]
  • Para acceder a valores globais, como orixes de datos, coleccións e variables de contexto, use o padrón [@ObjectName] (sen designación de táboa).

Para máis información e exemplos, consulte ámbitos de rexistro.