1c element popisa vrijednosti. Univerzalna kolekcija Drvo vrijednosti

Puna sintaksa (kliknite za proširenje)

ListValues

Opis:

Popis vrijednosti je objekt koji nije spremljen u bazi podataka, što vam omogućuje da izgradite dinamičke skupove vrijednosti za rješavanje problema sučelja i manipulirate njima (dodavanje, uređivanje, brisanje elemenata, sortiranje). Može se ispuniti vrijednostima bilo koje vrste, tj. Na jednom popisu vrste pohranjenih vrijednosti mogu biti različite. Jedan primjer korištenja ovog objekta može poslužiti kao organizacija za odabir određenog dokumenta s popisa mogućih dokumenata generiranih pomoću složenog algoritma.

Stavke zbirke: ValueListElement

Moguće je da objekt zaobiđe kolekciju pomoću operatora Za svaki... Od... Ciklus. Traversal odabire elemente zbirke.

Moguće je pristupiti elementu zbirke koristeći [...] operator. Indeks elementa prosljeđuje se kao argument ( numeracija od 0).

Svojstva:

Metode:

Umetni (Indeks, Vrijednost, Prikaz, Oznaka, Slika) Umetci novi element na popis vrijednosti na poziciji s navedenim indeksom.SelectElement (Header, Element) Poziva prozor za interaktivni odabir jednog od elemenata uključenih u popis vrijednosti. Element- element na koji se inicijalno treba pozicionirati popis vrijednosti tijekom interaktivnog odabira. Ako vrijednost parametra nije element popisa vrijednosti uključen u ovaj popis, pozicioniranje se neće dogoditi.UnloadValues() Stvara niz i kopira vrijednosti elemenata popisa vrijednosti u njega.Add(Value, Representation, Label, Image)Dodaje novi element na kraj popisa vrijednosti.LoadValues(ArrayValues) Učitava popis vrijednosti s vrijednostima iz proslijeđenog niza. U tom slučaju se brišu svi prethodni elementi popisa.Ispunite Bilješke(Označi) Postavlja oznaku za sve elemente popisa vrijednosti.Indeks(Element) Dobiva indeks elementa na popisu vrijednosti. Ako nije pronađeno, vraća se -1.Count() Dobiva broj elemenata na popisu vrijednosti.FindByValue(SearchValue) Traži vrijednost elementa na popisu vrijednosti. Ako niti jedan element ne pohranjuje vrijednost jednaku traženoj vrijednosti, vrijednost se vraća Nedefiniran. Traži po ID-u(Identifikator) Dohvaća element popisa vrijednosti po identifikatoru. Ako element nije pronađen, onda se vraća Nedefiniran. MarkItems(Zaglavlje) Postavlja ili poništava (interaktivno) stavke na popisu vrijednosti. Povratak Pravi, ako se u dijaloškom okviru pritisne gumb "OK", Laž- inače.Clear() Briše popis vrijednosti, uklanjajući sve elemente s njega.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Poziva prozor za interaktivni odabir jednog od elemenata uključenih u popis vrijednosti.ShowMark stavke(Opis upozorenja za zatvaranje, zaglavlje) Dizajnirano za interaktivno postavljanje stanja oznaka za elemente popisa vrijednosti.Get(Index)Dohvaća vrijednost prema indeksu. Radi slično kao operater.Shift (Element, Offset) Pomiče element s popisa vrijednosti unaprijed ili unatrag za određeni broj pozicija.Copy() Stvara kopiju popisa vrijednosti.Poredaj po vrijednosti(Smjer) Razvrstava popis vrijednosti uzlaznim ili silaznim redoslijedom vrijednosti pohranjenih od strane elemenata. Pogledajte primjer u nastavku.SortByView(Smjer) Sortiranje popisa vrijednosti uzlaznim ili silaznim redoslijedom abecedni red prikazi uključeni u popis vrijednosti elemenata. Pogledajte primjer u nastavku.Ukloni (element) Uklanja element s popisa vrijednosti, gdje Element- indeks elementa koji se briše ili samog elementa.

Dizajneri:

Novi popis vrijednosti
&OnClient procedura ExecuteCode(Command) /// Kako stvoriti popis vrijednosti u 1s 8.3, 8.2 Popis = Nova lista vrijednosti; /// Kako dodati element na popis vrijednosti u 1s 8.3, 8.2 // dodaj parametre metode:// - značenje // - izvođenje // - oznaka (obavezno) // - slika (obavezno) Popis. Dodaj (1980, // vrijednost elementa "Godina Vasjinog rođenja"// izvođenje ) ; Popis. Dodaj(1985, "Godina Julijinog rođenja") ; // vrijednosti mogu biti različitih vrsta Popis. Dodaj("Polina" , "Ime djeteta" ) ; /// Kako umetnuti element u popis vrijednosti u 1s 8.3, 8.2 // umetnuti na poziciju br. 2 (elementi su numerirani počevši od 0) // element s vrijednošću 2010 i reprezentacijom // "Godina rođenja njihove zajedničke kćeri" Popis. Umetni (2, 2010., "Godina kada je rođena njihova zajednička kći") ; /// Kako zaobići elemente popisa vrijednosti u 1s 8.3, 8.2 Za svaki element iz popisa Loop Report( Element. Representation + ": " + String(Element. Value) ) ; Kraj ciklusa ; /// Kako očistiti popis vrijednosti u 1s 8.3, 8.2 Popis. Čisto() ; Popis. Dodaj("ponedjeljak"); Popis. Dodaj("utorak"); Popis. Dodaj("srijeda" ); /// Kako saznati broj elemenata popisa vrijednosti, kao i /// dobiti element popisa po njegovom indeksu u 1s 8.3, 8.2 // numeriranje od nule Za indeks = 0 prema popisu. Količina() - Izvješće 1 ciklusa(Lista[Indeks]) ; Kraj ciklusa ; /// Kako pronaći element popisa prema njegovoj vrijednosti u 1s 8.3, 8.2 ValueTuesday = Popis. FindByValue("utorak"); /// Kako saznati indeks elementa na listi u 1s 8.3, 8.2 Izvješće(List.Index(ValueTuesday)) ; // 1, jer numeriranje počinje od nule /// Kako sortirati popis prema njegovim vrijednostima u 1s 8.3, 8.2 // bio je: ponedjeljak, utorak, srijeda Popis. Sortiraj poVrijednosti(Smjer sortiranja. Silazno) ; // postalo: srijeda, ponedjeljak, utorak /// Kako ukloniti element s popisa vrijednosti u 1s 8.3, 8.2 // ukloniti prvi element // parametar: element liste // ili indeks elementa// možete napraviti ovaj popis. Obriši(Popis[ 0 ]) ; // ili tako // List.Delete(0); /// Kako pomaknuti element popisa vrijednosti u 1s 8.3, 8.2 // pomaknite nulti element jednu poziciju naprijed // bio je: ponedjeljak utorak Popis. Premjesti(0, 1); // postalo: utorak ponedjeljak /// Kako napraviti kopiju popisa u 1s 8 ListCopy = Popis. Kopiraj() ; Boje = NewValueList; Boje. Dodaj("Crveno" ); Boje. Dodaj("Zeleno" ); Boje. Dodaj("Plavo" ); /// Kako učitati vrijednosti popisa u polje u 1s 8.3, 8.2 ArrayColors = Boje. UčitajVrijednosti() ; /// Kako učitati vrijednosti popisa iz polja u 1s 8.3, 8.2 Boje. Učitaj vrijednosti(Boje niza) ; EndProcedure /// Kako napraviti nemodalni odabir vrijednosti s popisa /// vrijednosti u 1s 8.3, 8.2&Na klijentovom postupku Kako napraviti odabir nemodalne vrijednosti (naredba) Boje = Nova lista vrijednosti; Boje. Dodaj("Crveno" ); Boje. Dodaj("Zeleno" ); Boje. Dodaj("Plavo" ); // procedura AfterSelectingElement definirana je ispod AlertAfterElementSelection = New DescriptionAlerts( "Nakon odabira elementa", OvajObjekt ); Boje. ShowElementSelection( NotificationAfterElementSelection, "Odaberi svoju omiljenu boju") ; Kraj procedure &na klijentskoj proceduri nakon odabira elementa (element, parametri) Izvoz ako elementa<>Undefined Then Report(Element.Value) ; Završi ako ; EndProcedure /// Kako napraviti nemodalno označavanje vrijednosti s popisa /// vrijednosti u 1s 8.3, 8.2&Na klijentovom postupku Kako napraviti nemodalno označavanje vrijednosti (naredba) Boje = Novi popis vrijednosti; Boje. Dodaj("Crveno" ); Boje. Dodaj("Zeleno" ); Boje. Dodaj("Plavo" ); // procedura AfterMarkingElements definirana je ispod AlertAfterMarkingItems = New DescriptionAlerts( "Nakon označavanja stavki", OvajObjekt ); Boje. ShowTagItems( AlertAfterTagItems, "Odaberi svoje omiljene boje") ; Boje. FillNotes(True) ; Kraj procedure &na klijentskoj proceduri nakon označavanja elemenata (elemenata, parametara) Izvezi ako elemente<>Undefined Zatim za svaku boju iz Elements Cycle If Color. Označi zatim prijavi(Boja.Vrijednost) ; Završi ako ; Kraj ciklusa ; Završi ako ; EndProcedure /// Kako napraviti modalni odabir vrijednosti s popisa u 1s 8.3, 8.2&Na klijentovom postupku Kako napraviti ModalValueSelection(Command) Colors = New ValueList; Boje. Dodaj("Crveno" ); Boje. Dodaj("Zeleno" ); Boje. Dodaj("Plavo" ); SelectColor = Boje. Odaberite stavku ( "Odaberi svoju omiljenu boju") ; Ako SelectColor<>Undefined Then Report(SelectColor.Value) ; Završi ako ; EndProcedure /// Kako modalno označiti vrijednosti s popisa /// vrijednosti u 1s 8.3, 8.2&Na klijentovom postupku Kako napraviti modalnu oznaku vrijednosti (naredba) Boje = Novi popis vrijednosti; Boje. Dodaj("Crveno" ); Boje. Dodaj("Zeleno" ); Boje. Dodaj("Plavo" ); Ako Boje. MarkItems( "Odaberi svoje omiljene boje") Zatim za svaku boju iz ciklusa boja Ako je boja. Označi zatim prijavi(Boja.Vrijednost) ; Završi ako ; Kraj ciklusa ; Završi ako ; // ovako možete postaviti sve oznake odjednom // popis na određenu vrijednost Boje. FillNotes(True) ; EndProcedure /// Preuzmite i pokrenite ove primjere na svom računalu

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

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

// stvorio popis vrijednosti

Popis.Dodaj(23);

Za sada sve izgleda kao niz, zar ne? Ali idemo dalje. Da sada prikažemo ove brojeve korisniku, pišemo:

// petlja kroz svaki element popisa za svaki element s popisa Loop Report(Element.Value);

// prikaz vrijednosti elementa EndCycle;

I tu je prva razlika. Elementi regularnog niza su sami brojevi. I pristup trenutnoj vrijednosti elementa Popis koristimo opciju Značenje, koristeći konstrukciju Element. Značenje.

Pogledajmo neke dodatne značajke Vrijednosti.

Može sortirati

Na primjer, možemo jednostavno sortirati popis vrijednosti. Popis to može učiniti sam:

List.SortByValue(Smjer sortiranja.Dob); U slučaju regularnog niza, morali bismo implementirati jedan od algoritama sortiranja (na primjer, "bubble").

Može pretraživati

Popis vrijednosti može sam tražiti svoje elemente. Recimo da želimo saznati je li broj koji je unio korisnik prisutan na našem popisu:

UnesiteBroj(Broj); // unijeli broj od korisnika FoundElement = List. PronađiPoVrijednosti(Broj);

If FoundItem = Undefined Then OpenValue("Broj " + Broj + " nije pronađen na popisu!"); Inače

OpenValue("Broj " + Broj + " je na popisu. Ovdje je:" + FoundElement.Value);

završi ako; ListValues

Podržava umetanje i brisanje

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

Popis. Umetni(0, 1000);

// umetnite tisuću na sam početak liste List.Delete(O); // i odmah ga ukloniti s popisa List. Umetni(List.Količina(), 13);

// umetnuti 13 na kraj liste Report(List[List.Quantity() - 1]);

// prikaz zadnjeg elementa liste (13)

Podržava uglate zagrade

Kao što ste već shvatili, numeriranje elemenata popisa također počinje od nule, a bilo kojem elementu možemo pristupiti njegovim indeksom pomoću uglatih zagrada:

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

Za A = 0 By List.Quantity() - 1 Izvješće petlje(List[A].Value);

EndCycle;

Može stvoriti kopiju samog sebe

Popis vrijednosti ima samo sjajnu značajku - može stvoriti svoju kopiju:

ListCopy = List.Copy();

// napravili kopiju popisa // sada možemo sigurno promijeniti kopiju popisa // dok originalni popis neće promijeniti kopiju popisa. Vrijednost = 123456;

Može se pretvoriti u niz

I na kraju, u bilo kojem trenutku možete jednostavno ispisati sve elemente popisa u niz:

ArrayNumbers = Popis. UnloadValues();

// bačen u niz

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

Izvješće(NizBrojeva[A]); // nema potrebe navesti // vrijednost opcije

EndCycle;

Za uvježbavanje i učvršćivanje gradiva ove jedinice preporuča se izvrš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 popis vrijednosti.

Riješenje

Popis = Nova lista vrijednosti;

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

UnesiteBroj(Broj); // unos broja s popisa korisnika.Add(Number); // i dodajte ga na popis EndCycle; // i tako 5 puta

// sortiraj popis brojeva

Popis. Poredaj po vrijednosti(Smjer sortiranja.Dob);

// nakon sortiranja, prvi element liste je // najmanji element, a zadnji je najveća OpenValue("Najmanji element" + Lista +

", a najveći " + Lista[List.Quantity() - 1]);

O čemu je ovaj članak?

Ovaj članak nastavlja seriju članaka “Prvi koraci u razvoju 1C.” Obuhvaća principe rada s univerzalnim zbirkama. Nakon čitanja članka naučit ćete:

  • Što su univerzalne zbirke te kada iu kojim slučajevima ih treba koristiti?
  • Što je zajedničko svim univerzalnim kolekcijama? Koje tehnike možete koristiti za rad sa svima njima?
  • Što je niz, kako i kada ga koristiti? Kakve metode ima?
  • Zašto koristiti strukturu? Kako se razlikuje od niza?
  • Kada biste trebali koristiti popis vrijednosti? Kako to prikazati na obrascu?
  • Sukladnost – što je to i kada ga koristiti? Koje su prednosti u pogledu strukture?
  • Za što se koristi tablica vrijednosti? Kako opisati njegovu strukturu? Kako dodati/ukloniti linije? Kako to prikazati na obrascu?
  • Stablo vrijednosti - čemu služi? Kako ispuniti i prikazati obrazac? Kako raditi s njim?

Primjenjivost

U članku se govori o platformi 1C:Enterprise 8.3 trenutnog izdanja.

Kako raditi s univerzalnim zbirkama u 1C

Zbirka vrijednosti je spremnik koji obično može sadržavati bilo koji broj elemenata. Međutim, često nema strogih ograničenja za vrstu podataka.

Možete dodati vrijednosti generičkoj zbirci. Sve vrijednosti u kolekciji se mogu proći. Ove zbirke se uglavnom koriste za neku vrstu obrade u algoritmima. Oni. Ovo su neke dinamičke strukture koje postoje dok algoritam radi.

Važno je razumjeti da se zbirke ne pohranjuju u bazu podataka (ne govorimo o vrsti podataka Value Store, koja može pohraniti gotovo sve vrste podataka).

Postoje različite vrste generičkih zbirki: Niz, Struktura, Podudaranje, Fiksni niz, Tablica vrijednosti, Tablični dio itd. Ali sve zbirke imaju slično ponašanje.

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

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

Na primjer: Naš niz = Novi niz;

Konstruktori za mnoge generičke zbirke su parametrizirani.

Dakle, u konstruktoru za Možete odrediti broj članova u odgovarajućim dimenzijama. Oni. 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 zadanog objekta.

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

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

Za univerzalne zbirke postoje takve opći pojmovi, poput indeksa i broja. Svaki element zbirke ima indeks. U ovom slučaju, indeks počinje od nule.

Za pristup elementu Naš niz, možete koristiti pristup indeksu; za to je indeks naveden u uglatim zagradama.

Na primjer, Naš niz. Imajte na umu da u ovom slučaju sustav vraća element niza s indeksom 3, a redom je to četvrti element niza.

Za neke zbirke postoji i koncept broja retka. Broj retka počinje s jedan. Na primjer, za tablični dio postoji takvo svojstvo kao broj retka. Važno je imati na umu da ako znamo broj retka i želimo mu pristupiti putem indeksa, tada bismo trebali koristiti vrijednost jedan manju od broja retka kao indeks.

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

Sve zbirke koriste obilazak elemenata zbirke. Premosnica je moguća na dva načina: ciklus Za I ciklus Za svaki od.

Za većinu generičkih zbirki, metode koje se primjenjuju su brojanje, indeksiranje, dodavanje, umetanje, brisanje i pronalaženje.

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 zbirke, već samo za one na čije se elemente može referencirati. Primjer je Tablica vrijednosti.

Tablica vrijednosti– ovo je posebna zbirka nizova, nizovi mogu sadržavati različite stupce s različiti tipovi vrijednosti.

Svaka linija predstavlja neovisnu cjelinu. Možete dobiti vezu do njega; kroz ovaj redak možete pristupiti vrijednostima stupaca u ovom retku.

Metoda indeksa omogućuje vam da odredite koji indeks odgovara danom retku (odnosno trenutnom položaju retka u tablici). Vrijednosti indeksa počinju od nule.

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

Za dodavanje elementa u polje možemo koristiti metodu Dodati, označite vrijednost koju želite dodati u zagradama. U tom slučaju vrijednost će biti dodana na kraj popisa, tj. Niz će se stalno povećavati zbog zadnje pozicije.

Druga metoda koja vam omogućuje dodavanje vrijednosti u zbirku je Umetnuti. Razlikuje se od metode Dodati u tome što možete odrediti gdje želite umetnuti dodani element.

Sintaksa: Umetni (,)

Prvi parametar specificira indeks u koji će se umetnuti nova vrijednost. Oni. na primjer, možemo odrediti da se svaka vrijednost umetne na početak popisa (druga metoda na gornjoj slici).

Da biste uklonili elemente iz zbirke, koristite metodu Izbrisati. Metoda Delete indeksom određuje koji ćemo element obrisati.

Sintaksa: Izbrisati()
Primjer upotrebe: Naš niz.Izbriši(5);

Treba napomenuti da za one zbirke gdje nizovi predstavljaju nezavisnu cjelinu (na primjer, for Tablice vrijednosti), također možemo koristiti metodu dobivanja indeksa kako bismo kasnije izbrisali ovaj red.

Gotovo sve zbirke imaju metodu za traženje vrijednosti - Pronaći. Vrijednost koju želimo pronaći prosljeđuje se metodi. Neke vam zbirke dopuštaju postavljanje nekih ograničenja.

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

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

Primjer upotrebe: NašaVarijabla = NašNiz.Pronađi(8);

Univerzalne zbirke mogu se vrlo brzo očistiti, tj. ukloniti apsolutno sve elemente. U tu svrhu koristi se metoda Čisto(), koji uklanja elemente polja, retke Tablice vrijednosti, ili podatke iz drugih zbirki.

Dodatne metode za Array

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

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

KoličinaInArray = NašArray.InBorder();
Zatim, kada se opisuje sam ciklus, ne treba se oduzimati od ove varijable.

Metoda Set omogućuje vam dodjeljivanje vrijednosti elementu niza prema indeksu.

Sintaksa: Instalirati(,)

Primjer: Naš niz.Set(2,8);

Alternativna opcija: Naš niz = 8;

Možete koristiti metodu za polje Dobiti, za čitanje vrijednosti u indeksu bez korištenja uglatih zagrada.

Sintaksa: Dobiti()

Primjer: Naša varijabla = naš niz.Get(2);

Alternativna opcija: Naša varijabla = naš niz;

Univerzalna zbirka Struktura

Struktura, baš kao i polje, može imati neograničeni iznos elemenata, ali se sadržaj elementa razlikuje od polja.

Struktura je zbirka od kojih se svaka vrijednost sastoji od para. Prvi element para naziva se Ključ. Drugi element para je Značenje.

Ključ- ovo je strogo vrsta niza podatke koji opisuju vrijednost. Na primjer, Do ključa"Kod" može odgovarati vrijednosti 113; Do ključa"Ime" znači "Vasya". Sama vrijednost ne podliježe ograničenju vrste podataka.

Struktura je vrlo zgodna za korištenje ako želimo kreirati određeni popis parametara. Ako ovo Struktura nazvao Naša Struktura, tada ćemo se pozivati ​​na njegove dvije vrijednosti na sljedeći način: OurStructure.Code i OurStructure.Name.

Ova vrsta pristupa mnogo je praktičnija nego da definiramo sve parametre u nizu i pristupamo im indeksom.

Struktura čini programski kod čitljivim (razumljivim). Struktura se koristi prilično često, puno češće nego niz.

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

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

Tada je puno prikladnije upisati sve parametre u strukturu i proslijediti je dalje. Oni. “pakiraju” se parametri procedura i funkcija.

Zasebno treba napomenuti da as Ključ U strukturi se ne može pojaviti baš bilo koja linija. Primjenjuju se određena ograničenja.

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

Prihvatljiv početak Ključ slovom ili podvlakom. Tako, Ključ mora zadovoljiti zahtjeve za kreiranje identifikatora.

Zabilježimo kako se još struktura razlikuje od niza. Postoji metoda u Strukturi Umetnuti, postoje dvije metode za umetanje u polje: Umetnuti(na određeni položaj) i Dodati(do kraja liste). U polju su svi elementi poredani.

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

Vrijednost se ne umeće na određeno mjesto, već u navedeni skup. Strukturi se ne može pristupiti putem indeksa, kao drugim generičkim zbirkama.

Strukturnim elementima pristupa se samo putem ključa. Međutim, For Every petlja također radi za strukturu, ali ne biste se trebali oslanjati na redoslijed elemenata strukture.

Struktura se stvara na isti način kao i druge generičke zbirke korištenjem New konstruktora, navodeći tip podataka Structure.

Kao niz, konstruktor strukture može imati parametre. Oni. moguće je opisati sam sadržaj Strukture pomoću konstruktora.

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

Na primjer: OurStructure = Nova struktura (“Šifra, ime”, 133, “Vasja”);

Odvojeni zarezima, prvo se navode nazivi ključeva, a zatim, sukladno tome, u istom nizu, vrijednosti parametara.

Postoji metoda za dodavanje nove vrijednosti strukturi Umetnuti, koji umeće novi par (ključ i vrijednost).

Na primjer: NašaStruktura.Insert(“Članovi obitelji”,3);

Strukturu karakterizira još jedna metoda koja se dosta često koristi. Ovo je metoda Vlasništvo.

Pomoću ove metode možete razumjeti postoji li element u ovoj strukturi čiji ključ ima to i to ime.

Ako takav element postoji, sustav će vratiti vrijednost True, inače – False.

Na primjer, izraz OurStructure.Property ("Članovi obitelji") bit će jednaka vrijednosti True. Ova metoda se često koristi pri analizi strukture.

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

Na primjer: Izvješće(NašaStruktura[“Članovi obitelji”]);

Međutim, ne treba zaboraviti da je Struktura neuređeni skup objekata, zbog čega je pristup indeksom 0, 1, 2 neprihvatljiv.

Generička zbirka Popis vrijednosti

ListValues je linearna lista elemenata bilo koje vrste podataka.

Svaki element se sastoji od nekoliko vrijednosti. Shematski, popis vrijednosti može se prikazati kao popis s četiri stupca.

Prvi stupac - Ocjena. Ima Booleov tip podataka i omogućuje korisniku da označi ili poništi okvire.

Drugi stupac je slika koja na neki način može vizualno prikazati ovaj element, tj. spoji ovaj niz sa slikom.

Treći stupac je sama pohranjena vrijednost, tj. ovo je bilo koja vrsta podataka i može biti različita u različitim recima.

Četvrti stupac je prezentacija, tj. ovo je neka vrsta opisa niza dana vrijednost. Pogled će biti prikazan korisniku kada pogleda ovaj element. U ovom slučaju, ako prikaz nije specificiran, sustav će pokušati dobiti prikaze za element koji se nalazi na ovom položaju.

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

Korisnik može izvršiti neke radnje s njim. Osim, ListValues može se zaključiti neovisno korištenjem metoda, tj. prikazati na ekranu u nekoj grani algoritma (s izuzetkom koda poslužitelja) tako da korisnik odabere neki redak ili označi neke kućice.

Naći ćemo ListValues u pomoćniku sitakse. Konstruktor ListValues nije parametrizirano (ne možete postaviti zadane vrijednosti).

Postoje metode kao što su:

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

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

Niz elemenata = popis vrsta cijena.OutloadValues();

Postoji i obrnuta metoda:
ListPriceTypes.LoadValues(ArrayItems);

Postoje metode pretraživanja:
TražiPoVrijednosti(); FindByIdentifier().

Postoji metoda kopiranja:
ListCopy = PriceTypeList.Copy();
Ova metoda namijenjen je izradi neke vrste izmjene kopije.

Postoje metode:
Poredaj po vrijednosti();
PoredajPoPogledu().

Metode Odaberite stavku(,) I Označi Stavke() pozvati modalni dijaloški okvir koji zaustavlja izvođenje algoritma dok korisnik ne zatvori prozor.

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

Primjer koda pozvanog iz modula upravljane aplikacije:

Prikaži ovaj kod u korisničkom načinu rada (modalni dijaloški okvir).

Ispod ListValues korišten kao dostupna vrsta podatke za detalje obrasca. Kreiramo novi atribut obrasca obrade i definiramo njegov tip ListValues i prikazati ga na obrascu.

Stvaranje novog tima Ispunite darove, prenesite ga u obrazac i definirajte rukovatelj akcijom za njega.

U korisničkom načinu rada, kada kliknete gumb Ispuni darove u obrascu za obradu, pojavit će se dovršeni popis.

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

Raznovrsna usklađenost prikupljanja

Ova zbirka je vrlo 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 navesti kao ključ, kao i kao vrijednost. S obzirom na ovu značajku, potrebno je pristupiti vrijednosti podudaranja prema indeksu; vrijednost ključa naznačena je kao vrijednost indeksa.

Ključ može biti vrsta podataka različita od niza. Svojstva i metode rada s Complianceom gotovo su iste kao i kod Structure.

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

Primjer upotrebe:

Dopisivanje je prikladno za korištenje kada trebate povezati bilo koje dvije strukture. Na primjer, svaki red u tabličnom dijelu mora se podudarati s retkom iz tablice vrijednosti.
U ovom slučaju, redak odjeljka tablice koristi se kao ključ za podudaranje i prikazuje se odgovarajuća vrijednost.

Prilikom umetanja elemenata u kolekciju Podudaranje uz metodu Umetnuti(,) Drugi način za umetanje vrijednosti je korištenje redovnog operatora dodjele.

Na primjer: Naša utakmica = Nova utakmica;
Podudaranje = 999;

Oni. ako element nije bio prisutan u kolekciji, tada će biti dodan pomoću operatora dodjele, a ako je bio prisutan, ažurirat će se.

Ovo je u suprotnosti sa strukturom.

Tablica vrijednosti univerzalne zbirke

Tablica vrijednosti je tablica s proizvoljnim brojem redaka i proizvoljnim brojem stupaca. Raskrižje može pohraniti vrijednosti bilo koje vrste podataka. Po potrebi se stupci mogu tipkati, odnosno možete odrediti u kojem se stupcu koji tip podataka sprema.

Možete ostaviti stupce bez tipova, tada se vrijednosti različitih tipova mogu pohraniti u jedan stupac u različitim recima.

Razlike Tablice vrijednosti iz dvodimenzionalnog niza:

  • ovo je objekt s kojim korisnik može raditi (tablica vrijednosti se može prikazati na ekranu, korisnik je može popuniti, a zatim pročitati unesene podatke);
  • izrada indeksa za brzo pretraživanje;
  • kloniranje, ispunjavanje cijelog stupca određenom vrijednošću, učitavanje svih stupaca u polje.

Tablica vrijednosti koristi se kao vrsta međuspremnika za pohranu informacija. Tablica vrijednosti se vraća i prihvaća kao parametar od strane mnogih metoda sustava. Moguće je izraditi upit prema tablici vrijednosti.

Tako, Tablica vrijednosti sastoji se od skupa redaka i skupa stupaca. I redovi i stupci su zbirke.

Oni. unutar zbirke Tablica vrijednosti postoje još dvije zbirke. Obratimo se pomoćniku za sintaksu i pronađimo Tablica vrijednosti.

Podržani tipovi podataka: sam Tablica vrijednosti, koji se sastoji od nizova. Svaki red je predstavljen tipom podataka RedakTablicaVrijednosti, koji ima svoja svojstva i svoje metode. Dostupno Zbirka vrijednosti stupaca tablice također ima određena svojstva.

Važna točka! Postupak koji stvara Tablica vrijednosti, mora kompilirati &OnServer.

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

Dodati(,)
(neobavezno)
Tip: Žica.
(neobavezno)
Tip: DescriptionTypes
(neobavezno)
Tip: Žica.
(neobavezno)
Tip: Broj.

Na primjer:

Za pozivanje ove procedure upotrijebit ćemo naredbu.

U opisu Tablice vrijednosti elementi zbirke su upravo RedoviTablicaVrijednosti.

Za razliku od stupaca koji se sastoje samo od svojstava (Naziv, Tip, Naslov, Širina), u RedakTablicaVrijednosti Postoje i svojstva (pristup po nazivu stupca) i metode (možete dobiti i postaviti vrijednost, raditi s vlasnicima).

Dodati nova linija u tablicu trebate koristiti metodu bilo Dodati(), ili Umetnuti(). U drugom slučaju, trebali biste naznačiti na kojem mjestu treba postaviti željenu liniju.

Da bismo stupcu dodijelili vrijednost, koristimo točku za pristup nazivu stupca ili indeksu (uglatim zagradama).

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

Čisto()– za uklanjanje svih redaka iz Tablice vrijednosti.

FillValues(,)– omogućuje popunjavanje svih stupaca ili odabranih stupaca jednom vrijednošću.
Učitaj stupac(,)– učitava stupac iz niza.
UnloadColumn()– istovaruje stupac u polje.

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

Kopirati(,)– omogućuje stvaranje nove na temelju postojeće tablice Tablica vrijednosti, i to ne sve retke i sve stupce, već samo neke od njih. Povratna vrijednost – Tablica vrijednosti.

Možete kopirati strukturu Tablice vrijednosti. Za to postoji odgovarajuća metoda Kopiraj stupce(). Uzet ćemo praznu Tablica vrijednosti sa potrebnom strukturom.

U Tablica vrijednosti postoji metoda Ukupno(). Možete odrediti stupac u kojem želite zbrojiti numeričke vrijednosti. U odnosu na prethodno prikazani kod u tablici, možete izračunati vrijednost: TZ.Total ("Iznos").

U Tablica vrijednosti metodom je moguće grupirati (sažimati) numeričke vrijednosti po identičnim vrijednostima određenih stupaca Kolaps(,).

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

Tablica vrijednosti može se prikazati na korisničkom zaslonu tako da s njim možete izvoditi bilo kakve radnje. Ali za razliku od ListValues iz programski kod Ne možete jednostavno prikazati tablicu na ekranu.

Prikazati Tablica vrijednosti na zaslonu izradite atribut obrasca i dodijelite mu vrstu podataka Tablica vrijednosti.

Nakon toga na obrascu treba prikazati dobivenu tablicu.

U modul forme na kraju prethodno sastavljenog algoritma (u Proceduri za izradu tablice vrijednosti) treba dodati:
ValueInFormData(TK, Tablica);

Univerzalna kolekcija Drvo vrijednosti

univerzalna zbirka koja je vrlo slična Tablica vrijednosti. Razlika od tablice je u tome što redovi stabla mogu biti podređeni jedni drugima, tj. može se formirati neka vrsta hijerarhije.

To se također može odraziti na ekranu. Stablo vrijednosti eksplicitno se sastoji od zbirke redaka i zbirke stupaca. U stablu postoje dva svojstva: Redovi i Stupci.

Budući da redovi mogu biti podređeni jedan drugome, svaki red može imati roditelja, kao i njegovi podređeni redovi.

Kreirajmo odgovarajuću naredbu Tree i postupak njezine obrade.

Kreirajmo u kojem postoji jedan nadređeni red i dva podređena reda.

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

Za ovaj atribut stvorit ćemo stupce Godina i Mjesec.

Pomaknite odgovarajući element DerZn na obrascu.

Na kraju Procedure TreeOnServer() dodajmo:

ValueInFormData(TreeZn, DerZn);

Provjerimo što se dogodilo u korisničkom načinu rada.

Pomoću gumba Dodati možete dodati nove retke. Oni također mogu formirati hijerarhiju.

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

Ovime završavamo naše prvo upoznavanje s univerzalnim kolekcijama.

U sljedećem članku ćemo pogledati koji važan mehanizam programer može koristiti za pojednostavljenje pristupa elementu direktorija iz programskog koda.