Condividi tramite


Funzione With

Si applica a: App canvas Flussi desktop di Copilot Studio App basate su modello Funzioni power platform dell'interfaccia della riga di comando di Power Platform Power Pages

Calcola i valori ed esegue azioni per un singolo record, inclusi i record inline dei valori denominati.

Descrizione

La funzione With valuta una formula per un singolo record. La formula può calcolare un valore e/o eseguire azioni, ad esempio la modifica di dati o l'uso di una connessione. Usa la funzione ForAll per valutare una formula per tutti i record in una tabella di record.

I campi di record attualmente in elaborazione sono disponibili nella formula. Utilizza l'operatore ThisRecord o fai semplicemente riferimento ai campi in base al nome come faresti con qualsiasi altro valore. L'operatore As può anche essere utilizzato per denominare il record in fase di elaborazione in modo da semplificare la comprensione della formula e rendere accessibili i record nidificati. Per altre informazioni, consulta gli esempi di seguito e la sezione sull'utilizzo nell'ambito dei record.

Usare With per migliorare la leggibilità delle formule complesse suddividendola in formule secondarie denominate più piccole. Questi valori denominati fungono da variabili locali semplici limitate all'ambito di With. La stessa sintassi di record inline usata con la funzione UpdateContext può essere usata con With. L'uso With è preferibile rispetto al contesto o alle variabili globali perché è indipendente, facile da comprendere e può essere usato in qualsiasi contesto di formula dichiarativa.

Usare With per accedere ai campi del record restituiti da funzioni come Patch o Match. With contiene il valore di queste funzioni abbastanza a lungo da usare in ulteriori calcoli o azioni.

Se l'argomento Record su With è un errore, tale errore verrà restituito dalla funzione e la formula non verrà valutata.

Sintassi

With( Record, Formula )

  • Record – Obbligatorio. Il record su cui eseguire le operazioni. Per i valori dei nomi, utilizza la sintassi inline { name1: value1, name2: value2, ... }
  • Formula – Obbligatorio. La formula da valutare per Record. La formula può fare riferimento a uno qualsiasi dei campi di record direttamente come ambito del record.

Esempi

Valori denominati semplici

With( { radius: 10,
        height: 15 },
    Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)

In questo esempio viene utilizzato un record di valori denominati per calcolare il volume di un cilindro. With viene usato per acquisire tutti i valori di input insieme, semplificandone la separazione dal calcolo stesso.

Annidato With

Calcolatore di interesse tramite With la funzione .

With( { AnnualRate: RateSlider/8/100,        // slider moves in 1/8th increments and convert to decimal
        Amount: AmountSlider*10000,          // slider moves by 10,000 increment
        Years: YearsSlider,                  // slider moves in single year increments, no adjustment required
        AnnualPayments: 12 },                // number of payments per year
      With( { r: AnnualRate/AnnualPayments,  // interest rate
              P: Amount,                     // loan amount
              n: Years*AnnualPayments },     // number of payments
            r*P / (1 - (1+r)^-n)             // standard interest calculation
      )
)

Questo esempio annida funzioni With per creare un calcolo a due livelli per i pagamenti ipotecari mensili. Finché non è presente alcun conflitto, tutti i valori denominati esterni With sono disponibili all'interno dell'oggetto interno With.

Poiché i controlli del dispositivo di scorrimento possono spostarsi solo con incrementi di 1, i dispositivi di scorrimento vengono divisi o moltiplicati per creare effettivamente un incremento personalizzato. Nel caso del tasso di interesse, il RateSlider ha la proprietà Max impostata su 48, divisa per 8 per un incremento di 1/8 di punto percentuale e divisa per 100 per convertire da percentuale a decimale, coprendo l'intervallo dallo 0,125% al 6%. Nel caso dell'importo del prestito, il AmountSlider ha la proprietà Max impostata su 60 e moltiplicata per 10.000, coprendo l'intervallo da 10.000 a 600.000.

L'oggetto With viene ricalcolato automaticamente durante lo spostamento dei dispositivi di scorrimento e il nuovo pagamento del prestito visualizzato. Non vengono utilizzate variabili e non è necessario utilizzare la proprietà OnChange dei controlli del dispositivo di scorrimento.

Ecco le istruzioni dettagliate per la creazione di questa app:

  1. Crea una nuova app.
  2. Aggiungi un controllo Slider e assegnagli il nome RateSlider. Impostane la proprietà Max su 48.
  3. Aggiungi un controllo Label a sinistra del controllo slider. Imposta la proprietà Text su "Interest Rate:".
  4. Aggiungi un controllo Label a destra del controllo slider. Impostane la proprietà Text sulla formula RateSlider/8 & " %".
  5. Aggiungi un altro controllo Slider e assegnagli il nome AmountSlider. Impostane la proprietà Max su 60.
  6. Aggiungi un controllo Label a sinistra di questo controllo slider. Imposta la proprietà Text su "Loan Amount:".
  7. Aggiungi un controllo Label a destra di questo controllo slider. Imposta la proprietà Text sulla formula AmountSlider/8 * 10000.
  8. Aggiungi un altro controllo Slider e assegnagli il nome YearsSlider. Impostane la proprietà Max su 40.
  9. Aggiungi un controllo Label a sinistra di questo controllo slider. Imposta la proprietà Text su "Number of Years:".
  10. Aggiungi un controllo Label a destra di questo controllo slider. Imposta la proprietà Text sulla formula YearsSlider.
  11. Aggiungi un controllo Label e impostane la proprietà Text sulla formula mostrata sopra.
  12. Aggiungi un controllo Label a sinistra dell'ultimo controllo label. Imposta la proprietà Text su "Recurring Monthly Payment:".

Chiave primaria restituita da Patch

With( Patch( Orders, Defaults( Orders ), { OrderStatus: "New" } ),
      ForAll( NewOrderDetails,
              Patch( OrderDetails, Defaults( OrderDetails ),
                     { Order: OrderID,          // from With's first argument, primary key of Patch result
                       Quantity: Quantity,      // from ForAll's NewOrderDetails table
                       ProductID: ProductID }   // from ForAll's NewOrderDetails table
              )
      )
)

Questo esempio aggiunge un record alla tabella Order in SQL Server. Quindi utilizza la chiave primaria restituita per l'ordine, restituita dalla funzione Patch nel campo OrderID per creare record correlati nella tabella OrderDetails.

Valori estratti con un'espressione regolare

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

Questo esempio estrae le ore, i minuti e i secondi da un valore di durata ISO 8601 e quindi utilizza queste corrispondenze secondarie per creare un valore Data/Ora.

Tieni presente che sebbene le corrispondenze secondarie contengano numeri, sono ancora in una stringa di testo. Usa la funzione Value per convertire in un numero prima di eseguire operazioni matematiche.

Mappare un record in un componente

Vedi Mappare record.