Microsoft Dataverse e la migliore esperienza dell'origine dati
Descrizione
A maggio 2021, molte funzionalità che in precedenza erano facoltative saranno ora il comportamento predefinito per tutte le nuove app. Questo articolo fornisce indicazioni agli utenti che hanno sviluppato un'app prima dell'introduzione di nuove funzionalità, su come aggiornare la propria app per sfruttare le funzionalità più recenti.
Dataverse nativo
Se hai creato un'app canvas con Dataverse o Dynamics 365 Connector prima di novembre 2019, potresti non avere i vantaggi per utilizzare l'attuale esperienza di connessione nativa per Dataverse.
Se hai creato la tua app prima di novembre 2019 e non utilizzi una connessione Dataverse nativa, in Impostazioni nella scheda Funzionalità future, nella scheda "Ritirati" troverai Migliora l'esperienza dell'origine dati e le visualizzazioni Microsoft Dataverse insieme a Dati relazionali, scelte e altre nuove funzionalità per Microsoft Dataverse.
Come si esegue l'aggiornamento?
Aggiorna la tua app controllando le impostazioni delle funzionalità e quindi seguendo le istruzioni seguenti:
Dati relazionali, set di opzioni e altre nuove funzionalità per Microsoft Dataverse è disattivata
Seleziona Ritirato sotto Funzionalità in arrivo. Se impostata su Disattivato, continua con le seguenti istruzioni come primo passo della conversione.
Se Dati relazionali, set di opzioni e altre nuove funzionalità per Microsoft Dataverse non è visualizzata in Impostazioni generali, o se è già impostata su Attivato, salta i passaggi seguenti e passa alla sezione successiva.
Passaggio 1 : imposta la funzionalità Usa nomi visualizzati su attivato:
- Imposta la funzionalità Usa nomi visualizzati su attivato.
- Attendi che il controllo dell'integrità finisca di analizzare l'app.
- Salva, chiudi e riapri l'app.
- Risolvi tutti gli errori di formula.
- Salva, chiudi e riapri l'app.
Possibili errori e suggerimenti:
È possibile che alcuni dei nomi visualizzati appena mostrati possano entrare in conflitto con i nomi visualizzati per altre tabelle, campi o controlli. Ad esempio, potresti avere un controllo e un campo con lo stesso nome. Puoi modificare il nome del controllo con un valore univoco da correggere.
Per qualsiasi conflitto di nome visualizzato per campi e tabelle, potresti vedere una formula che prevede una tabella ma si risolve in un nome di campo con ambito locale.
Usa la parentesi quadra con un simbolo @ per indicare un ambito globale in modo che si risolva nella tabella; per esempio, [@tableName].
Passaggio 2: imposta le funzionalità Dati relazionali, set di opzioni e altre nuove funzionalità per Microsoft Dataverse e Usa i tipi di dati GUID anziché le stringhe su Attivato:
- Imposta la funzionalità Dati relazionali, set di opzioni e altre nuove funzionalità per Microsoft Dataverse su Attivato.
- Imposta la funzionalità Usa i tipi di dati GUID anziché le stringhe su Attivato.
- Attendi che il controllo dell'integrità finisca di analizzare l'app.
- Risolvi tutti gli errori di formula.
- Salva, chiudi e riapri l'app.
Possibili errori e suggerimenti:
È possibile che si verifichino errori in questa fase se si utilizza un campo di scelta o valori di testo GUID codificati.
- Valori scelte: se utilizzi il campo di scelta con un identificatore di testo per il valore di scelta, utilizza invece la notazione a punti per fare riferimento al valore di scelta. Ad esempio, cambia
Patch(Accounts, OptionSet1 = “12345”)
suPatch(Accounts, OptionSet.Item1)
doveItem1
corrisponde al valore12345
.
Altre informazioni: Esempi dettagliati. - GUID: se usi una stringa GUID statica come
015e45e1044e49f388115be07f2ee116
, convertila in una funzione che restituisce un oggetto GUID; ad esempioGUID(“015e45e1044e49f388115be07f2ee116”)
. - Ricerche: se utilizzi le funzioni di ricerca per ottenere valori di ricerca di primo livello come
Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”)
, considera l'utilizzo diThisItem.PrimaryContacts
(dove PrimaryContacts è il nome della tabella).
Migliorare l'esperienza dell'origine dati e le visualizzazioni in Microsoft Dataverse è disattivata
Utilizza la seguente istruzione per impostare la funzionalità Migliorare l'esperienza dell'origine dati e le visualizzazioni Microsoft Dataverse su Attivato:
- Rimuovi le connessioni dell'origine dati Dataverse esistente.
- Imposta su Attivo la funzionalità Migliorare l'esperienza dell'origine dati e le visualizzazioni in Microsoft Dataverse.
- Aggiungi la connessione Dataverse utilizzando la nuova esperienza di selezione dell'origine dati.
- Salva l'applicazione.
Nota
Se l'applicazione è estremamente grande, l'aggiunta delle connessioni dell'origine dati potrebbe richiedere del tempo. Non chiudere l'applicazione durante questo processo.
Conversione di app canvas con Dynamics 365 Connector
Per convertire l'app che utilizza Dynamics 365 Connector, dovrai rimuovere e aggiungere le connessioni alle tue origini dati. Utilizza i passaggi seguenti per convertire le connessioni alle origini dati.
Assicurati che la funzionalità Migliorare l'esperienza dell'origine dati e le visualizzazioni in Microsoft Dataverse sia impostata su Attivo.
Rimuovi le connessioni dell'origine dati Dynamics 365 esistente.
Aggiungi le connessioni alle tue origini dati a Dataverse utilizzando la nuova esperienza di selezione dell'origine dati.
Nota
- Se disponi di connessioni ad altri ambienti (diversi da quello attuale), seleziona la categoria Tabella e quindi l'opzione Altro (...) per cambiare l'ambiente. Puoi quindi selezionare una tabella da un ambiente diverso da aggiungere alla tua applicazione. Le connessioni tra tenant non funzionano con il connettore nativo migliorato. Dovrai utilizzare l'integrazione dei dati per accedere ai dati tra tenant.
- Devi soddisfare uno dei seguenti requisiti per poter vedere un ambiente a cui vuoi aggiungere la connessione:
- Tu sei il proprietario dell'app o l'app è condivisa con te come comproprietario.
- Sei membro di almeno uno di questi ruoli di sicurezza: Amministratore ambiente, Creazione ambiente o Amministratore di sistema. Per ulteriori informazioni sui ruoli di sicurezza in un ambiente, vai a Configurare la sicurezza degli utenti per le risorse in un ambiente.
Salva l'applicazione.
Possibili errori e suggerimenti:
È possibile che si verifichino errori durante la conversione se: non si utilizzano i nomi visualizzati, se si utilizzano stringhe GUID o se si utilizza una scelta.
- Se il nome del controllo è in conflitto, modifica il nome del controllo in modo che sia diverso e univoco.
- Per qualsiasi conflitto di nome visualizzato per campi e tabelle, potresti vedere una formula che prevede una tabella ma si risolve in un nome di campo con ambito locale. Usa la parentesi quadra con un simbolo @ per indicare un ambito globale in modo che si risolva nella tabella; per esempio, [@tableName].
- Valori scelte: se utilizzi un campo di scelta con un identificatore di testo per il valore di scelta, utilizza invece la notazione a punti per fare riferimento al valore di scelta. Ad esempio, cambia
Patch(Accounts, OptionSet1 = “12345”)
suPatch(Accounts, OptionSet.Item1)
doveItem1
corrisponde al valore12345
.
Altre informazioni: Esempi dettagliati. - GUID: se usi una stringa GUID statica come
015e45e1044e49f388115be07f2ee116
, convertila in una funzione che restituisce un oggetto GUID; ad esempioGUID(“015e45e1044e49f388115be07f2ee116”)
. - Ricerche: se utilizzi le funzioni di ricerca per ottenere valori di ricerca di primo livello come
Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”)
, considera l'utilizzo diThisItem.PrimaryContacts
(dove PrimaryContacts è il nome della tabella). - Per eventuali riferimenti polimorfici, consulta la sezione Esempi dettagliati di seguito.
Esempi dettagliati
Convertire la tua app per usare il nuovo Set di opzioni e i tipi di dati Due opzioni con controlli di supporto può rivelarsi problematico durante l'aggiornamento di un'app per utilizzare la nuova funzionalità Migliora l'esperienza dell'origine dati e le visualizzazioni Microsoft Dataverse.
Scelte
Campi _myfield
e _myfield_label
separati sono stati utilizzati per la scelta in precedenza. Ora è disponibile un unico myfield
che può essere utilizzato sia per confronti indipendenti dalle impostazioni locali sia per ottenere l'etichetta specifica per le impostazioni locali.
Rimozione e aggiunta di schede dati di scelta
È consigliabile rimuovere le schede dati esistenti e riaggiungerle al lavoro con la scelta. Ad esempio, se stai lavorando con la tabella Account e la scelta Categoria, vedrai che la proprietà DataField della scheda dati è stata impostata su _accountcategorycode_label
. Nell'elenco dei campi puoi vedere che la scheda dati è di tipo stringa:
Con la nuova funzionalità Migliorare l'esperienza dell'origine dati e le visualizzazioni in Microsoft Dataverse, non vedi più _accountcategorycode_label
. È sostituito da accountcategorycode
. La tua scheda ora è contrassegnata come personalizzata e vedrai degli errori. Rimuovi la vecchia scheda dati e aggiungi nuovamente la Scelta. La nuova scheda dati è compatibile con Scelta.
Modifica delle espressioni del filtro di scelta per utilizzare una nuova sintassi
In precedenza, se volevi utilizzare un valore Scelta in un'espressione di filtro, era necessario utilizzare il campo Valore. Ad esempio:
Filter(Account,'Category Value' = "1")
Dovrai modificare questa formula. L'identificatore di testo della scelta non viene più utilizzato per il valore. Questa espressione dovrebbe essere aggiornata a:
Filter(Account, Category= ‘Category (Accounts)’.’Preferred Customer’)
'Category(Accounts)' è il nome di enum utilizzato nel campo Categoria della tabella Account. Questa è una scelta locale. Puoi leggere altre informazioni sulle scelte locali e globali qui: Scelte globali.
Modifica delle istruzioni patch delle scelte per utilizzare una nuova sintassi
Di seguito è riportato un esempio di istruzione Patch precedente per la scelta:
Patch( Accounts, First(Accounts), { ‘Category Value’: 1 } ) )
Dovrai aggiornare le tue istruzioni per seguire questo modulo:
Patch( Accounts, First(Accounts), { Category: ‘Category (Accounts)’.’Preferred Customer’ } )
Disambiguazione della scelta
Se il nome visualizzato di un campo della scelta e il nome della scelta è lo stesso, dovrai disambiguare la formula. Per continuare a utilizzare l'esempio di codice categoria account, il simbolo @ implica l'utilizzo della scelta, ma non del campo.
Filter(Accounts, 'Category Code' = [@’Category Code’].'Preferred Customer')
Due opzioni
Rimozione e aggiunta di schede dati Sì/No
Rimuovi le schede dati esistenti e riaggiungile al lavoro con la scelta Sì/No. I tipi di dati erano precedentemente riconosciuti come semplici booleani, come true/on e false/off senza etichette:
Con la nuova funzionalità Migliorare l'esperienza dell'origine dati e le visualizzazioni in Microsoft Dataverse, la tua scheda verrà ora contrassegnata come personalizzata e vedrai degli errori. Rimuovi la vecchia scheda dati e aggiungi nuovamente la scelta. Dopo l'aggiunta, vedrai un controllo di modifica con due opzioni per impostazione predefinita.
Se preferisci l'interruttore di attivazione/disattivazione per il tuo campo booleano, puoi invece sbloccare la scheda dati e sostituire il controllo nella scheda dati con un interruttore. Dovrai anche impostare queste proprietà sul'interruttore.
Toggle1.Default = ThisItem.’Do not allow Bulk Emails’
Toggle1.TrueText = ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’
Toggle1.FalseText = ‘Do not allow Bulk Emails (Accounts)’.Allow
DataCard.Value = If( Toggle1.Value,
‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’,
‘Do not allow Bulk Emails (Accounts)’.Allow )
Affinamento di istruzioni Patch a due opzioni
La funzione Patch con due opzioni deve funzionare "così com'è". Supporta l'uso diretto di true e false, simile a un booleano. L'unica differenza sta nel fatto che se in precedenza avevi impostato il valore in un controllo Etichetta che mostrava true e false, ora mostrerà invece le etichette a due opzioni.
Ricerche polimorfiche
Le seguenti linee guida aiutano ad aggiornare l'applicazione se fa riferimento a campi polimorfici. Le ricerche polimorfiche, dallo stesso campo, supportano i riferimenti a un set limitato di più tabelle. Analogamente ai riferimenti in altre lingue, un riferimento a un record è un puntatore a un record specifico in una tabella specifica. Un riferimento a un record contiene le informazioni della tabella che gli consentono di puntare a un record in diverse altre tabelle, che differiscono da una normale ricerca che può puntare solo a record in una tabella.
Accedere, impostare e filtrare il campo Owner di un record
Ad esempio, il campo Proprietario in una tabella può fare riferimento a un record nella tabella Utenti o la tabella Team. Lo stesso campo di ricerca in record diversi potrebbe fare riferimento a record in tabelle diverse.
Polimorfico con Filter e Patch
I riferimenti di record possono essere utilizzati proprio come un record completo:
Filter( Accounts, Owner = First( Teams ) )
Patch( Accounts, First( Accounts ), { Owner: First( Users ) })
Polimorfico con una raccolta che mostra il nome del proprietario
Poiché un riferimento può puntare a tabelle diverse, devi essere specifico. Non puoi utilizzare ThisItem.Owner.Name in quando il campo del nome nella tabella Team è Nome team e il campo del nome nella tabella Utente è Nome completo. Power Apps non saprà a quale tipo di ricerca ti riferisci, fino a quando non esegui l'app.
Per risolvere il problema:
- Aggiungi le origini dati per i tipi di entità validi per Owner (in questo caso, Users e Teams).
- Usa più funzioni per chiarire il tuo intento.
Esistono due nuove funzioni che puoi utilizzare:
- IsType: controlla se un riferimento a un record è di un particolare tipo di tabella.
- AsType: trasmette un riferimento a un record a un particolare tipo di tabella.
Con queste funzioni è possibile scrivere una formula che visualizzi il nome del Proprietario ricavato da due campi denominati diversamente, in base al tipo di tabella del Proprietario:
If( IsType( ThisItem.Owner, [@Teams]),
AsType( ThisItem.Owner, [@Teams]).'Team Name',
AsType( ThisItem.Owner, [@Users]).'Full Name' )
L'operatore di disambiguazione globale per [@Teams]
e [@Users]
viene utilizzato per garantire che si faccia riferimento al tipo di tabella globale. Sebbene in questo caso non sia necessario, ti consigliamo di essere sempre chiaro. Le relazioni uno-a-molti sono spesso in conflitto nell'ambito del record della raccolta e questa procedura evita la confusione.
Accedere e impostare il campo Nome azienda (un tipo di dati Cliente) della tabella Contatti
Il campo di ricerca Customer è un'altra ricerca polimorfica molto simile a Owner. È possibile avere un solo campo Proprietario per tabella. Ma una tabella può includere zero, uno o più campi di ricerca Clienti. La tabella di sistema Contatti include il campo Nome azienda che è un campo di ricerca Cliente. Leggi Mostrare i campi di un cliente per ulteriori dettagli.
Accedere e impostare il campo Tema delle tabelle di impegni come Fax, Telefonate, Messaggi e-mail
Le ricerche polimorfiche non si limitano ad Accounts e Contacts. L'elenco delle tabelle è estensibile con tabelle personalizzate. Ad esempio, la tabella Fax include un campo di ricerca Tema polimorfico, che può fare riferimento a Account, Contatti e altre tabelle. Se hai una raccolta con origine dati impostata su Faxes, puoi utilizzare la seguente formula per visualizzare il nome associato al campo di ricerca Regarding.
If( IsBlank( ThisItem.Regarding ), "",
IsType( ThisItem.Regarding, [@Accounts] ),
"Account: " & AsType( ThisItem.Regarding, [@Accounts] ).'Account Name',
IsType( ThisItem.Regarding, [@Contacts] ),
"Contacts: " & AsType( ThisItem.Regarding, [@Contacts] ).'Full Name',
"" )
Leggi Informazioni sui campi di ricerca Regardinge Informazioni sulle relazioni di Regarding per ulteriori dettagli.
Accedere all'elenco di tutti gli impegni per un record
Nelle tabelle Dataverse come Fax, Attività, E-mail, Appunti, Telefonate, Lettere e Chat sono designati come impegni. Puoi anche creare le tue tabelle di impegni personalizzate.
È possibile visualizzare gli impegni di un tipo specifico (come Fax o Imposte) o tutti gli impegni associati a una tabella come account. Aggiungi la tabella Impegni e altre singole tabelle di cui prevedi di visualizzare i dati nell'app canvas.
Ogni volta che aggiungi un record a (ad esempio la tabella Attività), viene creato un record nella tabella Impegni con i campi comuni a tutte le tabelle attività. Leggi la tabella degli impegni per altri dettagli.
L'esempio seguente mostra che quando selezioni un account, vengono visualizzate tutti gli impegni associati all'account:
I record vengono visualizzati dalla tabella degli impegni. Tuttavia puoi ancora usare la funzione IsType per identificare il tipo di impegno. Di nuovo, prima di utilizzare IsType con un tipo di tabella, è necessario aggiungere l'origine dati necessaria.
Usando questa formula, puoi mostrare tipo di record in un controllo Etichetta all'interno della raccolta:
If( IsType( ThisItem, [@Faxes] ), "Fax",
IsType( ThisItem, [@'Phone Calls'] ), "Phone Call",
IsType( ThisItem, [@'Email Messages'] ), "Email Message",
IsType( ThisItem, [@Chats] ), "Chat",
"Unknown")
Accedere all'elenco delle note per un record
Quando crei una tabella, puoi abilitare gli allegati. Se selezioni la casella di controllo per abilitare gli allegati, creerai una relazione Tema con la tabella Note, come mostra questo grafico per tabella Account:
Filtri
Non è possibile leggere o filtrare in base al campo Regarding. Tuttavia, è disponibile la relazione inversa uno-a-molti di Notes. Per elencare tutte le Note associate ad una tabella Account puoi utilizzare la seguente formula:
First( Accounts ).Notes
Patch
Non puoi impostare il campo Note su una tabella usando Patch. Per aggiungere un record alla tabella Note di una tabella, puoi utilizzare la funzione Correla. Crea prima la nota, come in questo esempio:
Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note", isdocument:'Is Document (Notes)'.No } ) )
Passaggi successivi
Vedi anche
Nota
Puoi indicarci le tue preferenze di lingua per la documentazione? Partecipa a un breve sondaggio. (il sondaggio è in inglese)
Il sondaggio richiederà circa sette minuti. Non viene raccolto alcun dato personale (Informativa sulla privacy).