Recuperare tutti i valori di una choice di una entità (CRM Online)
In una entità del Dataverse ci possono essere dei campi definiti choice, i classici menu a tendina. Questi campi sono caratterizzati dall'avere una label/testo visualizzato e un identificativo numerico. L'identificativo numerico è il valore che viene persistito sull'entità.
Precedentemente Dataverse era conosciuto come Common Data Service (CDS)
Se si vuole conoscere tutti i possibili valori, inteso come accoppiata valore numerico e label, bisogna fare riferimento all'entità stringmap. Questa entità contiene tutti i valori dei campi choice di tutte le entità del Dataverse in tutte le lingue possibili.
Ad esempio per visualizzare tutti i valori del campo choice statuscode dell'entità Approvals, la query è questa:
SQL
select*from stringmap
where attributename ='statuscode'and objecttypecode='msdyn_flow_approval'and langid=1033orderby displayorder
dove
attributename = nome del campo choice
objecttypecode = nome interno dell'entità
langid = codice della lingua (1033=inglese, 1040=italiano, ecc...) della specifica traduzione
attributevalue = valore numerico della singola voce del campo choice
value = label della singola voce
displayorder = ordine di visualizzazione delle label
Per eseguire la query si può usare il tool XrmToolBox con il plugin SQL 4 CDS.
da un risultato come questo
attributename
attributevalue
displayorder
langid
objecttypecode
objecttypecodename
organizationid
stringmapid
value
versionnumber
statuscode
192350000
1
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c4f1dac1-36bd-eb11-8235-000d3abc6062
Created
NULL
statuscode
192350001
2
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c5f1dac1-36bd-eb11-8235-000d3abc6062
Pending
NULL
statuscode
192350002
3
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c6f1dac1-36bd-eb11-8235-000d3abc6062
Suspended
NULL
statuscode
192350004
4
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c7f1dac1-36bd-eb11-8235-000d3abc6062
Completed
NULL
statuscode
192350005
5
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c8f1dac1-36bd-eb11-8235-000d3abc6062
Expired
NULL
statuscode
192350006
6
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
c9f1dac1-36bd-eb11-8235-000d3abc6062
Canceled
NULL
statuscode
192350007
7
1033
msdyn_flow_approval
Approval
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
caf1dac1-36bd-eb11-8235-000d3abc6062
Abandoned
NULL
Quello che interessa sono solo i campi attributevalue e valueXmlTollbox
SQL
select attributevalue, valuefrom stringmap
where attributename ='statuscode'and objecttypecode='msdyn_flow_approval'and langid=1033orderby displayorder
da questo risultato
attributevalue
value
192350000
Created
192350001
Pending
192350002
Suspended
192350004
Completed
192350005
Expired
192350006
Canceled
192350007
Abandoned
Nomi inteni
Nell'esempio ho usato sull'entità Approvals che ha uno specifico nome interno ovvero msdyn_flow_approval.
Ma come faccio a trovare il nome interno?
Si può andare su Power Apps (https://make.powerapps.com) e cercare nelle tabelle presenti in Data / Tables. Verifica che nella vista ci sia All e inserisci nel testo di ricerca il nome dell'entità. Nella colonna Name compare il nome interno dell'entità.Nome interno entitàcliccando sulla entità si può trovare anche il nome interno del campo choiceNome interno campo