Poiščite element na seznamu vrednosti 1s. Struktura univerzalne zbirke

O čem govori ta članek

Ta članek nadaljuje serijo člankov "Prvi koraki v razvoju na 1C". Obravnava principe dela z generičnimi zbirkami. Po branju članka boste vedeli:

  • Kaj so generične zbirke, kdaj in v katerih primerih se uporabljajo?
  • Kaj imajo skupnega vse univerzalne kolekcije? Katere tehnike je mogoče uporabiti za delo z vsemi?
  • Kaj je niz, kako in kdaj ga uporabiti? Kakšne metode ima?
  • Zakaj uporabljati strukturo? Kako se razlikuje od niza?
  • Kdaj uporabiti seznam vrednosti? Kako to prikazati na obrazcu?
  • Skladnost – kaj je to in kdaj jo uporabiti? Kakšne so prednosti glede strukture?
  • Za kaj se uporablja tabela vrednosti? Kako opisati njegovo strukturo? Kako dodati/odstraniti vrstice? Kako ga spraviti v obrazec?
  • Drevo vrednosti – za kaj se uporablja? Kako izpolniti in prikazati na obrazcu? Kako delati z njim?

Uporabnost

Članek obravnava platformo 1C:Enterprise 8.3 trenutne izdaje.

Kako delati z univerzalnimi zbirkami v 1C

Zbirka vrednosti je neke vrste vsebnik, ki običajno lahko vsebuje poljubno število elementov. Hkrati pogosto ni strogih omejitev glede vrste podatkov.

Splošni zbirki lahko dodate vrednosti. Vse vrednosti v zbirki je mogoče prečkati. Te zbirke se v glavnem uporabljajo za nekakšno obdelavo v algoritmih. Tisti. to so neke dinamične strukture, ki obstajajo v času trajanja algoritma.

Pomembno je razumeti, da zbirke niso shranjene v podatkovni bazi (ne govorimo o podatkovnem tipu Value Store, ki lahko hrani skoraj vse podatkovne tipe).

obstajati različne vrste generične zbirke: niz, struktura, preslikava, fiksni niz, tabela vrednosti, tabelarnega dela itd. Toda vse zbirke imajo podobno vedenje.

Zbirka se lahko ustvari kot rezultat neke funkcije (funkcija vrne generično zbirko kot vrednost).

Novo zbirko lahko dobite ročno tako, da pokličete konstruktorja in ustvarite primerek razreda.

Na primer: OurArray = Nova matrika;

Konstruktorji za številne generične zbirke so parametrirani.

Torej, v konstruktorju za lahko določite število elementov v ustreznih dimenzijah. Tisti. lahko takoj razglasiš večdimenzionalno .

Ustrezen opis konstruktorja je v pomočniku za sintakso.

Tako lahko z uporabo parametrov konstruktorja takoj nastavite želeno vedenje ta predmet.

Toda parametri so neobvezni, razvijalec jih ne more nastaviti in nadalje definirati obnašanja Arrayja, kot se mu zdi primerno.

Skoraj vsako generično zbirko je mogoče ustvariti z uporabo konstruktorja (z izjemo tableparts, ki delujejo kot konfiguracijski objekti).

Za generične zbirke obstajajo splošni pojmi, kot sta indeks in številka. Vsak element zbirke ima indeks. Indeks se začne od nič.

Za dostop do elementa OurArray, lahko uporabite dostop do indeksa, za to je indeks naveden v oglatih oklepajih.

na primer OurArray. Upoštevajte, da v tem primeru sistem vrne element matrike z indeksom 3 in po vrstnem redu je to četrti element matrike.

Za nekatere zbirke obstaja tudi koncept številke vrstice. Številka vrstice se začne z ena. Na primer, za tabelarični odsek obstaja takšna lastnost kot številka vrstice. Pomembno je upoštevati, da če poznamo številko vrstice in želimo dostopati z indeksom, potem je treba kot indeks uporabiti vrednost, ki je ena manjša od številke vrstice.

Koncept številke vrstice ne obstaja za vse zbirke, ampak predvsem za tiste, ki jih je mogoče prikazati v uporabniškem vmesniku.

Za vse zbirke se uporablja prečkanje elementov zbirke. Obvoz je možen na dva načina: cikel Za in cikel Za vsako.

Za večino generičnih zbirk veljajo naslednje metode: štetje, indeksiranje, dodajanje, vstavljanje, brisanje in iskanje.

Count je funkcija, ki vrne število elementov v zbirki. Uporablja se lahko pred zanko Za, kot je prikazano na sliki.

Indeksna metoda ne obstaja za vse zbirke, ampak samo za tiste, na katere elemente se je mogoče sklicevati. Primer je Tabela vrednosti.

Tabela vrednosti je posebna zbirka nizov, lahko nizi vsebujejo različne stolpce z različnimi vrstami vrednosti.

Vsaka vrstica je samostojna entiteta. Lahko dobite povezavo do njega, prek te vrstice lahko dostopate do vrednosti stolpcev v tej vrstici.

Metoda Index vam omogoča, da določite, kateri indeks ustreza dani vrstici (to je trenutni položaj vrstice v tabeli). Vrednosti indeksa se začnejo pri nič.

Metode za dodajanje novih vrednosti tej zbirki obstajajo v skoraj vseh generičnih zbirkah. Slika prikazuje, kako zapolniti matriko z vrednostmi od 0 do 10 na dva načina.

Za dodajanje elementa v matriko lahko uporabimo metodo Dodaj, v oklepaju navedite dodano vrednost. V tem primeru bo vrednost dodana na konec seznama, tj. Niz se bo nenehno povečeval zaradi zadnjega položaja.

Druga metoda, ki vam omogoča dodajanje vrednosti v zbirko, je metoda Vstavi. Razlikuje se od metode Dodaj tako da lahko določite, kam vstaviti dodani element.

Sintaksa: Vstavi (,)

Prvi parameter določa indeks, v katerega bo vstavljena nova vrednost. Tisti. lahko na primer določimo, da mora biti vsaka vrednost vstavljena na začetek seznama (drugi način na zgornji sliki).

Metoda se uporablja za odstranjevanje elementov iz zbirke. Izbriši. Pri metodi Delete je z indeksom označeno, kateri element bomo izbrisali.

Sintaksa: Izbriši()
Primer uporabe: NašArray.Delete(5);

Upoštevati je treba, da pri tistih zbirkah, kjer nizi predstavljajo neodvisno entiteto (na primer for TableValues), lahko uporabimo tudi metodo get index, da dano vrstico pozneje odstranimo.

Skoraj vse zbirke imajo metodo za iskanje vrednosti - Najti. Metodi se posreduje vrednost, ki jo želimo najti. V nekaterih zbirkah lahko postavite kakršne koli omejitve.

Na primer, v Tabela vrednosti lahko določite tiste vrstice, tiste stolpce, v katerih želite iskati.

Če je vrednost najdena, potem ta metoda vrne indeks ali določen niz. Če ni najdena vrednost, se vrne vrednost vrste. Nedoločeno. Ko se uporabi za matriko, vrne Kazalo ali vrednost Nedoločeno.

Primer uporabe: NašaSpremenljivka = NašaMatrika.Najdi(8);

Generične zbirke je mogoče zelo hitro očistiti, tj. odstranite popolnoma vse elemente. Za to se uporablja metoda počisti(), ki odstrani elemente matrike, nizov TableValues, ali podatke iz drugih zbirk.

Dodatne metode za polje

Metoda Bmeja() vrne število elementov minus ena. Tisti. če uporabimo zanko Za, potem lahko namesto Količinske metode takoj uporabimo metodo obroba().

Zlasti spremenljivko NumberInArray bi lahko definirali drugače:

NumberInArray = OurArray.InBorder();
Potem pri opisu samega cikla od te spremenljivke ne bi smeli odšteti.

Metoda Set vam omogoča, da elementu Array dodelite vrednost po indeksu.

Sintaksa: Namesti(,)

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

Alternativna možnost: Naša matrika = 8;

Metodo lahko uporabite za matriko Dobiti, da preberete vrednost v indeksu brez uporabe oglatih oklepajev.

Sintaksa: Get()

primer: NašaSpremenljivka = NašaMatrika.Get(2);

Alternativna možnost: Naša spremenljivka = naša matrika;

Struktura univerzalne zbirke

Struktura, tako kot matrika, ima lahko neomejeno število elementov, vendar se vsebina elementa razlikuje od matrike.

Struktura je zbirka, katere vsaka vrednost je sestavljena iz para. Prvi element para se imenuje Ključ. Drugi element para je Pomen.

Ključ je striktno nizovni podatkovni tip, ki opisuje vrednost. na primer ključ"Koda" lahko ustreza vrednosti 113; ključ"Ime" pomeni "Vasya". Za samo vrednost ni nobene omejitve vrste podatkov.

Struktura je zelo priročna za uporabo, če želimo ustvariti seznam parametrov. Če to Struktura klical Naša Struktura, potem se bomo sklicevali na njegovi dve vrednosti, kot sledi: OurStructure.Code in OurStructure.Name.

Takšna pritožba je veliko bolj priročna, kot če bi definirali vse parametre v matriki in do njih dostopali z indeksom.

Struktura naredi programsko kodo berljivo (razumljivo). Struktura se uporablja precej pogosto, veliko pogosteje kot Array.

Uporablja se za opis nekaterih parametrov, ki so v vseh algoritmih pogosto precej veliki.

Poleg tega se struktura uporabi, če procedura in funkcija vsebujeta veliko število posredovanih parametrov.

Potem je veliko bolj priročno zapisati vse parametre v strukturo in jo posredovati naprej. Tisti. obstaja "pakiranje" parametrov postopkov in funkcij.

Ločeno je treba opozoriti, da kot ključ v strukturi se ne sme pojaviti noben niz. Veljajo določene omejitve.

Ključ mora delovati kot identifikator. To pomeni, da v ključ ne sme biti presledkov in se ne sme začeti s številko.

Dovoljen začetek ključ s črko ali podčrtajem. torej Ključ mora izpolnjevati zahteve za ustvarjanje identifikatorjev.

Oglejmo si, kako se struktura razlikuje od matrike. Struktura ima metodo Vstavi, Array ima dva načina za vstavljanje: Vstavi(na določen položaj) in Dodaj(na koncu seznama). V matriki so vsi elementi urejeni.

Struktura je nekakšen neurejen niz. Zato obstaja le metoda vstavljanja za Struct.

Vrednost ni vstavljena na določeno mesto, temveč v podani niz. Na strukturo se ne more sklicevati z indeksom, kot na druge generične zbirke.

Elementi strukture so označeni samo z imenom ključa. Vendar pa zanka For each of deluje tudi za strukturo, vendar se ne smete zanašati na vrstni red elementov strukture.

Struktura je ustvarjena na enak način kot druge generične zbirke z uporabo konstruktorja New, ki določa podatkovni tip Structure.

Tako kot Array ima lahko tudi konstruktor Struct parametre. Tisti. možno je opisati vsebino same Strukture s pomočjo konstruktorja.

Za razliko od matrike, kjer lahko preprosto določite število elementov za vse dimenzije, je v strukturi mogoče nastaviti samo vsebino.

Na primer: NašaStruktura = Nova Struktura("Koda,Ime", 133, "Vasja");

Najprej so navedena imena ključev, ločena z vejicami, nato pa v istem zaporedju vrednosti parametrov.

Za dodajanje nove vrednosti v strukturo obstaja metoda Vstavi, ki vstavi nov par (ključ in vrednost).

Na primer: OurStructure.Insert("Družinski člani",3);

Za strukturo je značilna še ena metoda, ki se uporablja precej pogosto. To je metoda Lastnina.

S to metodo lahko razumete, ali obstaja tak element v tej strukturi, za katerega ima ključ takšno in takšno ime.

Če tak element obstaja, bo sistem vrnil True, sicer pa False.

Na primer, izraz OurStructure.Property (»Družinski člani«) bo enako True. Ta metoda se pogosto uporablja pri analizi strukture.

Kot pri kateri koli univerzalni zbirki je dovoljeno dostopati do lastnosti Strukture po indeksu. Toda indeks za strukturo je vrednost niza.

Na primer: Poročilo(NašaStruktura["Družinski člani"]);

Ne smemo pa pozabiti, da Struktura ni urejen niz objektov, zato je dostop z indeksom 0, 1, 2 nesprejemljiv.

Generični zbirni seznam vrednosti

Seznam vrednosti je linearni seznam elementov katerega koli podatkovnega tipa.

Vsak element je sestavljen iz več vrednosti. Shematično lahko seznam vrednosti predstavimo kot seznam s štirimi stolpci.

Prvi stolpec - označiti. Ima logični podatkovni tip in uporabniku omogoča, da potrdi ali počisti polja.

Drugi stolpec je slika, ki lahko nekako vizualno prikaže ta element, tj. povežite to vrstico s katero koli sliko.

Tretji stolpec je sama shranjena vrednost, tj. to je katera koli podatkovna vrsta in se lahko razlikuje v različnih vrsticah.

Četrti stolpec je pogled, tj. je nek opis niza dane vrednosti. Pogled bo prikazan uporabniku, ko si bo ogledal ta element. V tem primeru, če pogled ni nastavljen, bo sistem poskušal pridobiti poglede za element na tem položaju.

Seznam vrednosti- to je predmet, s katerim lahko uporabnik vizualno dela. Tisti. Seznam vrednosti lahko prikažete na obrazcu.

Uporabnik lahko z njim izvede nekaj dejanj. Poleg tega Seznam vrednosti mogoče sklepati neodvisno z uporabo metod, tj. prikažejo na zaslonu v neki veji algoritma (z izjemo strežniške kode), tako da uporabnik izbere neko vrstico ali postavi nekaj kljukic.

Najdimo Seznam vrednosti v sitax pomočniku. Konstruktor Seznam vrednosti ni parametriziran (privzetih vrednosti ni mogoče nastaviti).

Obstajajo metode, kot so:

  • Vstavi(,) ;
  • Dodaj(,);
  • Količina();
  • Indeks().

Obstajajo tudi posebne metode, npr. UnloadValues(). To ustvari matriko, v katero se kopira seznam vrednosti. Na primer:

ArrayElements = ListPriceTypes.UnloadValues();

Obstaja tudi obratna metoda:
PriceTypeList.LoadValues(ElementsArray);

Obstajajo metode iskanja:
NajdiPoVrednosti(); FindByIdentifier().

Obstaja metoda kopiranja:
CopyList = ListPriceTypes.Copy();
Ta metoda je namenjeno nekakšni spremembi s kopijo.

Obstajajo metode:
RazvrstiPoVrednosti();
RazvrstiPoPogledu().

Metode IzberiElement(,) in MarkItems() pokličite modalno pogovorno okno, ki ustavi izvajanje algoritma, dokler uporabnik ne zapre tega okna.

Za uporabo teh metod v lastnostih konfiguracije Način uporabe modalnosti mora biti nastavljeno na Uporaba.

Vzorčna koda, poklicana iz modula upravljane aplikacije:

Prikaži to kodo v uporabniškem načinu (modalno pogovorno okno).

Spodaj Seznam vrednosti uporabljen kot razpoložljivi podatkovni tip za atribut obrazca. Ustvarimo nov atribut za obrazec za obdelavo, določimo vrsto zanj Seznam vrednosti in ga prikažite na obrazcu.

Ustvarimo novo ekipo StoreGifts, ga prenesite v obrazec in zanj definirajte upravljalnik dejanj.

Ko v uporabniškem načinu v obrazcu za obdelavo kliknete gumb Izpolni darila, se prikaže izpolnjen seznam.

Če želite, lahko seznam urejate: dodate nekaj elementov, nekatere odstranite.

Univerzalna skladnost zbiranja

Ta zbirka je zelo podobna struktura. Tako kot struktura je tudi ujemanje niz vrednosti, ki je sestavljen iz ključa in same vrednosti.

Glavna razlika je v tem, da je mogoče kateri koli podatkovni tip določiti kot ključ in vrednost. Glede na to funkcijo je treba dostopati do vrednosti ujemanja po indeksu, vrednost ključa je podana kot vrednost indeksa.

Ključ je lahko vrsta podatkov, ki ni niz. Lastnosti in metode dela z ujemanjem so skoraj enake kot pri strukturi.

Konstruktor ujemanja za razliko od strukture ne vsebuje možnosti določanja parametrov.

Primer uporabe:

Korespondenca je uporabna, kadar je treba povezati katerikoli dve strukturi. Na primer, vsaka vrstica tabelarnega dela se mora ujemati z vrstico iz tabele vrednosti.
V tem primeru se kot ključ za ujemanje uporabi vrstica tabelarnega dela in prikaže se ustrezna vrednost.

Pri vstavljanju elementov v zbirko Match, ki ni metoda Vstavi(,) Obstaja še en način za vstavljanje vrednosti in to je uporaba običajnega operatorja dodelitve.

Na primer: OurMatch = Nova tekma;
Ujemanje = 999;

Tisti. če element ni bil prisoten v zbirki, bo dodan z uporabo operatorja dodelitve in če je prisoten, bo posodobljen.

To se razlikuje od Strukture.

Generična zbirka vrednosti

Tabela vrednosti je tabela s poljubnim številom vrstic in poljubnim številom stolpcev. Presek lahko shrani vrednosti katere koli vrste podatkov. Po potrebi lahko stolpce tipiziramo, tj. določimo, v katerem stolpcu je kateri tip podatkov shranjen.

Stolpce lahko pustite netipkane, nato pa lahko vrednosti shranite v enem stolpcu v različnih vrsticah različni tipi.

razlike TableValues iz 2D polja:

  • to je predmet, s katerim lahko uporabnik dela (tabela vrednosti se lahko prikaže na zaslonu, uporabnik jo lahko izpolni, v prihodnosti se lahko preberejo vneseni podatki);
  • izdelava indeksov za hitro iskanje;
  • kloniranje, polnjenje celotnega stolpca z določeno vrednostjo, razkladanje vseh stolpcev v matriko.

Tabela vrednosti uporablja kot neke vrste medpomnilnik za shranjevanje informacij. Tabela vrednosti se vrne in sprejme kot parameter s številnimi sistemskimi metodami. Možno je zgraditi poizvedbo do tabele vrednosti.

Torej, Tabela vrednosti je sestavljen iz niza vrstic in niza stolpcev. Tako vrstice kot stolpci so zbirke.

Tisti. znotraj zbirke Tabela vrednosti obstajata še dve zbirki. Obrnimo se k pomočniku za sintakso in poiščimo Tabela vrednosti.

Podprti tipi podatkov: sam Tabela vrednosti, ki je sestavljen iz nizov. Vsaka vrstica je predstavljena s tipom podatkov RowTableValues, ki ima svoje lastnosti in metode. Na voljo CollectionColumns TableValues ima tudi določene lastnosti.

Pomembna točka! Postopek, ki ustvarja Tabela vrednosti, mora prevesti & OnServer.

Preden začnete delati z Tabela vrednosti, morate določiti, katere stolpce bo vseboval (tj. ustvariti jih). Sintaksa:

Dodaj(,)
(neobvezno)
Tip: Vrvica.
(neobvezno)
Vrsta: Vrste opisov
(neobvezno)
Tip: Vrvica.
(neobvezno)
Vrsta: številka.

Na primer:

Za klic tega postopka bomo uporabili ukaz.

V opisu TableValues kot elementi zbirke so natanko RowsTableValues.

Za razliko od stolpcev, ki so sestavljeni samo iz lastnosti (ime, vrsta, naslov, širina), v RowTableValues obstajajo tako lastnosti (sklic po imenu stolpca) kot metode (lahko dobite in nastavite vrednost, delate z lastniki).

Če želite v tabelo dodati novo vrstico, morate uporabiti bodisi metodo Dodaj(), oz Vstavi(). V drugem primeru morate določiti, na kateri položaj naj bo postavljen zahtevani niz.

Če želite stolpcu dodeliti vrednost, se nanj sklicujemo z imenom stolpca ali indeksom (z oglatimi oklepaji), ločenim s piko.

Za polnjenje TableValues lahko uporabite naslednje metode:

počisti()- za odstranitev vseh vrstic iz TableValues.

FillValues(,)– omogoča zapolnitev vseh stolpcev ali izbranih stolpcev z eno vrednostjo.
Naloži stolpec(,)– naloži stolpec iz matrike.
UnloadColumn()– razloži stolpec v matriko.

Zadnji dve metodi sta uporabni, ko morate premakniti stolpec iz ene tabele vrednosti v drugo.

Kopirati(,)- omogoča ustvarjanje nove tabele na podlagi obstoječe tabele Tabela vrednosti, pri čemer ne podaja vseh vrstic in vseh stolpcev, ampak le nekatere izmed njih. Povratna vrednost - Tabela vrednosti.

Strukturo lahko kopirate TableValues. Za to obstaja ustrezna metoda. Kopiraj stolpce(). Prejeli bomo prazno Tabela vrednosti z želeno strukturo.

IN Tabela vrednosti obstaja metoda skupaj(). Določite lahko stolpec, v katerem želite sešteti številske vrednosti. Glede na predhodno prikazano kodo v preglednici lahko izračunate vrednost: TK.Total(“Vsota”).

IN Tabela vrednosti z metodo je mogoče združiti (strniti) številske vrednosti po enakih vrednostih določenih stolpcev Strni(,).

Glede na predhodno prikazano kodo v preglednici lahko izračunate vrednost: TK.Collapse(“Dan v tednu”, “Znesek”).

Tabela vrednosti je mogoče prikazati na zaslon po meri da lahko nekaj narediš s tem. Ampak za razliko od Seznam vrednosti iz programske kode ne morete kar priklicati tabele na zaslonu.

Prikazati Tabela vrednosti na zaslonu ustvarite atribut obrazca in mu dodelite podatkovni tip Tabela vrednosti.

Po tem naj bo nastala tabela prikazana na obrazcu.

V modul obrazec na koncu predhodno sestavljenega algoritma (v Postopku izdelave tabele vrednosti) dodajte:
ValueVFormData(TK, Tabela);

Generično zbirno drevo vrednosti

vsestranska kolekcija, ki je zelo podobna Tabela vrednosti. Razlika od tabele je v tem, da so lahko vrstice drevesa druga drugi podrejene, tj. se lahko oblikuje nekakšna hierarhija.

Lahko se prikaže tudi na zaslonu. Drevo vrednosti izrecno sestoji iz zbirke vrstic in zbirke stolpcev. Drevo ima dve lastnosti, vrstice in stolpce.

Ker so vrstice lahko podrejene ena drugi, je za vsako vrstico mogoče določiti nadrejenega elementa, pa tudi vrstice, ki so mu podrejene.

Ustvarimo ustrezen ukaz Tree in postopek njegove obdelave.

Ustvarjajmo v kateri je ena nadrejena vrstica in dve podrejeni vrstici.

Ustvari atribut obrazca DerZn(podatkovni tip - Value Tree).

Za ta atribut bomo ustvarili stolpca Leto in Mesec.

Premakni ustrezen element DerZn do obrazca.

Na koncu Postopki TreeOnServer() dodaj:

ValueVFormData(TreeZn, DerZn);

Preverimo, kaj se je zgodilo v uporabniškem načinu.

Z gumbom Dodaj lahko dodate nove vrstice. Lahko tvorijo tudi hierarhijo.

Za ponavljanje vseh elementov drevesa vrednosti moramo uporabiti rekurzijo, tj. priklic postopka iz sebe. Na primer, obdelava drevesa vrednosti bi lahko izgledala takole:

S tem zaključujemo naš prvi uvod v univerzalne zbirke.

V naslednjem članku si bomo ogledali, s katerim pomembnim mehanizmom lahko razvijalec poenostavi dostop do elementa slovarja iz programske kode.

Celotna sintaksa (kliknite za razširitev)

Seznam vrednosti

Opis:

Seznam vrednosti je predmet, ki ni shranjen v bazi podatkov, kar vam omogoča, da zgradite dinamične nize vrednosti za reševanje težav z vmesnikom in jih manipulirate (dodajanje, urejanje, brisanje elementov, razvrščanje). Lahko se napolni z vrednostmi katere koli vrste, tj. na enem seznamu so lahko vrste shranjenih vrednosti različne. En primer uporabe tega predmeta je organiziranje izbire določenega dokumenta s seznama možnih dokumentov, ki ga generira zapleten algoritem.

Elementi zbirke: ItemListValues

Z operatorjem je mogoče prečkati zbirko za objekt Za vsak ... Od ... Cikel. Prehod izbere elemente zbirke.

Do elementa zbirke je mogoče dostopati z uporabo operatorja [...]. Indeks elementa se posreduje kot argument ( številčenje od 0).

Lastnosti:

Metode:

Insert(Index, Value, View, Markup, Image) Vstavi nov element na seznam vrednosti na mestu podanega indeksa.SelectElement (Header, Element) Prikliče okno za interaktivno izbiro enega od elementov, vključenih v seznam vrednosti. Element- element, na katerega naj bo prvotno postavljen seznam vrednosti med interaktivno izbiro. Če vrednost parametra ni element seznama vrednosti, vključenih v ta seznam, se pozicioniranje ne bo zgodilo.UploadValues()Ustvari matriko in vanj kopira vrednosti elementov seznama vrednosti.Add(Value, View, Markup, Image) Doda nov element na konec seznama vrednosti.DownloadValues(Matrika vrednosti) Naloži seznam vrednosti z vrednostmi iz posredovane matrike. V tem primeru se izbrišejo vsi prejšnji elementi seznama.Izpolnite opombe(Oznaka) Nastavi oznako za vse elemente seznama vrednosti.Indeks (element) Pridobi indeks elementa na seznamu vrednosti. Če ni najden, se vrne -1.count() Dobi število elementov seznama vrednosti.FindByValue(LookupValue) Poišče vrednost elementa seznama vrednosti. Če noben element ne shrani vrednosti, ki je enaka želeni vrednosti, se vrednost vrne. Nedoločeno. FindByID(ID) Pridobi element seznama vrednosti po ID-ju. Če element ni najden, se vrne Nedoločeno. Označi predmete(Naslov) Označi ali počisti (interaktivno) elemente na seznamu vrednosti. vrača Pravče v pogovornem oknu pritisnete gumb "V redu", laž- drugače.Clear() Počisti seznam vrednosti tako, da z njega odstrani vse elemente.ShowItemSelection(ClosingAlertDescription, Title, Item) Prikliče okno za interaktivno izbiro enega od elementov na seznamu vrednosti.ShowMarkItems(DescriptionAlertOnClosing, Header) Zasnovan za interaktivno nastavitev stanj zastavic za elemente seznama vrednosti.Get(Index) Pridobi vrednost v indeksu. Deluje podobno kot operater.Premakni (element, odmik) Premakne element seznama vrednosti naprej ali nazaj za določeno število položajev.Copy() Ustvari kopijo seznama vrednosti.SortByValue(Smer) Razvrsti seznam vrednosti v naraščajočem ali padajočem vrstnem redu vrednosti, ki jih hranijo elementi. Glej primer spodaj.Razvrsti po pogledu(Smer) Razvrsti seznam vrednosti v naraščajočem ali padajočem abecednem vrstnem redu predstavitev vrednosti članov na seznamu. Glej primer spodaj.Odstrani (element) Odstrani element s seznama vrednosti, kjer Element- indeks elementa, ki ga želite odstraniti, ali sam element.

Konstruktorji:

Nov seznam vrednosti
&OnClient Procedure ExecuteCode(Command) /// Kako ustvariti seznam vrednosti v 1s 8.3, 8.2 Seznam = Nov seznam vrednosti; /// Kako dodati element na seznam vrednosti v 1s 8.3, 8.2 // dodaj parametre metode:// - pomen // - izvedba // - oznaka (neobvezno) // - slika (obvezno) Seznam. Dodaj (1980, // vrednost elementa "Leto Vasjinega rojstva"// izvedba ) ; Seznam. Dodaj(1985, "Julijin rojstni dan") ; // vrednosti so lahko različnih vrst Seznam. Dodaj("Polina" , "Ime otroka" ) ; /// Kako vstaviti element na seznam vrednosti v 1s 8.3, 8.2 // vstavi na položaj #2 (elementi so oštevilčeni od 0) // element z vrednostjo 2010 in predstavitvijo // "Leto rojstva njune skupne hčerke" Seznam. Prilepi (2, 2010, "Leto rojstva njune skupne hčerke") ; /// Kako zaobiti elemente seznama vrednosti v 1s 8.3, 8.2 Za vsak element iz seznama Loop Report( Element. View + ": " + String(Element. Value) ); Končni cikel ; /// Kako počistiti seznam vrednosti v 1s 8.3, 8.2 Seznam. Počisti(); Seznam. Dodaj("ponedeljek"); Seznam. Dodaj("torek"); Seznam. Dodaj("sreda"); /// Kako ugotoviti število elementov seznama vrednosti in tudi /// pridobi element seznama po njegovem indeksu v 1s 8.3, 8.2 // številčenje od nič Za indeks = 0 po seznamu. Količina() - 1 Loop Report(List[Index]) ; Končni cikel ; /// Kako najti element seznama po njegovi vrednosti v 1s 8.3, 8.2 ValueTuesday = Seznam. FindByValue("Torek" ); /// Kako ugotoviti indeks elementa na seznamu v 1s 8.3, 8.2 Report(List. Index(ValueTuesday) ) ; // 1, ker je oštevilčenje od nič /// Kako razvrstiti seznam po njegovih vrednostih v 1s 8.3, 8.2 // je bil: ponedeljek, torek, sreda Seznam. SortByValue(Smer razvrščanja. Padajoče) ; // postal: sreda, ponedeljek, torek /// Kako odstraniti element s seznama vrednosti v 1s 8.3, 8.2 // odstranite prvi element // parameter: element seznama // ali indeks elementa// lahko naredite ta seznam. Izbriši(Seznam[0]) ; // ali tako // List.Delete(0); /// Kako premakniti element seznama vrednosti v 1s 8.3, 8.2 // premakni ničelni element za en položaj naprej // je bil: ponedeljek torek Seznam. Premakni(0, 1); // postal: torek ponedeljek /// Kako narediti kopijo seznama v 1s 8 ListCopy = Seznam. Kopirati() ; Barve = nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); /// Kako razložiti vrednosti seznama v matriko v 1 s 8.3, 8.2 ArrayColors = Barve. UnloadValues() ; /// Kako naložiti vrednosti seznama iz matrike v 1s 8.3, 8.2 Barve. LoadValues(ArrayColors) ; EndProcedure /// Kako narediti brezmodno izbiro vrednosti s seznama /// vrednosti v 1s 8.3, 8.2&OnClient postopek Kako nareditiModalSelectValue(Command) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); // postopek AfterItemSelect je definiran tik spodaj AlertAfterItemSelection = Nov opis opozorila( "AfterElementSelection", Ta predmet ); Barve. ShowItemChoice( AlertAfterItemChoice, "Izberi svojo najljubšo barvo") ; EndProcedure &AtClient Procedure AfterElementSelection(Element, Parameters) Export If Element<>Nedefinirano Potem Poročilo (vrednost artikla) ​​; EndIf ; EndProcedure /// Kako narediti nemodalno oznako vrednosti s seznama /// vrednosti v 1s 8.3, 8.2&Postopek na odjemalcu Kako nareditiModalValueMark(ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); // postopek AfterMarkingItems je definiran tik spodaj AlertAfterMarkItems = Nov opis opozorila( "AfterMarkingItems", Ta predmet ); Barve. ShowItemMark( NotificationAfterItemMark, "Izberite svoje najljubše barve") ; Barve. FillRemarks(True) ; EndProcedure &OnClient Procedure AfterMarkingElements(Elements, Parameters) Export If Elements<>Nedefinirano Potem Za Vsako Barvo Iz Zanke Elementov Če Barva. Označi, nato prijavi (barva. vrednost) ; EndIf ; Končni cikel ; EndIf ; EndProcedure /// Kako narediti modalno izbiro vrednosti s seznama v 1s 8.3, 8.2&Pri odjemalskem postopku Kako nareditiModalSelectValue(ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); SelectColor = Barve. SelectItem( "Izberi svojo najljubšo barvo") ; Če izberete barvo<>Undefined Then Report(SelectColor. Value) ; EndIf ; EndProcedure /// Kako narediti modalno oznako vrednosti s seznama /// vrednosti v 1s 8.3, 8.2&Postopek na odjemalcu Kako nareditiModalValueMark(ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); Če barve. Označi predmete ( "Izberite svoje najljubše barve") Nato za vsako barvo iz barvnega cikla Če barva. Označi, nato prijavi (barva. vrednost) ; EndIf ; Končni cikel ; EndIf ; // in tako lahko nastavite vse oznake hkrati // seznam na določeno vrednost Barve. FillRemarks(True) ; EndProcedure /// Prenesite in zaženite te primere v računalniku

V tej enoti se bomo seznanili z novim podatkovnim tipom jezika 1C, ki se imenuje Seznam vrednosti.

Seznam vrednosti je niz, vendar z več funkcijami. In če je tako, potem je to tudi zbirka podatkov in vanjo lahko vnesete niz številk:

// ustvarili seznam vrednosti

Seznam.Dodaj(23);

Zaenkrat je vse zelo podobno nizu, kajne? Ampak pojdimo naprej. Za prikaz teh številk uporabniku zapišemo:

// Skozi vsak element seznama za vsak element s seznama Loop Report(Item.Value);

// prikaz vrednosti elementa EndCycle;

In tu je prva razlika. Elementi navadne matrike so sama števila. In dostop do trenutne vrednosti elementa seznam dobimo z možnostjo Pomen, z uporabo konstrukcije Element. Pomen.

Razmislite o nekaterih dodatnih funkcijah Vrednote.

Lahko razvršča

Na primer, lahko enostavno razvrstimo seznam vrednosti. Seznam lahko to naredi sam:

List.SortByValue(Smer razvrščanja.Asc); V primeru navadne matrike bi morali implementirati enega od algoritmov za razvrščanje (na primer "bubble").

Lahko išče

Seznam vrednosti lahko išče svoje elemente. Recimo, da želimo ugotoviti, ali je številka, ki jo je vnesel uporabnik, na našem seznamu:

VnesiteŠtevilko(Številko); // vnesel številko od uporabnika FoundItem = List. Najdi po vrednosti (število);

If FoundItem = Undefined Then OpenValue("Številka " + Številka + " ni najdena na seznamu!"); V nasprotnem primeru

OpenValue("Number " + Number + " je na seznamu. Tukaj je:" + FoundItem.Value);

EndIf; Seznam vrednosti

Podpira vstavljanje in brisanje

Seznam vrednosti, tako kot matrika, podpira vstavljanje in odstranjevanje elementov:

Seznam. Vstavi (0, 1000);

// vstavi tisoč na sam začetek seznama List.Delete(O); // in ga takoj odstranite s seznama List. Insert(List.Quantity(), 13);

// vstavi 13 na konec seznama Report(List[List.Count() - 1]);

// prikaz zadnjega elementa seznama (13)

Podpira oglate oklepaje

Kot ste že razumeli, se tudi številčenje elementov seznama začne od nič, kateri koli element pa se lahko sklicujemo na njegov indeks z oglatimi oklepaji:

Obvesti(List.Value); // izpeljali drugi element seznama. Tako lahko pregledamo vse elemente seznama takole:

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

EndCycle;

Možnost ustvarjanja kopije

Seznam vrednosti ima le odlično priložnost - ustvari lahko svojo kopijo:

ListCopy = List.Copy();

// naredili kopijo seznama // zdaj lahko varno spremenimo kopijo seznama // medtem ko prvotni seznam ne bo spremenil kopije seznama. Vrednost = 123456;

Lahko se pretvori v niz

In končno, vse elemente seznama lahko kadar koli enostavno razložite v matriko:

ArrayNumbers = seznam. UnloadValues();

// razloženo v matriko

Za A = 0 z ArrayNumbers.Quantity() - 1 zanka

Poročilo (Številka niza [A]); // ni treba navesti // vrednosti možnosti

EndCycle;

Za obdelavo in utrjevanje gradiva te enote je priporočljivo opraviti naslednjo nalogo.

Od uporabnika je potrebno vnesti 5 številk, poiskati največjo in najmanjšo izmed njih ter ju prikazati uporabniku. Rešitev mora uporabiti seznam vrednosti.

rešitev

Seznam = Nov seznam vrednosti;

// ustvarili seznam vrednosti za A = 1 do 5 Loop Number = 0;

VnesiteŠtevilko(Številko); // vnesite številko iz uporabniškega seznama.Add(Number); // in ga dodajte na seznam EndCycle; // in tako 5-krat

// razvrsti seznam številk

Seznam. Razvrsti po vrednosti (Smer razvrščanja. Asc);

// po razvrščanju je prvi element seznama // najmanjši element, zadnji element pa največji OpenValue("Najmanjši element" + Seznam +

", največji pa je " + List[List.Count() - 1]);




Vrh