Deli putem


Netipiran tip podataka objekta

Netipizirani objekat je tip podataka koji može da Power Fx drži bilo koju strukturu podataka, složenu ili jednostavnu. Ne može se direktno koristiti i zahteva eksplicitnu konverziju u tip podataka. Poljima u zapisima u netipiziranom objektu može se pristupiti pomoću tačkaste notacije, a postojanje polja se proverava samo u vreme izvršavanja.

Netipiziran objekat je tip povraćaja određenih netipiziranih dobavljača. Trenutno samo funkcija ParseJSON() vraća netipiziran objekat.

Jednostavni tipovi

Vrednost promenljive tipa netipizirani objekat ne može se koristiti direktno. Uvek morate pravilno da ga otkucate pomoću odgovarajućeg konstruktora tipa.

Sledeći primeri konvertuju vrednost promenljive netipiziranog objekta pod nazivom UOValue.

Text(UOValue)
Value(UOValue)

Sledeća tabela navodi tipove podataka i odgovarajuće funkcije za konvertovanje netipiziranog objekta u taj tip podataka.

Tip podataka Function Opis
Boolean Boolean() Kada konvertujete netipiraniobjekat u logičku vrednost, osnovna vrednost mora da predstavlja logičku 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. Netipiziran objekat se može konvertovati direktno iz niske definicije kaskadnog lista stilova (CSS) pomoću funkcije ColorValue() ili od pojedinačnih RGBA brojeva u boju pomoću funkcije RGBA().
Valuta, broj Value() Kada konvertujete netipirani objekat 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-vreme mogu se direktno konvertovati iz netipiziranog objekta 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() Netipiran objekat se može direktno konvertovati u GUID ako osnovni objekat predstavlja GUID ili ako predstavlja nisku.
Hiperveza, slika, mediji Text() Ovi tipovi podataka su tekstualni tipovi podataka i mogu se konvertovati u tekst, a zatim koristiti u usluzi Power Fx.
Izbor, Dve opcije Switch() ili If() Izbori i dve opcije su predstavljeni kao lokalizovane niske u jeziku Power Fx. Izbori su podržani brojem, a dve opcije kao logičke konstante. 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 netipiziranog objekta u strukturu zapisa, ali se pojedinačna polja mogu preuzeti iz netipiziranog objekta da bi se kreirao novi zapis.
Referenca zapisa Nije primenjivo Reference zapisa su jedinstvene za izvore podataka i nemaju smislenu zastupljenost u netipiziranim objektima.
Table Table() i ForAll() Netipiziran objekat 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 da se koristi za kreiranje tabele sa potpuno tipiziranim zapisima. Za više informacija, pogledajte primere dalje u ovom članku.
Tekst Text() Tekst se može direktno konvertovati. Ako netipizirani objekat predstavlja broj, potrebno je da pre konvertovanja u tekst konvertujete netipizirani objekat u broj koristeći funkciju Value().

Vrste zapisa

Poljima u promenljivoj koja predstavlja zapis netipiziranog objekta možete da pristupite koristeći običnu tačkastu notaciju koja se koristi 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 netipizirani objekat i potrebno ga je ispravno otkucati. Polje može biti netipiziran 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 promenljive netipiziranog objekta pod nazivom UORecord.

Text(UORecord.StringField)
Value(UORecord.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:

untyped.'01'
untyped.'my-field'

Nizovi

Promenljiva netipiziranog objekta može da sadrži niz. Iako niz može da bude niz zapisa ili niz jednostavnih tipova, konvertovanje niza netipiziranog objekta u tabelu pomoću funkcije Table() uvek će rezultirati tabelom sa jednom kolonom netipiziranih objekata. 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 netipiziranog objekta koji sadrži vrednosti brojeva ([1, 2, 3]), možete koristiti sledeću formulu za preuzimanje drugog reda u tabeli i konvertovanje kolone u broj:

Value( Index( UOArray, 2 ) )

Ako je netipizirani objekat prvo konvertovan u Table(), drugi red u tabeli sa jednom kolonom rezultata je kolona Value, koja sadrži netipiziran objekat:

Value( Index( Table( UOArray ), 2 ).Value )

Za niz zapisa koji imaju pozvanu tekstualnu kolonu pod nazivom Field, primenjuje se ista logika. Netipiziranom objektu se može pristupiti direktno ili ako će korišćenje funkcije Table() rezultirati tabelom sa jednom kolonom netipiziranog objekta.

Koloni Field se može pristupiti direktno iz netipiziranog objekta koji je vratila funkcija Index().

Text( Index( UORecordArray, 2 ).Field )

Kada koristite funkciju Table(), prvo preuzmite kolonu Value sa jednom kolonom da biste dobili netipiziran objekat, 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 netipizirani objekat prvo konvertuje u tabelu, opet, rezultujuća tabela sa jednom kolonom netipiziranog objekta će zahtevati da koristite kolonu Value da biste dobili polja.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )