Belešku
Pristup ovoj stranici zahteva autorizaciju. Možete pokušati da se prijavite ili da promenite direktorijume.
Pristup ovoj stranici zahteva autorizaciju. Možete pokušati da promenite direktorijume.
Dinamički je tip podataka u programskom dodatku Power Fx koji može da sadrži bilo koju strukturu podataka, složenu ili jednostavnu. Nije moguće direktno koristiti i konverziju u drugi tip podataka tokom izvršavanja, bilo izričito ili implicitno. Poljima zapisa u dinamičkoj vrednosti može se pristupiti pomoću ispostavke tačka, a postojanje polja se verifikuje samo tokom izvršavanja.
Postoje dva načina za kreiranje dinamičke vrednosti:
- Korišćenje funkcije ParseJSON.
- Korišćenje konektora koji vraća "dinamički" tip.
Belešku
Dinamički se nekada zvao "UntypedObject". Samo se ime promenilo, nema promene u semantici. Jedino mesto na kojem bi se ime pojavilo u formuli je u eksperimentalnim verzijama korisnički definisanih funkcija i korisnički definisanih tipova.
Jednostavni tipovi
Vrednost promenljive koja sadrži dinamičku vrednost ne može direktno da se koristi. Uvek morate ispravno da ga otkucate pomoću odgovarajućeg konstruktora tipa ili tako što ćete ga konvertovati u određeni tip pomoću funkcija AsType i RašeJSON .
Sledeći primeri konvertuju vrednost dinamičke promenljive pod imenom DynValue.
Text(DynValue)
Value(DynValue)
Sledeća tabela navodi tipove podataka i odgovarajuće funkcije za konvertovanje dinamičkih u taj tip podataka.
| Tip podataka | Function | Opis |
|---|---|---|
| Boolean | Boolean() | Prilikom konvertovanja dinamičkog u Bulovu, osnovna vrednost mora da predstavlja logički ili tip koji se može automatski konvertovati (kao što je niska "true"). |
| Boja | ColorValue() ili RGBA() | Boje mogu biti predstavljene u kaskadnom opisu definicije stila (CSS) kao niska ili kao pojedinačne RGBA komponente. Dinamički može da se konvertuje direktno iz niske definicije kaskadnog opisa stila (CSS) pomoću funkcije ColorValue() ili iz pojedinačnih RGBA brojeva u boju pomoću funkcije RGBA(). |
| Valuta, broj | Vrednost() | Prilikom konvertovanja dinamičkog u broj, osnovna vrednost mora da predstavlja broj ili tip koji se može automatski konvertovati (kao što je niska "123.456"). |
| Datum, datum-vreme, vreme | DateValue(), TimeValue() ili DateTimeValue() | Datum, vreme i datum mogu direktno da se konvertuju iz dinamičkog u odgovarajući tip, kada su predstavljeni u ISO 8601 formatu. Druge formate prvo morate konvertovati u tekst pomoću funkcije Text(), a zatim prosledite u funkciju DateValue(), TimeValue() ili DateTimeValue() koja će podrazumevano koristiti jezik postavki trenutnog korisnika za interpretaciju datuma i vremena. |
| GUID | GUID() | Dinamička vrednost se može direktno konvertovati u GUID ako osnovni objekat predstavlja GUID ili ako predstavlja nisku. |
| Hiperveza, slika, mediji | Tekst() | Ovi tipovi podataka su tekstualni tipovi podataka i mogu se konvertovati u tekst, a zatim koristiti u usluzi Power Fx. |
| Izbor, Dve opcije | Prekidač () ili ako () | Izbori i dve opcije su predstavljeni kao lokalizovane žice u Power Fx. Izbori su podržani brojem i dve opcije kao booleans. Nema direktne konverzije iz logičke vrednosti, broja ili niske u izbor ili dve opcije, ali funkcije Switch() ili If() mogu da se koriste na logičkoj, tekstualnoj ili brojčanoj vrednosti da bi se ispravno dodelila vrednost izbora ili dve opcije. |
| Record | Nije primenjivo | Ne postoji direktna konverzija iz dinamičke u strukturu zapisa, ali pojedinačna polja se mogu preuzeti iz dinamičkog prikaza da bi se kreirao novi zapis. |
| Referenca zapisa | Nije primenjivo | Reference zapisa jedinstvene su za izvore podataka i nemaju smisleno predstavljanje u dinamičkom prikazu. |
| Table | Tabela() i ForAll() | Dinamički može da predstavlja niz koji se može konvertovati u tabelu. Ti objekti mogu biti nizovi zapisa ili nizovi vrednosti koje su praktično tabele sa jednom kolonom. ForAll() može se koristiti za kreiranje tabele sa potpuno otkucanim zapisima. Za više informacija, pogledajte primere dalje u ovom članku. |
| Tekst | Tekst() | Tekst se može direktno konvertovati. Ako dinamička vrednost predstavlja broj, morate prvo da konvertujete dinamički u broj koristeći Value() pre nego što izvršite konvertovanje u tekst. |
Vrste zapisa
Možete da pristupite poljima na promenljivoj koja predstavlja dinamički zapis pomoću standardnog zapisivanja tačkama koje se koriste za zapise. Međutim, postojanje polja neće biti potvrđeno do izvršavanja. Kao rezultat toga, takođe nema funkcije Intellisense. Ako polje ne postoji ili ima osnovnu vrednost null, pristup će rezultirati vrednošću Blank().
Svako polje u zapisu je takođe tipa Dinamičko i mora biti ispravno otkucano. Polje može biti dinamički zapis jednostavnog tipa. U slučaju da je to zapis, možete da ulančate tačkastu notaciju. Ako neko polje u lancu ne postoji, vraća se Blank().
Sledeći primeri koriste polja iz dinamičke promenljive pod imenom DynRecord.
Text(DynRecord.StringField)
Value(DynRecord.Field.ChildField)
U slučaju da se ime polja sastoji od nevažećeg imena identifikatora, na primer, kada imena polja počinju brojem ili sadrže nevažeće znakove kao što je crtica, imena polja možete da stavite u jednostruke navodnike:
dynamic.'01'
dynamic.'my-field'
Dinamički pristup koloni
Ponekad će imena kolona u zapisu biti dinamična. Koristite funkciju ColumnNames da biste odredili koja su imena kolona dostupna u zapisu, a zatim koristite funkciju Column da biste preuzeli vrednost imenovane kolone.
Na primer,
LettersUsed = ParseJSON( "{ ""d"": 2, ""p"": 3 }" );
Concat( ColumnNames( LettersUsed ) As Names, Names.Value, ", " )
// returns "d, p"
Sum( ForAll( ColumnNames( LettersUsed ) As Names, Column( LettersUsed, Names.Value ) ), Value )
// returns 5
Nizovi
Dinamička promenljiva može da sadrži niz. Iako niz može da bude niz zapisa ili niz jednostavnih tipova, konvertovanje dinamičkog niza u tabelu pomoću funkcije Table() uvek će dovesti do tabele sa jednom kolonom dinamičkih. Funkcije kao što su ForAll() i Index() ne zahtevaju da prvo kreirate Table() i kao rezultat toga ne zahtevaju korišćenje polja sa jednom kolonom Value,
Na primer, da biste dobili drugi broj u nizu dinamičkih sa brojčanim vrednostima ( [1, 2, 3] ), sledeća formula može da se koristi za preuzimanje drugog reda u tabeli i konvertovanje kolone u broj:
Value( Index( UOArray, 2 ) )
Ako je dinamički konvertovana u Tabela() prvi, Value drugi red u tabeli sa jednom kolonom rezultata jeste kolona koja sadrži dinamički:
Value( Index( Table( UOArray ), 2 ).Value )
Za niz zapisa koji imaju pozvanu tekstualnu kolonu pod nazivom Field, primenjuje se ista logika.
Dinamičkom može da se pristupi direktno ili ako se pomoću funkcije Table() dobije tabela sa jednom kolonom dinamičkih.
Koloni Field se može pristupiti direktno iz dinamičke funkcijeIndex( ).
Text( Index( UORecordArray, 2 ).Field )
Kada koristite funkciju Table() prvo Value preuzmite kolonu sa jednom kolonom da biste dobili dinamički , a zatim pristupite koloni Field :
Text( Index( Table( UORecordArray ), 2 ).Value.Field )
Da biste konvertovali niz zapisa u tipiziranu tabelu, možete da koristite funkciju ForAll() i konvertujete svako pojedinačno polje.
ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )
Ako se dinamička tabela prvo konvertuje u tabelu, ponovo, Value dobijena tabela sa jednom kolonom u dinamičkom okviru zahtevaće da koristite kolonu da biste dobili polja.
ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )
Pretvaranje u otkucane zapise i tabele
Važno
- Korišćenje stavki AsTypei IsType sa dinamičkim vrednostima predstavlja eksperimentalnu funkciju.
- Eksperimentalne funkcije nisu namenjene za upotrebu proizvodnje i možda nisu dovršene. Ove funkcije su dostupne pre zvaničnog izdanja kako biste mogli da dobijete rani pristup i pružite povratne informacije. Više informacija: Razumevanje eksperimentalnih, pregledanih i povučenih funkcija u aplikacijama za platno
- Ponašanje koje ovaj članak opisuje dostupno je samo kada je eksperimentalna >> funkcija korisnički definisanih tipova u postavkama Predstojeće funkcije uključena (podrazumevano je isključena).
- Vaše povratne informacije su nam korisne. Recite nam šta mislite na forumu zajednice sa eksperimentalnim funkcijama za Power Apps.
Umesto da pojedinačno konvertujete svaku jednostavnu vrednost, funkcije ParseJSON, IsType i AsType mogu da se koriste za masovno konvertovanje dinamičkog objekta u otkucani objekat. Koristite funkciju Type da biste kreirali tip koji će mapiranje dinamičke strukture sa otkucanom strukturom.
Na primer, ovde tumačimo JSON nizove kao vrednosti datuma i vremena, bez potrebe da pozovemo funkciju DateTimeValue:
Eclipse = ParseJSON( "{ ""Start"": ""2026-08-12T18:26:00.000Z"", ""End"": ""2026-08-12T18:33:00.000Z"" }",
Type( { Start: DateTime, End: DateTime } ) );
DateDiff( Eclipse.Start, Eclipse.End, TimeUnit.Minutes )
// 7