1c element liste vrijednosti. Univerzalna kolekcija Drvo vrijednosti

Puna sintaksa (kliknite za proširenje)

ListValues

Opis:

Lista vrijednosti je objekt koji nije pohranjen u bazi podataka, što vam omogućava da izgradite dinamičke skupove vrijednosti za rješavanje problema sučelja i manipulirate njima (dodavanje, uređivanje, brisanje elemenata, sortiranje). Može se popuniti vrijednostima bilo koje vrste, tj. Na jednoj listi tipovi pohranjenih vrijednosti mogu biti različiti. Jedan primjer upotrebe ovog objekta može poslužiti kao organizacija za odabir određenog dokumenta sa liste mogućih dokumenata generiranih korištenjem složenog algoritma.

Predmeti kolekcije: ValueListElement

Moguće je da objekt zaobiđe kolekciju koristeći operator Za svaki... Od... Ciklus. Prelazak odabire elemente kolekcije.

Moguće je pristupiti elementu kolekcije pomoću [...] operatora. Indeks elementa se prosljeđuje kao argument ( numerisanje od 0).

Svojstva:

Metode:

Insert (Indeks, Vrijednost, Reprezentacija, Oznaka, Slika) Umeci novi element na listu vrijednosti na poziciji sa navedenim indeksom.SelectElement (Naslov, Element) Poziva prozor za interaktivni odabir jednog od elemenata uključenih u listu vrijednosti. Element- element na koji bi se lista vrijednosti inicijalno trebala pozicionirati tokom interaktivnog odabira. Ako vrijednost parametra nije element liste vrijednosti uključen u ovu listu, pozicioniranje se neće dogoditi.UnloadValues()Kreira niz i u njega kopira vrijednosti elemenata liste vrijednosti.Dodaj(Vrijednost, Reprezentacija, Oznaka, Slika)Dodaje novi element na kraj liste vrijednosti.LoadValues(ArrayValues) Učitava listu vrijednosti sa vrijednostima iz proslijeđenog niza. U tom slučaju, svi prethodni elementi liste se brišu.Ispunite bilješke(Oznaka) Postavlja oznaku za sve elemente liste vrijednosti.Index(Element) Dobiva indeks elementa na listi vrijednosti. Ako nije pronađen, vraća se -1.Count() Dobiva broj elemenata na listi vrijednosti.FindByValue(SearchValue) Traži vrijednost elementa na listi vrijednosti. Ako nijedan element ne pohranjuje vrijednost jednaku vrijednosti pretraživanja, tada se vrijednost vraća Nedefinisano. Pronađite po ID-u(Identifier) ​​Dohvaća listu vrijednosti element po identifikatoru. Ako element nije pronađen, onda se vraća Nedefinisano. MarkItems(Zaglavlje) Postavlja ili poništava (interaktivno) stavke na listi vrijednosti. Povratak Istinito, ako se u dijalogu pritisne dugme "OK", Lazi- inače.Clear() Briše listu vrijednosti, uklanjajući sve elemente iz nje.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Poziva prozor za interaktivni odabir jednog od elemenata uključenih u listu vrijednosti.ShowMark Items(Opis Closing Alerts, Header) Dizajniran za interaktivno postavljanje stanja oznaka za elemente liste vrijednosti.Get(Index) Dohvaća vrijednost po indeksu. Radi slično kao i operater.Shift (Element, Offset) Pomiče element liste vrijednosti naprijed ili nazad za određeni broj pozicija.Copy() Kreira kopiju liste vrijednosti.SortByValue(Smjer) Sortira listu vrijednosti u rastućem ili opadajućem redoslijedu vrijednosti koje su pohranili elementi. Pogledajte primjer ispod.SortByView(Smjer) Sortira listu vrijednosti u rastućem ili opadajućem redoslijedu abecedni red reprezentacije uključene u listu vrijednosti elemenata. Pogledajte primjer ispod.Ukloni (Element) Uklanja element sa liste vrijednosti, gdje Element- indeks elementa koji se briše, ili sam element.

Dizajneri:

Nova lista vrijednosti
&OnClient procedura Izvrši kod (komanda) /// Kako napraviti listu vrijednosti u 1s 8.3, 8.2 Lista = Nova lista vrijednosti; /// Kako dodati element na listu vrijednosti u 1s 8.3, 8.2 // dodaj parametre metode:// - značenje // - performanse // - oznaka (obavezno) // - slika (obavezno) Lista. Dodaj( 1980, // vrijednost elementa "Godina Vasjinog rođenja"// performanse ) ; Lista. Dodaj (1985, "Godina Julijinog rođenja") ; // vrijednosti mogu biti različitih tipova Lista. Dodaj("Polina" , "Ime djeteta" ) ; /// Kako umetnuti element u listu vrijednosti u 1s 8.3, 8.2 // ubaciti na poziciju br. 2 (elementi su numerisani počevši od 0) // element s vrijednošću 2010 i reprezentacijom // "Godina kada je rođena njihova zajednička ćerka" Lista. Insert(2, 2010, "Godina kada je rođena njihova zajednička ćerka") ; /// Kako zaobići elemente liste vrijednosti u 1s 8.3, 8.2 Za svaki element Izvještaj petlje sa liste( Element. Reprezentacija + ": " + String(Element. Vrijednost) ) ; EndCycle ; /// Kako obrisati listu vrijednosti u 1s 8.3, 8.2 Lista. Clear() ; Lista. Dodaj("ponedjeljak"); Lista. Dodaj("utorak"); Lista. Dodaj("Srijeda") ; /// Kako saznati broj elemenata liste vrijednosti, kao i /// dobijemo element liste po njegovom indeksu u 1s 8.3, 8.2 // numerisanje od nule Za Indeks = 0 Po listi. Količina() - Izvještaj o 1 ciklusu(Lista[Indeks]) ; EndCycle ; /// Kako pronaći element liste po njegovoj vrijednosti u 1s 8.3, 8.2 ValueTuesday = Lista. FindByValue("utorak"); /// Kako saznati indeks elementa na listi za 1s 8.3, 8.2 Izvještaj(Lista.Indeks(VrijednostUtorak)) ; // 1, pošto numerisanje počinje od nule /// Kako sortirati listu po vrijednostima u 1s 8.3, 8.2 // je bilo: ponedjeljak, utorak, srijeda Lista. SortByValue(SortDirection.Descending) ; // postao: srijeda, ponedjeljak, utorak /// Kako ukloniti element sa liste vrijednosti u 1s 8.3, 8.2 // uklanjamo prvi element // parametar: element liste // ili indeks elementa// možete napraviti ovu listu. Izbriši(Lista[0]) ; // ili tako // List.Delete(0); /// Kako pomaknuti element liste vrijednosti u 1s 8.3, 8.2 // pomičemo nulti element za jednu poziciju naprijed // bilo: ponedjeljak utorak Lista. Premjestiti(0, 1); // postao: utorak ponedjeljak /// Kako napraviti kopiju liste za 1s 8 ListCopy = Lista. Kopiraj() ; Boje = NewValueList; Boje. Dodaj("Crveno" ) ; Boje. Dodaj("Zeleno" ) ; Boje. Dodaj("Plavo" ) ; /// Kako učitati vrijednosti liste u niz u 1s 8.3, 8.2 ArrayColors = Boje. UnloadValues() ; /// Kako učitati vrijednosti liste iz niza u 1s 8.3, 8.2 Boje. LoadValues(ArrayColors) ; Kraj procedure /// Kako napraviti nemodalni odabir vrijednosti sa liste /// vrijednosti u 1s 8.3, 8.2&O klijentskoj proceduri Kako napraviti nemodalnu selekciju vrijednosti(naredba) Boje = Nova lista vrijednosti; Boje. Dodaj("Crveno" ) ; Boje. Dodaj("Zeleno" ) ; Boje. Dodaj("Plavo" ) ; // procedura AfterSelectingElement je definirana ispod AlertAfterElementSelection = Nova upozorenja za opis( "AfterElementSelection", ThisObject ) ; Boje. ShowElementSelection( NotificationAfterElementSelection, "Odaberi svoju omiljenu boju") ; Kraj procedure &na klijentovom postupku nakon odabira elementa (element, parametri) Izvezi ako element<>Nedefinirano Zatim Izvještaj(Element.Vrijednost) ; EndIf ; Kraj procedure /// Kako napraviti nemodalno označavanje vrijednosti sa liste /// vrijednosti u 1s 8.3, 8.2&O klijentskoj proceduri Kako napraviti nemodalno označavanje vrijednosti (komanda) boja = Nova lista vrijednosti; Boje. Dodaj("Crveno" ) ; Boje. Dodaj("Zeleno" ) ; Boje. Dodaj("Plavo" ) ; // procedura AfterMarkingElements je definirana ispod AlertAfterMarkingItems = Novi opis upozorenja( "AfterMarkingItems", ThisObject ) ; Boje. ShowTagItems( AlertAfterTagItems, "Odaberite svoje omiljene boje") ; Boje. FillNotes(True) ; Kraj procedure &na klijentovom postupku nakon označavanja elemenata (elemenata, parametara) Izvezi ako elementi<>Tada je nedefinirano za svaku boju iz elemenata ciklus ako boja. Označite zatim izvješće (Color.Value) ; EndIf ; EndCycle ; EndIf ; Kraj procedure /// Kako napraviti modalni odabir vrijednosti sa liste u 1s 8.3, 8.2&O klijentskoj proceduri Kako napraviti ModalValueSelection(Command) Boje = New ValueList; Boje. Dodaj("Crveno" ) ; Boje. Dodaj("Zeleno" ) ; Boje. Dodaj("Plavo" ) ; Odaberite Boja = Boje. Odaberi stavku( "Odaberi svoju omiljenu boju") ; Ako SelectColor<>Nedefinirano Onda Report(SelectColor.Value) ; EndIf ; Kraj procedure /// Kako modalno označiti vrijednosti sa liste /// vrijednosti u 1s 8.3, 8.2&O klijentskoj proceduri Kako napraviti modalnu oznaku vrijednosti (naredba) boje = Nova lista vrijednosti; Boje. Dodaj("Crveno" ) ; Boje. Dodaj("Zeleno" ) ; Boje. Dodaj("Plavo" ) ; Ako Boje. MarkItems( "Odaberite svoje omiljene boje") Zatim za svaku boju iz ciklusa boja ako je boja. Označite zatim izvješće (Color.Value) ; EndIf ; EndCycle ; EndIf ; // ovako možete postaviti sve oznake odjednom // lista do određene vrijednosti Boje. FillNotes(True) ; Kraj procedure /// Preuzmite i pokrenite ove primjere na svom računalu

U ovoj jedinici ćemo se upoznati sa novim tipom podataka 1C jezika, koji se zove ListValues.

Lista vrijednosti je niz, ali sa velikim mogućnostima. A ako je tako, onda je to i zbirka podataka i u nju možete staviti skup brojeva:

// kreirao listu vrijednosti

Lista.Dodaj(23);

Do sada sve liči na niz, zar ne? Ali idemo dalje. Da bismo sada prikazali ove brojeve korisniku, pišemo:

// petlja kroz svaki element liste Za svaki element sa liste Loop Report(Element.Value);

// prikazuje vrijednost elementa EndCycle;

I evo prve razlike. Elementi regularnog niza su sami brojevi. I pristup trenutnoj vrijednosti elementa Lista dobijamo koristeći opciju Značenje, koristeći konstrukciju Element. Značenje.

Pogledajmo neke dodatne funkcije Vrijednosti.

Može sortirati

Na primjer, lako možemo sortirati listu vrijednosti. Lista to može učiniti sama:

List.SortByValue(SortDirection.Age); U slučaju regularnog niza, morali bismo implementirati jedan od algoritama za sortiranje (na primjer, "bubble").

Može pretraživati

Lista vrijednosti može sama tražiti svoje elemente. Recimo da želimo da saznamo da li je broj koji je uneo korisnik prisutan na našoj listi:

UnesiteBroj(Broj); // unio broj od korisnika FoundElement = List. FindByValue(Broj);

Ako je FoundItem = Undefined, onda OpenValue("Broj " + Broj + " nije pronađen na listi!"); Inače

OpenValue("Broj " + Broj + " je na listi. Evo ga:" + FoundElement.Value);

endIf; ListValues

Podržava umetanje i brisanje

Lista vrijednosti, poput niza, podržava umetanje i uklanjanje elemenata:

Lista. Umetnuti (0, 1000);

// ubaciti hiljadu na sam početak liste List.Delete(O); // i odmah ga uklonite sa liste Liste. Umetanje(Lista.Količina(), 13);

// ubaciti 13 na kraj liste Report(Lista[Lista.Količina() - 1]);

// prikazuje zadnji element liste (13)

Podržava uglaste zagrade

Kao što ste već shvatili, numerisanje elemenata liste takođe počinje od nule, a bilo kom elementu možemo pristupiti po njegovom indeksu koristeći uglaste zagrade:

Izvještaj(Lista.Vrijednost); // prikaz drugog elementa liste Dakle, možemo proći kroz sve elemente liste ovako:

Za A = 0 By List.Quantity() - 1 Loop Report(List[A].Value);

EndCycle;

Može kreirati svoju kopiju

Lista vrijednosti ima samo sjajnu osobinu - može kreirati svoju kopiju:

ListCopy = List.Copy();

// napravio kopiju liste // sada možemo sigurno promijeniti kopiju liste // dok originalna lista neće promijeniti kopiju liste. Vrijednost = 123456;

Može se pretvoriti u niz

I konačno, možete lako izbaciti sve elemente liste u niz u bilo kojem trenutku:

Brojevi niza = Lista. UnloadValues();

// bačen u niz

Za A = 0 By ArrayNumber.Quantity() - 1 ciklus

Izvještaj(Brojevi niza[A]); // nema potrebe specificirati // vrijednost opcije

EndCycle;

Za uvježbavanje i konsolidaciju gradiva ove jedinice, preporučuje se dovršiti sljedeći zadatak.

Potrebno je unijeti 5 brojeva od korisnika, pronaći najveći i najmanji od njih i prikazati ih korisniku. Rješenje mora koristiti listu vrijednosti.

Rješenje

Lista = Nova lista vrijednosti;

// kreirao listu vrijednosti za A = 1 do 5 Broj ciklusa = 0;

UnesiteBroj(Broj); // unesite broj od korisnika List.Add(Number); // i dodaj ga na listu EndCycle; // i tako 5 puta

// sortiraj listu brojeva

Lista. Sort byValue(SortDirection.Age);

// nakon sortiranja, prvi element liste je // najmanji element, a posljednji je najveći OpenValue("Smallest element" + List +

", i najveći " + Lista[Lista.Količina() - 1]);

O čemu je ovaj članak?

Ovaj članak nastavlja seriju članaka „Prvi koraci u razvoju 1C“. Pokriva principe rada sa univerzalnim kolekcijama. Nakon čitanja članka naučit ćete:

  • Šta su univerzalne kolekcije i kada i u kojim slučajevima ih treba koristiti?
  • Šta je zajedničko svim univerzalnim kolekcijama? Koje tehnike možete koristiti za rad sa svima njima?
  • Šta je niz, kako i kada ga koristiti? Koje metode ima?
  • Zašto koristiti strukturu? Po čemu se razlikuje od niza?
  • Kada biste trebali koristiti listu vrijednosti? Kako to prikazati na obrascu?
  • Usklađenost – šta je to i kada je koristiti? Koje su prednosti u pogledu strukture?
  • Za šta se koristi tabela vrijednosti? Kako opisati njegovu strukturu? Kako dodati/ukloniti linije? Kako to prikazati na obrascu?
  • Stablo vrijednosti - čemu služi? Kako popuniti i prikazati obrazac? Kako raditi s tim?

Primjenjivost

Članak govori o platformi 1C:Enterprise 8.3 trenutnog izdanja.

Kako raditi sa univerzalnim kolekcijama u 1C

Zbirka vrijednosti je kontejner koji obično može sadržavati bilo koji broj elemenata. Međutim, često ne postoje stroga ograničenja za tip podataka.

Možete dodati vrijednosti u generičku kolekciju. Sve vrijednosti u kolekciji se mogu preći. Ove kolekcije se uglavnom koriste za neku vrstu obrade u algoritmima. One. Ovo su neke dinamičke strukture koje postoje dok algoritam radi.

Važno je razumjeti da se zbirke ne pohranjuju u bazi podataka (ne govorimo o tipu podataka Skladište vrijednosti, koji može pohraniti gotovo sve vrste podataka).

Postoje različite vrste generičkih kolekcija: niz, struktura, podudaranje, fiksni niz, tablica vrijednosti, Tablični dio itd. Ali sve kolekcije imaju slično ponašanje.

Kolekcija se može kreirati kao rezultat operacije funkcije (funkcija vraća univerzalnu kolekciju kao vrijednost).

Novu kolekciju možete dobiti ručno pozivanjem konstruktora i kreiranjem instance klase.

Na primjer: NašArray = Novi niz;

Konstruktori za mnoge generičke kolekcije su parametrizirani.

Dakle, u konstruktoru za Možete odrediti broj članova u odgovarajućim dimenzijama. One. možete odmah proglasiti višedimenzionalnim .

Odgovarajući opis konstruktora nalazi se u pomoćniku za sintaksu.

Dakle, koristeći parametre konstruktora, možete odmah postaviti željeno ponašanje datog objekta.

Ali parametri su opcioni; programer ih ne može postaviti i dalje definirati ponašanje niza kako želi.

Gotovo svaka univerzalna kolekcija može se kreirati pomoću konstruktora (izuzetak su dijelovi tablice, koji djeluju kao konfiguracijski objekti).

Za univerzalne kolekcije postoje takve opšti koncepti, poput indeksa i broja. Svaki element kolekcije ima indeks. U ovom slučaju, indeks počinje od nule.

Za pristup elementu OurArray, možete koristiti pristup indeksu; za to je indeks označen u uglastim zagradama.

Na primjer, OurArray. Imajte na umu da u ovom slučaju sistem vraća element niza sa indeksom 3, a po redu je to četvrti element niza.

Za neke kolekcije postoji i koncept broja reda. Broj linije počinje sa jedan. Na primjer, za tabelarni dio postoji takva osobina kao što je broj reda. Važno je imati na umu da ako znamo broj reda i želimo da mu pristupimo preko indeksa, onda kao indeks trebamo koristiti vrijednost za jedan manju od broja reda.

Koncept broja reda ne postoji u svim zbirkama, već uglavnom u onima koje se mogu prikazati u korisničkom interfejsu.

Sve kolekcije koriste obilazak elementa kolekcije. Zaobići je moguće na dva načina: ciklus Za I ciklus Za svaki od.

Za većinu generičkih kolekcija, metode koje se primjenjuju su Count, Index, Add, Insert, Delete i Find.

Count je funkcija koja vraća broj elemenata u kolekciji. Može se koristiti prije ciklusa Za, kao što je prikazano na slici.

Metoda Index ne postoji za sve kolekcije, već samo za one čiji se elementi mogu referencirati. Primjer je Tabela vrijednosti.

Tabela vrijednosti– ovo je posebna kolekcija redova, redovi mogu sadržavati različite stupce različite vrste vrijednosti.

Svaka linija predstavlja nezavisni entitet. Možete dobiti vezu do njega; kroz ovu liniju možete pristupiti vrijednostima stupaca u ovom redu.

Metoda Index vam omogućava da odredite koji indeks odgovara datom redu (tj. trenutnoj poziciji reda u tabeli). Vrijednosti indeksa počinju od nule.

Gotovo svaka univerzalna kolekcija ima metode za dodavanje novih vrijednosti datoj kolekciji. Slika pokazuje kako popuniti niz vrijednostima od 0 do 10 na dva načina.

Za dodavanje elementa u niz možemo koristiti metodu Dodati, naznačite vrijednost koju treba dodati u zagradama. U ovom slučaju, vrijednost će biti dodana na kraj liste, tj. Niz će se stalno povećavati zbog posljednje pozicije.

Druga metoda koja vam omogućava da dodate vrijednosti u kolekciju je Insert. Razlikuje se od metode Dodati u kojoj možete odrediti gdje da umetnete dodani element.

sintaksa: umetnuti (,)

Prvi parametar specificira indeks u koji će se umetnuti nova vrijednost. One. na primjer, možemo odrediti da svaka vrijednost treba biti umetnuta na početak liste (drugi metod na gornjoj slici).

Da biste uklonili elemente iz kolekcije, koristite metodu Izbriši. Metoda Delete određuje indeksom koji element ćemo obrisati.

sintaksa: Izbriši()
Primjer upotrebe: OurArray.Delete(5);

Treba napomenuti da za one kolekcije u kojima nizovi predstavljaju nezavisni entitet (na primjer, for Tabele vrijednosti), također možemo koristiti metodu dobivanja indeksa kako bismo kasnije izbrisali ovaj red.

Gotovo sve kolekcije imaju metodu za traženje vrijednosti - Nađi. Vrijednost koju želimo pronaći se prosljeđuje metodi. Neke kolekcije vam omogućavaju da postavite neka ograničenja.

Na primjer, u Tabela vrijednosti možete odrediti redove i stupce u kojima želite pretraživati.

Ako je vrijednost pronađena, ova metoda vraća indeks ili navedeni string. Ako vrijednost nije pronađena, vraća se vrijednost tipa Nedefinisano. U odnosu na niz, vraća Indeks, ili vrijednost Nedefinisano.

Primjer upotrebe: NašaVarijabla = NašArray.Find(8);

Univerzalne kolekcije se mogu vrlo brzo izbrisati, tj. ukloniti apsolutno sve elemente. U tu svrhu se koristi metoda Clear(), koji uklanja elemente niza, redove Tabele vrijednosti, ili podatke iz drugih zbirki.

Dodatne metode za niz

Metoda BBorder() vraća broj elemenata minus jedan. One. ako koristimo petlju Za, tada umjesto metode količine možemo odmah koristiti metodu Border().

Konkretno, varijabla QuantityInArray bi se mogla definirati drugačije:

QuantityInArray = OurArray.InBorder();
Zatim, kada se opisuje sam ciklus, ne treba se oduzimati od ove varijable.

Metoda Set vam omogućava da dodijelite vrijednost elementu niza po indeksu.

sintaksa: Instaliraj(,)

primjer: NašArray.Set(2,8);

Alternativna opcija: NašArray = 8;

Možete koristiti metodu za niz Get, za čitanje vrijednosti u indeksu bez pribjegavanja korištenju uglastih zagrada.

sintaksa: Get()

primjer: NašaVariable = OurArray.Get(2);

Alternativna opcija: NašaVarijabla = NašArray;

Univerzalna kolekcija Struktura

Struktura, kao i niz, može imati neograničen broj elemenata, ali sadržaj elementa se razlikuje od niza.

Struktura je kolekcija, čija se svaka vrijednost sastoji od para. Prvi element para se zove Ključ. Drugi element para je Značenje.

Ključ– ovo je strogo string type podatke koji opisuju vrijednost. Na primjer, Do ključa"Šifra" može odgovarati vrijednosti 113; Do ključa“Ime” znači “Vasja”. Sama vrijednost ne podliježe ograničenju tipa podataka.

Struktura je vrlo zgodna za korištenje ako želimo kreirati određenu listu parametara. Ako ovo Struktura pozvao OurStructure, tada ćemo se odnositi na njegove dvije vrijednosti na sljedeći način: OurStructure.Code i OurStructure.Name.

Ovakav pristup je mnogo praktičniji nego da smo definirali sve parametre u nizu i pristupili im po indeksu.

Struktura čini programski kod čitljivim (razumljivim). Struktura se koristi prilično često, mnogo češće od niza.

Koristi se za opisivanje određenih parametara kojih u svim algoritmima često ima prilično velik broj.

Osim toga, struktura se koristi ako procedura i funkcija sadrže veliki broj proslijeđenih parametara.

Tada je mnogo zgodnije upisati sve parametre u strukturu i proslijediti ih dalje. One. parametri procedura i funkcija su „upakovani“.

Odvojeno, treba napomenuti da kao Ključ U strukturi se ne može pojaviti apsolutno nijedna linija. Primjenjuju se određena ograničenja.

Ključ treba da služi kao identifikator. To znači da u Klyuche ne smije biti razmaka i ne može početi brojem.

Prihvatljiv početak Ključ sa slovom ili donjom crtom. dakle, Ključ moraju zadovoljiti zahtjeve za kreiranje identifikatora.

Zapazimo kako se drugačije struktura razlikuje od niza. U strukturi postoji metoda Insert, postoje dvije metode za umetanje u niz: Insert(na određenu poziciju) i Dodati(do kraja liste). U nizu su svi elementi poredani.

Struktura je vrsta nesređenog skupa. Zbog toga postoji samo metoda umetanja za strukturu.

Vrijednost se ne ubacuje na određenu poziciju, već u navedeni skup. Strukturi se ne može pristupiti preko indeksa, kao drugim generičkim kolekcijama.

Elementima strukture se pristupa samo po imenu ključa. Međutim, petlja For Each također radi za strukturu, ali se ne biste trebali oslanjati na redoslijed elemenata strukture.

Struktura se kreira na isti način kao i druge generičke kolekcije korištenjem konstruktora New, specificirajući tip podataka Struktura.

Kao i niz, konstruktor strukture može imati parametre. One. moguće je opisati sam sadržaj strukture koristeći konstruktor.

Za razliku od niza, gdje možete jednostavno odrediti broj elemenata za sve dimenzije, u strukturi možete specificirati sam sadržaj.

Na primjer: Naša struktura = Nova struktura (“Šifra, ime”, 133, “Vasya”);

Razdvojeni zarezima, prvo se navode nazivi ključeva, a zatim, u skladu s tim, istim redoslijedom, vrijednosti parametara.

Postoji metod za dodavanje nove vrijednosti u strukturu Insert, koji umeće novi par (ključ i vrijednost).

Na primjer: OurStructure.Insert(“Članovi porodice”,3);

Strukturu karakteriše još jedan metod koji se često koristi. Ovo je metoda Nekretnina.

Koristeći ovu metodu, možete razumjeti da li postoji element u ovoj strukturi čiji ključ ima takvo i takvo ime.

Ako takav element postoji, sistem će vratiti vrijednost True, u suprotnom – False.

Na primjer, izraz OurStructure.Property (“Članovi porodice”)će biti jednaka vrijednosti True. Ova metoda se često koristi pri analizi strukture.

Kao i kod svake univerzalne kolekcije, svojstvima strukture je moguće pristupiti pomoću indeksa. Ali indeks za strukturu je vrijednost niza.

Na primjer: Izvještaj(Naša struktura[“Članovi porodice”]);

Međutim, ne treba zaboraviti da je struktura neuređen skup objekata, zbog čega je pristup po indeksu 0, 1, 2 neprihvatljiv.

Generička zbirka Lista vrijednosti

ListValues je linearna lista elemenata bilo kojeg tipa podataka.

Svaki element se sastoji od nekoliko vrijednosti. Šematski se lista vrijednosti može predstaviti kao lista sa četiri kolone.

Prva kolona - Mark. Ima Boolean tip podataka i omogućava korisniku da potvrdi ili poništi okvire.

Druga kolona je slika koja na neki način može vizuelno predstaviti ovaj element, tj. spoji ovaj niz sa slikom.

Treća kolona je sama pohranjena vrijednost, tj. ovo je bilo koja vrsta podataka i mogu se razlikovati u različitim redovima.

Četvrta kolona je prezentacija, tj. ovo je neka vrsta string opisa datu vrijednost. Pogled će biti prikazan korisniku kada pogleda ovaj element. U ovom slučaju, ako reprezentacija nije specificirana, sistem će pokušati dobiti reprezentacije za element koji se nalazi na ovoj poziciji.

ListValues– ovo je objekt s kojim korisnik može vizualno raditi. One. ListValues može se prikazati na obrascu.

Korisnik može izvršiti neke radnje s njim. osim toga, ListValues može se zaključiti nezavisno korišćenjem metoda, tj. prikazati na ekranu u nekoj grani algoritma (sa izuzetkom serverskog koda) tako da korisnik odabere neki red ili potvrdi neke okvire.

Naći ćemo ListValues u sitax asistentu. Konstruktor ListValues nije parametriran (ne možete postaviti nijednu zadanu vrijednost).

Postoje metode kao što su:

  • Insert(,) ;
  • Dodati(,);
  • Količina();
  • Indeks().

Postoje i posebne metode, npr. UnloadValues(). Ovo stvara niz u koji se kopira lista vrijednosti. Na primjer:

Niz elemenata = Lista tipova cijena.OutloadValues();

Postoji i obrnuti metod:
ListPriceTypes.LoadValues(ArrayItems);

Postoje metode pretraživanja:
FindByValue(); FindByIdentifier().

Postoji metoda kopiranja:
ListCopy = PriceTypeList.Copy();
Ova metoda ima za cilj da napravi neku vrstu modifikacije na kopiji.

Postoje metode:
SortByValue();
SortByView().

Metode Odaberi stavku(,) I MarkItems() pozvati modalni dijaloški okvir koji zaustavlja izvršavanje algoritma sve dok korisnik ne zatvori prozor.

Za korištenje ovih metoda u svojstvima konfiguracije Način korištenja modaliteta mora biti postavljeno na Koristi.

Primjer koda pozvanog iz modula upravljane aplikacije:

Prikažite ovaj kod u korisničkom modu (modalni dijalog).

Ispod ListValues koristi se kao dostupan tip podatke za detalje obrasca. Kreiramo novi atribut za obrazac za obradu i definiramo njegov tip ListValues i prikazati na obrascu.

Stvaranje novog tima Ispunite poklone, prenesite ga u obrazac i definirajte rukovatelja radnjom za njega.

U korisničkom modu, kada kliknete na dugme Ispunite poklone u obrascu za obradu, pojavit će se popunjena lista.

Po želji, lista se može uređivati: neki elementi se mogu dodati, neki se mogu ukloniti.

Raznovrsna usklađenost kolekcije

Ova kolekcija je veoma slična Struktura. Baš kao i struktura, mapiranja su skupovi vrijednosti koji se sastoje od ključa i same vrijednosti.

Glavna razlika je u tome što se bilo koji tip podataka može specificirati kao ključ, kao i za vrijednost. S obzirom na ovu mogućnost, potrebno je pristupiti vrijednosti podudaranja po indeksu; vrijednost ključa je naznačena kao vrijednost indeksa.

Ključ može biti tip podataka koji nije niz. Svojstva i metode rada sa Compliance-om su skoro iste kao i kod Structure.

Konstruktor usklađenosti, za razliku od strukture, ne sadrži mogućnost specificiranja parametara.

Primjer upotrebe:

Prepiska je zgodna za korištenje kada trebate povezati bilo koje dvije strukture. Na primjer, svaki red u tabličnom dijelu mora biti uparen sa redom iz tablice vrijednosti.
U ovom slučaju, red odeljka tabele se koristi kao ključ za podudaranje i odgovarajuća vrednost je naznačena.

Prilikom umetanja elemenata u kolekciju Match pored metode umetnuti(,) Drugi način umetanja vrijednosti je korištenje regularnog operatora dodjele.

Na primjer: OurMatch = NewMatch;
Podudaranje = 999;

One. ako element nije bio prisutan u kolekciji, tada će biti dodan pomoću operatora dodjeljivanja, a ako je bio prisutan, bit će ažuriran.

Ovo je u suprotnosti sa strukturom.

Univerzalna zbirka vrijednosti

Tabela vrijednosti je tabela sa proizvoljnim brojem redova i proizvoljnim brojem kolona. Raskrsnica može pohraniti vrijednosti bilo kojeg tipa podataka. Po potrebi se mogu kucati kolone, odnosno možete odrediti u kojoj koloni se koji tip podataka pohranjuje.

Kolone možete ostaviti neupisane, tada se vrijednosti različitih tipova mogu pohraniti u jednu kolonu u različitim redovima.

Razlike Tabele vrijednosti iz dvodimenzionalnog niza:

  • ovo je objekt s kojim korisnik može raditi (tabela vrijednosti se može prikazati na ekranu, korisnik je može popuniti, a uneseni podaci se zatim mogu pročitati);
  • izgradnja indeksa za brzo pretraživanje;
  • kloniranje, popunjavanje cijele kolone određenom vrijednošću, učitavanje svih kolona u niz.

Tabela vrijednosti koristi se kao neka vrsta bafera za skladištenje informacija. Tabela vrijednosti se vraća i prihvata kao parametar od strane mnogih sistemskih metoda. Moguće je napraviti upit prema tablici vrijednosti.

dakle, Tabela vrijednosti sastoji se od skupa redova i niza kolona. I redovi i kolone su kolekcije.

One. unutar kolekcije Tabela vrijednosti postoje još dvije kolekcije. Okrenimo se pomoćniku za sintaksu i pronađimo Tabela vrijednosti.

Podržani tipovi podataka: sam Tabela vrijednosti, koji se sastoji od nizova. Svaki red je predstavljen tipom podataka RowTableValues, koji ima svoja svojstva i svoje metode. Dostupan Kolekcija vrijednosti stupaca tablice takođe ima određena svojstva.

Važna tačka! Procedura koja stvara Tabela vrijednosti, mora kompajlirati &OnServer.

Prije nego počnete raditi sa Tabela vrijednosti, morate odrediti koje će stupce sadržavati (tj. kreirati ih). sintaksa:

Dodati(,)
(opciono)
Vrsta: String.
(opciono)
Tip: DescriptionTypes
(opciono)
Vrsta: String.
(opciono)
Tip: Broj.

Na primjer:

Za pozivanje ove procedure koristićemo naredbu.

U opisu Tabele vrijednosti elementi kolekcije su upravo RowsTableValues.

Za razliku od kolona koje se sastoje samo od svojstava (naziv, tip, naslov, širina), in RowTableValues Postoje i svojstva (pristup prema imenu kolone) i metode (možete dobiti i postaviti vrijednost, raditi sa vlasnicima).

Dodati nova linija za tabelu morate koristiti i metodu Dodati(), ili Insert(). U drugom slučaju, trebali biste naznačiti na kojoj poziciji treba postaviti traženu liniju.

Da bismo dodijelili vrijednost koloni, koristimo tačku za pristup imenu kolone ili indeksu (pomoću uglastih zagrada).

Za punjenje Tabele vrijednosti Mogu se koristiti sljedeće metode:

Clear()– za uklanjanje svih redova iz Tabele vrijednosti.

FillValues(,)– omogućava vam da popunite sve kolone ili odabrane stupce jednom vrijednošću.
LoadColumn(,)– učitava kolonu iz niza.
UnloadColumn()– učitava kolonu u niz.

Posljednje dvije metode su zgodne za korištenje kada trebate prenijeti kolonu iz jedne tablice vrijednosti u drugu.

Kopiraj(,)– omogućava vam da kreirate novu na osnovu postojeće tabele Tabela vrijednosti, i to ne svi redovi i svi stupci, već samo neki od njih. Povratna vrijednost – Tabela vrijednosti.

Možete kopirati strukturu Tabele vrijednosti. Za to postoji odgovarajuća metoda CopyColumns(). Dobićemo praznu Tabela vrijednosti sa potrebnom strukturom.

IN Tabela vrijednosti postoji metoda Ukupno(). Možete odrediti kolonu u kojoj želite da zbrojite numeričke vrijednosti. U odnosu na prethodno prikazani kod u tabeli, možete izračunati vrijednost: TK.Total (“Iznos”).

IN Tabela vrijednosti moguće je grupirati (sažmiti) numeričke vrijednosti po identičnim vrijednostima određenih kolona koristeći metodu Sažmi(,).

U odnosu na prethodno prikazani kod u tabeli, možete izračunati vrijednost: TK.Collapse(“Dan u sedmici”, “Iznos”).

Tabela vrijednosti može se prikazati na korisničkom ekranu tako da možete izvršiti bilo koju radnju s njim. Ali za razliku ListValues od programski kod Ne možete samo prikazati tabelu na ekranu.

Prikazati Tabela vrijednosti na ekranu kreirajte atribut obrasca i dodijelite mu tip podataka Tabela vrijednosti.

Nakon toga, rezultirajuća tabela treba biti prikazana na obrascu.

U modulu obrasca na kraju prethodno sastavljenog algoritma (u proceduri za kreiranje tabele vrednosti) treba da dodate:
ValueInFormData(TK, Table);

Univerzalna kolekcija Drvo vrijednosti

univerzalna kolekcija koja je vrlo slična Tabela vrijednosti. Razlika od tabele je u tome što redovi stabla mogu biti podređeni jedan drugom, tj. može se formirati neka vrsta hijerarhije.

Ovo se takođe može odraziti na ekranu. Stablo vrijednosti se eksplicitno sastoji od kolekcije redova i kolekcije stupaca. Postoje dva svojstva u stablu: Redovi i Kolone.

Pošto redovi mogu biti podređeni jedan drugom, svaki red može imati Roditelja, kao i njemu podređeni redovi.

Kreirajmo odgovarajuću naredbu Tree i njenu proceduru obrade.

Kreirajmo u kojem se nalazi jedan roditeljski i dva podređena reda.

Kreirajmo atribute forme DerZn(tip podataka – Stablo vrijednosti).

Za ovaj atribut kreiraćemo kolone Godina i Mjesec.

Pomerite odgovarajući element DerZn na obrascu.

Na kraju Procedure TreeOnServer() dodajmo:

ValueInFormData(TreeZn, DerZn);

Hajde da proverimo šta se desilo u korisničkom režimu.

Korištenje dugmeta Dodati možete dodati nove linije. Oni takođe mogu formirati hijerarhiju.

Da bismo prešli sve elemente stabla vrijednosti, morat ćemo koristiti rekurziju, tj. pozivanje procedure iz samog sebe. Na primjer, obrada stabla vrijednosti može izgledati ovako:

Ovo završava naše prvo upoznavanje sa univerzalnim kolekcijama.

U sljedećem članku ćemo pogledati koji važan mehanizam programer može koristiti da pojednostavi pristup elementu direktorija iz programskog koda.