1c väärtuste loendis

06.10.2021 Drenaaž

Selles üksuses tutvume uue 1C keele andmetüübiga, mida nimetatakse Väärtuste loend.

Väärtuste loend on massiiv, kuid suurepäraste võimalustega. Ja kui jah, siis on see ka andmekogu ja sinna saab paigutada numbrite komplekti:

// lõi väärtuste loendi

Nimekiri Lisa (23);

Siiani on kõik massiiviga väga sarnane, kas pole? Aga lähme edasi. Nende numbrite kuvamiseks kasutajale kirjutage:

// silmus läbi loendi iga elemendi Iga elemendi jaoks Loenditsükli aruanne (Element.Value);

// kuvab EndCycle elemendi väärtuse;

Ja seal on ka esimene erinevus. Tavalise massiivi elemendid on numbrid ise. Ja juurdepääs elemendi praegusele väärtusele Nimekiri saame valikuga hakkama Tähendus konstruktsiooni kasutades Element. Tähendus.

Vaatame mõningaid lisafunktsioone Väärtused.

Teab, kuidas sorteerida

Näiteks saame hõlpsasti sorteerida väärtuste loendi. Nimekiri saab seda ise teha:

Loend. Sorteeri väärtuse järgi (Sort Direction.Azr); Tavalise massiivi puhul peaksime rakendama ühte sortimisalgoritmi (näiteks mull).

Teab otsida

Väärtuste loend suudab oma elemente ise otsida. Oletame, et tahame teada saada, kas kasutaja sisestatud number on meie loendis:

Sisestage number (number); // sisestas kasutajalt leitud numbri FoundItem = List. FindByValue (arv);

If FoundElement = Määratlemata Siis OpenValue ("Number" + Number + "ei leitud loendist!"); Vastasel juhul

OpenValue ("Number" + Number + "on loendis. Siin see on:" + FoundElement.Value);

EndIf; Väärtuste loend

Toetab sisestamist ja kustutamist

Väärtuste loend, nagu massiiv, toetab elementide sisestamist ja kustutamist:

Nimekiri. Sisesta (0, 1000);

// sisestage loendi algusesse tuhande Kustuta (О); // ja eemaldage see kohe loendist. Lisa (Loendinumber (), 13);

// sisesta nimekirja lõppu 13 Aruanne (Loend [List.Quantity () - 1]);

// kuvab loendi viimase elemendi (13)

Toetab nurksulge

Nagu te juba aru saite, algab ka loendi elementide nummerdamine nullist ja me võime igale elemendile selle indeksi järgi viidata, kasutades nurksulge:

Report (List.Value); // tõi välja loendi teise elemendi Seega võime üle vaadata kõik loendi elemendid järgmiselt:

A = 0. Loendi järgi Amount () - 1 Cycle Report (Loend [A]. Väärtus);

Tsükli lõpp;

Teab, kuidas luua oma koopia

Väärtuste loendil on lihtsalt suurepärane omadus - see saab ise oma koopia luua:

CopyList = List.Copy ();

// tegi loendist koopia // nüüd saame CopyListi // turvaliselt muuta // samas kui algne loend CopyList ei muuda. Väärtus = 123456;

Teab, kuidas massiiviks muuta

Lõpuks saate hõlpsalt kõik loendi elemendid igal ajal massiivi maha laadida:

ArrayNumbers = Loend. UnloadValues ​​();

// ladestatakse massiivi

A = 0 massiivi numbrilise summa järgi () - 1 tsükkel

Aruanne (ArrayNumbers [A]); // pole vaja // valikut määrata Value

Tsükli lõpp;

Selle seadme materjali väljatöötamiseks ja konsolideerimiseks on soovitatav täita järgmine ülesanne.

Kasutajalt on vaja sisestada 5 numbrit, leida neist suurim ja väikseim ning kuvada need kasutajale. Lahendus peab kasutama väärtuste loendit.

Lahendus

Loend = Uus väärtuste loend;

// lõi väärtuste loendi A = 1 poolt 5 Silmusarv = 0;

Sisestage number (number); // sisestage number kasutajate loendist.Add (Number); // ja lisage see loendi lõpu lõppu; // ja nii 5 korda

// numbrite loendi sorteerimine

Nimekiri. Sorteeri väärtuse järgi (Sorteeri suund. Kasvavalt);

// pärast sorteerimist on loendi esimene element // väikseim element ja viimane on suurim OpenValue ("Väikseim element" + loend +

", ja suurim" + Loend [Loend.Number () - 1]);

Täielik süntaks (laiendamiseks klõpsake)

Väärtuste loend

Kirjeldus:

Väärtuste loend on objekt, mida andmebaasi ei salvestata, mis võimaldab liideseprobleemide lahendamiseks luua dünaamilisi väärtuste kogumeid ja nendega manipuleerida (elemente lisada, muuta, kustutada, sortida). Seda saab täita mis tahes tüüpi väärtustega, s.t. samasse loendisse salvestatud väärtuste tüübid võivad olla erinevad. Üks selle objekti kasutamise näiteid võib olla konkreetse dokumendi valimine võimalike dokumentide loendist, mis on loodud keerulise algoritmi abil.

Kollektsiooni esemed: ItemListValues

Objekti saab kogu kaudu läbida operaatori abil Kõigile ... Alates ... Tsükkel... Läbiviimine valib kollektsiooni elemendid.

[...] operaatori abil on võimalik viidata kogumiselemendile. Elemendi indeks edastatakse argumendina ( nummerdamine alates 0).

Omadused:

Meetodid:

Sisesta (indeks, väärtus, vaade, märgistus, pilt) Lisab uue üksuse määratud indeksikoha väärtuste loendisse.SelectElement (pealkiri, element) avab väärtuste loendis ühe elemendi interaktiivse valiku akna. Element- element, millele väärtuste loend interaktiivse valiku ajal algselt paigutada. Kui parameetri väärtus ei ole selles loendis sisalduvate väärtuste loendi element, siis positsioneerimist ei toimu.Laadige väärtused üles() Loob massiivi ja kopeerib sinna väärtuste loendi elementide väärtused.Lisa (väärtus, vaade, märgistus, pilt) Lisab väärtuste loendi lõppu uue üksuse.LoadValues(ArrayValues) Laadib väärtuste loendi koos edastatud massiivi väärtustega. Sel juhul kustutatakse kõik loendi varasemad elemendid.Täitma(Flag) Märgib kõik väärtuste loendi üksused.Indeks (üksus) Saab väärtuste loendi üksuse indeksi. Kui ei leitud, tagastatakse -1.Count () Saab väärtuste loendis olevate üksuste arvu.FindByValue(LookupValue) Otsib väärtuste loendist üksuse väärtust. Kui ükski element ei salvesta soovitud väärtusega võrdset väärtust, tagastatakse see väärtus Määratlemata. FindBy ID(ID) Saab väärtuste loendi ID järgi. Kui elementi ei leita, naaseb see Määratlemata. Kontrolli üksusi(Pealkiri) Märgib või tühistab (interaktiivselt) väärtuste üksuste loendi. Tagastab Tõsi kui dialoogiboksis vajutatakse nuppu "OK", Valetada- muidu.Tühjenda () Kustutab väärtuste loendi, eemaldades sealt kõik üksused.ShowSelectItem(DescriptionClose Alerts, Title, Item) Avab väärtuste loendis oleva üksuse interaktiivse valiku akna.ShowTelementsLabel(DescriptionClose Alerts, Title) See on mõeldud väärtuste loendi elementide märgistuse olekute interaktiivseks seadistamiseks.Get (Index) Saab indeksi väärtuse. Töötab samamoodi nagu operaator.Nihutamine (element, nihe) Nihutab väärtuste loendi elementi ette- või tahapoole määratud arvu positsioone.Kopeeri () Loob väärtuste loendi koopia.Sorteeri väärtuse järgi(Suund) Sorteerib väärtuste loendi elementide salvestatud väärtuste kasvavas või kahanevas järjekorras. Vaadake näidet allpool.Sorteeri vaate järgi(Suund) Sorteerib väärtuste loendi kasvavas või kahanevas järjekorras väärtuste loendi üksuste esituste tähestikulises järjekorras. Vaadake näidet allpool.Eemalda (üksus) Eemaldab üksuse väärtuste loendist, kus Element- eemaldatava elemendi indeks või element ise.

Konstruktorid:

Uus väärtuste loend
& OnClient protseduur ExecuteCode (käsk) /// Kuidas luua väärtuste loendit jaotises 1c 8.3, 8.2 Loend = Uus väärtuste loend; /// Kuidas lisada üksus väärtuste loendisse 1s 8.3, 8.2 // meetodi parameetrite lisamine:// - tähendus // - etendus // - märk (valikuline) // - pilt (valikuline) Nimekiri. Lisa (1980, // elemendi väärtus "Vasja sünniaasta"// esitus); Nimekiri. Lisa (1985, "Julia sünniaasta") ; // väärtused võivad olla erinevat tüüpi Nimekiri. Lisa ("Polina", "Lapse nimi"); /// Kuidas lisada element väärtuste loendisse 1s 8.3, 8.2 // sisestada positsiooni # 2 (elemendid on nummerdatud alates 0 -st) // element väärtusega 2010 ja vaade // "Nende ühise tütre sünniaasta" Nimekiri. Kleebi (2, 2010, "Nende ühise tütre sünniaasta") ; /// Kuidas 1c väärtuste loendi elemente mööda minna 8.3, 8.2 Iga elemendi kohta loenditsükli aruandest (element. Esitus + ":" + String (elemendi väärtus)); Tsükli lõpp; /// Kuidas tühjendada väärtuste loendit 1s 8.3, 8.2 Nimekiri. Selge (); Nimekiri. Lisa ("esmaspäev"); Nimekiri. Lisa ("teisipäev"); Nimekiri. Lisa ("kolmapäev"); /// Kuidas teada saada ka väärtuste loendi elementide arvu /// saada loendi element selle indeksi järgi 1s 8.3, 8.2 // nummerdamine nullist Indeksi jaoks = 0 loendi järgi. Kogus () - 1 tsükli aruanne (loend [indeks]); Tsükli lõpp; /// Kuidas leida loendiüksust selle väärtuse järgi punktides 1c 8.3, 8.2 ValueTuesday = Loend. FindByValue ("teisipäev"); /// Kuidas leida loendis oleva elemendi indeksit punktis 1c 8.3, 8.2 Report (List. Index (SignedTuesday)); // 1, kuna numeratsioon on nullist /// Kuidas loendit sorteerida väärtuste järgi punktides 1c 8.3, 8.2 // oli: esmaspäev, teisipäev, kolmapäev Nimekiri. Sorteeri väärtuse järgi (Sorteeri suund. Kahanev); // nüüd: kolmapäev, esmaspäev, teisipäev /// Kuidas eemaldada element väärtuste loendist punktides 1c 8.3, 8.2 // eemaldage esimene element // parameeter: loendiüksus // või elementide indeks// saate seda nimekirja teha. Kustuta (loend [0]); // või nii // Loend. Kustuta (0); /// Kuidas väärtuste loendi elementi 1s nihutada 8.3, 8.2 // nullielemendi liigutamine ühe positsiooni võrra edasi // oli: esmaspäeval teisipäeval Nimekiri. Vahetus (0, 1); // sai: teisipäev esmaspäev /// Kuidas teha loendist koopia 1s 8 Loendi koopia = Loend. Kopeeri (); Värvid = Uus väärtuste loend; Värvid. Lisa ("punane"); Värvid. Lisa ("Roheline"); Värvid. Lisa ("sinine"); /// Kuidas laadida loendi väärtusi massiivi 1c -s 8.3, 8.2 Värvide massiiv = Värvid. UnloadValues ​​(); /// Loendiväärtuste laadimine massiivist 1c -s 8.3, 8.2 Värvid. LoadValues ​​(ArrayColors); Menetluse lõpp /// Kuidas teha loendist väärtuseta režiimita valik /// väärtused 1s 8.3, 8.2& OnClient protseduur How toMakeNonmodalValueSelection (käsk) Colors = NewList of Value; Värvid. Lisa ("punane"); Värvid. Lisa ("Roheline"); Värvid. Lisa ("sinine"); // AfterElementSelection protseduur on määratletud allpool AlertAfterItemSelection = Uus hoiatuse kirjeldus ( "AfterItemSelection", SeeObjekt); Värvid. ShowItemSelect (AlertAfterItemSelection, "Valige oma lemmikvärv"); EndProcedure & OnClient protseduur AfterElementSelection (üksus, parameetrid) Ekspordi kui üksus<>Määratlemata Seejärel aruanne (elemendi väärtus); EndIf; Menetluse lõpp /// Kuidas loendist modereeritult väärtusi märkida /// väärtused 1s 8.3, 8.2& OnClient protseduur Kuidas teha mittemodaalväärtustSign (käsk) Värvid = NewValueList; Värvid. Lisa ("punane"); Värvid. Lisa ("Roheline"); Värvid. Lisa ("sinine"); // protseduur AfterSelectElements on määratletud allpool AlertAfterElementsClick = Uus hoiatuse kirjeldus ( "AfterCelementElements", SeeObjekt); Värvid. ShowElementsClick (AlertAfterElementsClick "Valige oma lemmikvärvid"); Värvid. FillRemarks (True); EndProcedure & OnClient protseduur pärast üksuste (üksuste, parameetrite) kontrollimist Kui ekspordite üksusi<>Määratlemata Seejärel iga värvi jaoks elementidest Loop If Color. Märkige linnuke Seejärel teata (värv. Väärtus); EndIf; Tsükli lõpp; EndIf; Menetluse lõpp /// Kuidas teha 1c loendis olevast väärtusest modaalne valik 8.3, 8.2& OnClient protseduur How toModalValueSelection (käsk) Colors = NewList of Value; Värvid. Lisa ("punane"); Värvid. Lisa ("Roheline"); Värvid. Lisa ("sinine"); SelectColor = Värvid. SelectItem ( "Valige oma lemmikvärv"); Kui VybColor<>Määratlemata Seejärel aruanne (SelectColor. Value); EndIf; Menetluse lõpp /// Kuidas teha loendist väärtuste modaalne märk /// väärtused 1s 8.3, 8.2& OnClient protseduur Kuidas teha ModalValuesList (Command) värve = NewList of Value; Värvid. Lisa ("punane"); Värvid. Lisa ("Roheline"); Värvid. Lisa ("sinine"); Kui Värvid. Kontrolli üksusi ( "Valige oma lemmikvärvid") Siis iga värvi jaoks värvisilmusest Kui värv. Märkige linnuke Seejärel teata (värv. Väärtus); EndIf; Tsükli lõpp; EndIf; // aga nii saab kõik märgid korraga määrata // loend kindlale väärtusele Värvid. FillRemarks (True); Menetluse lõpp /// Laadige alla ja käivitage need näited arvutis

Millest see artikkel räägib

See artikkel jätkab artiklite sarja "Esimesed sammud 1C arendamisel". Selles arutatakse, kuidas töötada üldiste kogudega. Pärast artikli lugemist saate teada:

  • Mis on üldised kogud, millal ja millal peaksite neid kasutama?
  • Mis on kõigil universaalsetel kollektsioonidel ühist? Milliseid tehnikaid saate kõigi nendega töötamiseks kasutada?
  • Mis on massiiv, kuidas ja millal seda kasutada? Mis meetodid tal on?
  • Miks kasutada struktuuri? Kuidas see massiivist erineb?
  • Millal kasutada väärtuste loendit? Kuidas seda vormil kuvada?
  • Vastavus - mis see on ja millal seda kasutada? Millised on eelised struktuuri ees?
  • Milleks kasutatakse väärtuste tabelit? Kuidas kirjeldada selle struktuuri? Kuidas ridu lisada / eemaldada? Kuidas seda vormi viia?
  • Väärtuspuu - milleks seda kasutatakse? Kuidas vormi täita ja kuvada? Kuidas temaga koostööd teha?

Kohaldatavus

Artiklis käsitletakse praeguse väljaande platvormi 1C: Enterprise 8.3.

Kuidas töötada universaalsete kollektsioonidega 1C -s

Väärtuste kogu on teatud tüüpi konteiner, mis võib tavaliselt sisaldada suvalist arvu elemente. Samal ajal ei ole sageli andmetüübile ranged piirangud.

Saate lisada väärtusi üldisele kogule. Kõiki kollektsiooni väärtusi saab läbida. Neid kogusid kasutatakse peamiselt mingisuguseks töötlemiseks algoritmides. Need. need on mõned dünaamilised struktuurid, mis eksisteerivad kogu algoritmi kestel.

Oluline on mõista, et kogusid andmebaasi ei salvestata (me ei räägi väärtuste salvestamise andmetüübist, mis võib salvestada peaaegu kõiki andmetüüpe).

Üldkogusid on erinevat tüüpi: massiiv, struktuur, korrespondents, fikseeritud massiiv, väärtuste tabel, tabel jne. Kuid kõigil kogudel on sarnane käitumine.

Funktsiooni tulemusena saab luua kogu (funktsioon tagastab väärtusena üldise kogu).

Uue kogu saate käsitsi hankida, kui pääsete juurde konstruktorile ja loote klassi.

Näiteks: OurArray = Uus massiiv;

Paljude geneeriliste kollektsioonide konstruktorid on parameeritud.

Niisiis, konstruktoris saate määrata vastavate mõõtmetega üksuste arvu. Need. saate kohe mitmemõõtmeliseks kuulutada .

Konstruktori vastav kirjeldus on süntaksi abis.

Seega saate konstruktori parameetreid kasutades kohe määrata selle objekti soovitud käitumise.

Kuid parameetrid on valikulised, arendaja ei saa neid määrata ja massiivi käitumist oma äranägemise järgi täpsemalt määratleda.

Konstruktori abil saab luua peaaegu iga üldise kogu (välja arvatud tabeliosad, mis toimivad konfiguratsiooniobjektidena).

Üldiste kogude puhul on olemas üldised mõisted, näiteks indeks ja number. Igal kollektsiooni üksusel on indeks. Sel juhul algab indeks nullist.

Üksusele viitamiseks Meie massiiv, saate kasutada indeksiviidet; selleks on indeks näidatud nurksulgudes.

Näiteks, Meie massiiv... Pange tähele, et sel juhul tagastab süsteem massiivi elemendi indeksiga 3 ja järjekorras on see neljas massiivielement.

Mõne kollektsiooni puhul on olemas ka reanumbri mõiste. Rea number algab ühega. Näiteks tabeliosa puhul on olemas selline omadus nagu rea number. Oluline on meeles pidada, et kui me teame reanumbrit ja soovime viidata indeksile, siis tuleks indeksina kasutada rea ​​numbrist üks väiksem väärtus.

Reanumbri kontseptsioon ei eksisteeri kõigi kogude puhul, vaid peamiselt nende puhul, mida saab kasutajaliideses kuvada.

Kõigi kollektsioonide puhul kasutatakse kollektsiooni läbimist. Ümbersõit on võimalik kahel viisil: tsükkel ja tsükkel Igaühe jaoks.

Enamiku üldiste kogude puhul kasutatakse järgmisi meetodeid: loendamine, indeks, lisamine, sisestamine, kustutamine ja leidmine.

Loendamine on funktsioon, mis tagastab kogude üksuste arvu. Seda saab kasutada enne silmust Sest nagu joonisel näidatud.

Indeksimeetodit ei eksisteeri kõigi kogude puhul, vaid ainult nende puhul, mille elementidele saab viidata. Näide on Väärtuste tabel.

Väärtuste tabel See on spetsiifiline stringide kogu, stringid võivad sisaldada erinevaid veerge erinevat tüüpi väärtustega.

Iga rida on iseseisev üksus. Sellele saate lingi, selle rea kaudu saate viidata selle rea veergude väärtustele.

Indeksimeetod võimaldab teil määrata, milline indeks vastab antud reale (see tähendab rea praegune asukoht tabelis). Indeksi väärtused algavad nullist.

Peaaegu igal üldisel kollektsioonil on meetodeid, kuidas antud kollektsioonile uusi väärtusi lisada. Joonis näitab, kuidas täita massiivi väärtustega 0 kuni 10 kahel viisil.

Üksuse massiivi lisamiseks saame seda meetodit kasutada Lisama, märkige sulgudes lisaväärtus. Sellisel juhul lisatakse väärtus loendi lõppu, s.t. Massiiv kasvab viimase positsiooni tõttu pidevalt.

Teine meetod, mis võimaldab kollektsiooni väärtusi lisada, on meetod Sisesta... See erineb meetodist Lisama et saaksite määrata, kuhu lisatud element sisestada.

Süntaks: Sisestage (,)

Esimene parameeter on indeks, kuhu uus väärtus sisestatakse. Need. saame näiteks määrata, et iga väärtus tuleks sisestada loendi algusesse (teisel viisil ülaltoodud pildil).

Üksuste kogust eemaldamiseks kasutage seda meetodit Kustuta... Kustutusmeetodis näitab indeks seda, millise elemendi me kustutame.

Süntaks: Kustuta ()
Kasutamise näide: Meie massiiv. Eemalda (5);

Tuleb märkida, et nende kogude puhul, kus stringid esindavad sõltumatut üksust (näiteks Väärtustabelid), saame kasutada ka indeksi hankimise meetodit, et seejärel antud rida kustutada.

Peaaegu kõigil kogudel on väärtusotsingu meetod - Leia... Meetodile antakse väärtus, mida soovime leida. Mõnes kollektsioonis saate seada teatud piiranguid.

Näiteks aastal Väärtuste tabel saate määrata need read, need veerud, millest soovite otsida.

Kui väärtus leitakse, tagastab see meetod indeksi või konkreetse stringi. Kui väärtust ei leita, tagastatakse tüübi väärtus Määratlemata... Rakendatakse massiivile, tagastab Indeks või väärtus Määratlemata.

Kasutamise näide: OurVariable = OurArray.Find (8);

Üldisi kogusid saab puhastada väga kiiresti, s.t. eemaldage absoluutselt kõik elemendid. Selleks kasutatakse meetodit Selge () mis eemaldab massiivi elemendid, jooned Väärtustabelid või teiste kogude andmed.

Täiendavad meetodid Array jaoks

Meetod InBoundary () tagastab üksuste arvu miinus üks. Need. kui kasutame silmust Sest, siis saame koguse meetodi asemel meetodit kohe kasutada Piir().

Eelkõige võib muutujat NumberInArray määratleda erinevalt:

CountInArray = OurArray.Boundary ();
Siis ei tohiks tsüklit ennast kirjeldades sellest muutujast lahutada.

Set meetod võimaldab määrata massiivi elemendile väärtuse indeksi järgi.

Süntaks: Installige (,)

Näide: OurArray.Set (2.8);

Alternatiivne võimalus: Meie massiiv = 8;

Massiivi jaoks saate seda meetodit kasutada Võta vastu, et lugeda väärtust indeksi järgi ilma nurksulge kasutamata.

Süntaks: Vastuvõtt ()

Näide: Meie muutuja = OurArray.Get (2);

Alternatiivne võimalus: Meie muutuja = OurArray;

Universaalse kollektsiooni struktuur

Struktuuril, nagu massiivil, võib olla piiramatu arv elemente, kuid elemendi sisu erineb massiivist.

Struktuur on kogu, mille iga väärtus koosneb paarist. Paari esimest elementi nimetatakse Võti... Paari teine ​​element on Tähendus.

Võti On rangelt stringi andmetüüp, mis kirjeldab väärtust. Näiteks, Võti"Kood" võib vastata väärtusele 113; Võti"Nimi" tähendab "Vasya". Väärtusel endal pole andmetüübi piiranguid.

Struktuuri on väga mugav kasutada, kui tahame luua teatud parameetrite loendi. Kui see Struktuur helistas Meie struktuur, siis viidame selle kahele väärtusele järgmiselt: OurStructure.Code ja OurStructure.Name.

Selline kõne on palju mugavam kui siis, kui määratleksime kõik massiivi parameetrid ja pääseksime neile indeksi järgi juurde.

Struktuur muudab programmi koodi loetavaks (arusaadavaks). Struktuuri kasutatakse üsna sageli, palju sagedamini kui Array.

Seda kasutatakse mõningate parameetrite kirjeldamiseks, mida esineb sageli suurel hulgal kõikides algoritmides.

Lisaks kasutatakse struktuuri, kui protseduur ja funktsioon sisaldavad suurt hulka edastatud parameetreid.

Siis on palju mugavam kõik parameetrid struktuuri sisse kirjutada ja täpselt üle kanda. Need. on protseduuride ja funktsioonide parameetrite "pakkimine".

Eraldi tuleb märkida, et nagu Võti struktuuris ei saa ilmuda absoluutselt ühtegi rida. Kehtestatud on teatud piirangud.

Võti peaks toimima identifikaatorina. See tähendab, et aastal Võti tühikuid ei tohi olla ja see ei saa alata numbriga.

Lubatud algus Võti tähe või alajoonega. Seega Võti peab vastama identifikaatorite loomise nõuetele.

Pange tähele, kuidas struktuur erineb massiivist. Struktuuril on meetod Sisesta, massiivi sisestamiseks on kaks meetodit: Sisesta(kindlale positsioonile) ja Lisama(nimekirja lõpus). Massiivis on kõik elemendid järjestatud.

Struktuur on järjestamata komplekt. Seetõttu on struktuuri jaoks ainult sisestusmeetod.

Väärtus sisestatakse mitte kindlasse kohta, vaid määratud komplekti. Indeksile ei pääse struktuuride puhul juurde nagu teistele üldistele kogudele.

Struktuuri elementidele pääseb juurde ainult võtme nimega. Sellegipoolest töötab iga silmuse jaoks ka struktuuri jaoks, kuid te ei tohiks tugineda struktuuri elementide järjekorrale.

Struktuur luuakse samamoodi nagu muud üldised kogud, kasutades uut konstruktorit, määrates andmetüübi Struktuur.

Nagu Array, võib ka Struct konstruktoril olla parameetreid. Need. konstruktori abil on võimalik kirjeldada Struktuuri enda sisu.

Erinevalt massiivist, kus saate lihtsalt määrata elementide arvu kõikide mõõtmete jaoks, on struktuuris võimalik sisu ise määrata.

Näiteks: OurStructure = Uus struktuur (“Kood, nimi”, 133, “Vasya”);

Esiteks loetletakse võtmete nimed, eraldades need komadega, ja seejärel vastavalt samas järjestuses parameetrite väärtused.

Struktuurile uue väärtuse lisamiseks on olemas meetod Sisesta mis lisab uue paari (võti ja väärtus).

Näiteks: OurStructure.Insert (“Pereliikmed”, 3);

Struktuurile on iseloomulik veel üks meetod, mida kasutatakse üsna sageli. See on meetod Kinnisvara.

Selle meetodi abil saate aru, kas selles struktuuris on selline element, mille võtmel on selline ja selline nimi.

Kui selline element on olemas, tagastab süsteem väärtuse Tõene, vastasel juhul - Väär.

Näiteks väljend OurStructure.Property ("Pereliikmed") on võrdne tõega. Seda meetodit kasutatakse struktuuri analüüsimisel üsna sageli.

Nagu iga üldise kollektsiooni puhul, pääsete juurde ka struktuuri atribuutidele indeksi järgi. Kuid struktuuri indeks on stringi väärtus.

Näiteks: Aruanne (Meie struktuur [“Pereliikmed”]);

Siiski ei tohiks unustada, et struktuur on järjestamata objektide kogum, mistõttu ei ole viide indeksiga 0, 1, 2 lubatud.

Üldine kogum Väärtuste loend

Väärtuste loend on mis tahes andmetüübi üksuste lineaarne loend.

Iga element koosneb mitmest väärtusest. Väärtuste loendit saab skemaatiliselt esitada nelja veeruga loendina.

Esimene veerg on Mark... Sellel on loogiline andmetüüp ja see võimaldab kasutajal ruute märkida või tühistada.

Teine veerg on pilt, mis suudab seda elementi mingil moel visuaalselt kujutada, s.t. sobitage see rida mis tahes pildiga.

Kolmas veerg on salvestatud väärtus ise, s.t. see on mis tahes andmetüüp ja see võib erinevatel ridadel erineda.

Neljas veerg on vaade, s.t. see on antud väärtuse mingi stringikirjeldus. Vaade kuvatakse kasutajale, kui ta antud üksust vaatab. Sel juhul, kui esitust pole täpsustatud, proovib süsteem saada selles positsioonis sisalduvale elemendile esitusi.

Väärtuste loend- see on objekt, millega kasutaja saab visuaalselt töötada. Need. Väärtuste loend saab kuvada vormil.

Kasutaja saab temaga teatud toiminguid teha. Pealegi, Väärtuste loend saab iseseisvalt järeldada meetodite abil, s.t. kuvatakse ekraanil mõnes algoritmiharus (välja arvatud serveri kood), nii et kasutaja valib mõne rea või paneb mõne linnukese.

Leia Väärtuste loend sitaxi assistendis. Konstruktor Väärtuste loend pole parameeritud (te ei saa määrata vaikeväärtusi).

On selliseid meetodeid nagu:

  • Lisa (,);
  • Lisama(,);
  • Kogus ();
  • Indeks ().

On ka spetsiaalseid meetodeid, nt. Väärtuste mahalaadimine ()... See loob massiivi, kuhu väärtuste loend kopeeritakse. Näiteks:

ArrayElements = ListPriceTypes.LoadValues ​​();

On ka vastupidine meetod:
PriceTypeList.LoadValues ​​(ElementArray);

Otsingumeetodeid on:
FindByValue (); FindById ().

On olemas kopeerimismeetod:
ListCopy = PriceTypeList.Copy ();
See meetod on mõeldud koopiaga mingisuguste muudatuste tegemiseks.

On meetodeid:
SortByValue ();
Sorteeri esitluse järgi ().

Meetodid Valige element (,) ja Kontrolli üksusi () kutsuge modaalne dialoogiboks, mis peatab algoritmi täitmise, kuni kasutaja sulgeb antud akna.

Nende meetodite kasutamiseks konfiguratsiooni atribuutides Modaalsuse kasutamise viis tuleks seada väärtusele Kasutamine.

Hallatud rakenduste moodulist kutsutud näidiskood:

Kuva antud kood kasutajarežiimis (modaalne dialoog).

Allpool Väärtuste loend kasutatakse vormi rekvisiitide juurdepääsetava andmetüübina. Looge töötlemisvormile uued rekvisiidid, määrake selle tüüp Väärtuste loend ja kuvage see vormil.

Loo uus meeskond Kingitused, kandke vormile üle ja määrake selle jaoks toimingukäitleja.

Kohandatud režiimis kuvatakse täidetud loend, kui klõpsate töötlemisvormil nuppu Täida kingitused.

Soovi korral saab loendit muuta: mõnda elementi saab lisada, mõnda kustutada.

Mitmekülgne kollektsiooni vastavus

See kollektsioon on väga sarnane Struktuur... Nagu struktuur, on ka kirjavahetus väärtuste kogum, mis koosneb võtmest ja väärtusest endast.

Peamine erinevus seisneb selles, et mis tahes andmetüüpi saab määrata nii võtmena kui ka väärtuse jaoks. Seda eripära silmas pidades on vaja viidata vasteväärtusele indeksi kaupa; võtmeväärtus on määratud indeksi väärtuseks.

Võti võib olla muu andmetüüp kui string. Kirjavahetusega töötamise omadused ja meetodid on praktiliselt samad kui struktuuri omad.

Vastavuskonstruktor, erinevalt struktuurist, ei sisalda parameetrite määramise võimalust.

Kasutamise näide:

Kirjavahetus on kasulik, kui peate siduma mis tahes kaks struktuuri. Näiteks tuleb tabeliosa iga rida seostada väärtustabeli reaga.
Sel juhul kasutatakse tabeliosa rida vastendusvõtmena ja näidatakse vastav väärtus.

Üksuste lisamisel Matchi kollektsiooni peale meetodi Sisestage (,) väärtuse sisestamiseks on veel üks võimalus - selleks kasutatakse tavalist määramisoperaatorit.

Näiteks: Meie vaste = Uus vaste;
Matš = 999

Need. kui kollektsioonis ei olnud elementi, lisatakse see ülesandeoperaatori abil ja kui see oli olemas, värskendatakse seda.

See erineb struktuurist.

Üldine kogum Väärtuste tabel

Väärtuste tabel on tabel suvalise arvu ridade ja suvalise arvu veergudega. Ristmik võib salvestada mis tahes andmetüübi väärtusi. Vajadusel saab veerge trükkida, st saate määrata, millisesse veergu millist tüüpi andmeid salvestatakse.

Võite jätta veerud tippimata, siis saab erinevat tüüpi väärtusi salvestada ühte veergu erinevates ridades.

Erinevused Väärtustabelid 2D massiivist:

  • see on objekt, millega kasutaja saab töötada (väärtuste tabelit saab kuvada, kasutaja saab selle täita, hiljem saab sisestatud andmeid lugeda);
  • indeksite loomine kiireks otsimiseks;
  • kloonimine, kogu veeru täitmine teatud väärtusega, kõigi veergude massiivi mahalaadimine.

Väärtuste tabel kasutatakse teabe salvestamiseks teatud tüüpi puhvrina. Väärtuste tabel tagastati ja aktsepteeriti parameetrina paljudes süsteemimeetodites. Väärtuste tabelisse on võimalik koostada päring.

Niisiis, Väärtuste tabel koosneb ridade ja veergude komplektist. Nii read kui ka veerud on kogud.

Need. kollektsiooni sees Väärtuste tabel on veel kaks kollektsiooni. Pöördume süntaksi abistaja poole ja leiame Väärtuste tabel.

Toetatud andmetüübid: ise Väärtuste tabel mis koosneb ridadest. Iga rida on tähistatud andmetüübiga StringTableValues, millel on oma omadused ja oma meetodid. Seal on KoguVeerudTabelidVäärtused on ka teatud omadused.

Oluline punkt! Protseduur, mis moodustub Väärtuste tabel, peaks kompileerima & AtServeri.

Enne töö alustamist Väärtuste tabel, on vaja kindlaks teha, millised veerud selles sisalduvad (st need luua). Süntaks:

Lisama(,)
(valikuline)
Tüüp: string.
(valikuline)
Tüüp: KirjeldusTüübid
(valikuline)
Tüüp: string.
(valikuline)
Tüüp: arv.

Näiteks:

Selle protseduuri kutsumiseks kasutame käsku.

Kirjelduses Väärtustabelid kogumise elemendid on täpselt RidadTabelidVäärtused.

Erinevalt veergudest, mis koosnevad ainult atribuutidest (nimi, tüüp, pealkiri, laius), in RowTableValues seal on nii atribuute (viide veeru nime järgi) kui ka meetodeid (saate väärtuse hankida ja määrata, omanikega koostööd teha).

Tabelisse uue rea lisamiseks peate kasutama ka meetodit Lisama() või Lisa ()... Teisel juhul peaksite märkima, millisesse asendisse nõutud rida tuleks paigutada.

Veerule väärtuse määramiseks kasutame veeru nimele või indeksile viitamiseks punkti (nurksulgude abil).

Täitmiseks Väärtustabelid saab kasutada järgmisi meetodeid:

Selge ()- kõigi ridade eemaldamiseks Väärtustabelid.

FillValues ​​(,)- võimaldab teil täita kõik veerud või valitud veerud ühe väärtusega.
Laadi veerg (,)- laadib massiivist veeru.
Laadi veerg () alla- laadib veeru massiivi.

Viimast kahte meetodit on mugav kasutada, kui peate veeru ühest väärtustabelist teise üle kandma.

Kopeeri (,)- võimaldab luua olemasoleva tabeli põhjal uue Väärtuste tabel, samas ei näita kõiki ridu ja kõiki veerge, vaid ainult mõnda neist. Tagastusväärtus on - Väärtuste tabel.

Saate struktuuri kopeerida Väärtustabelid... Selleks on olemas vastav meetod. Kopeeri veerud ()... Jääme tühjaks Väärtuste tabel vajaliku struktuuriga.

V Väärtuste tabel on olemas meetod Kokku ()... Saate määrata veeru, milles soovite arvväärtused kokku liita. Tulemustabelis varem näidatud koodi suhtes saate väärtuse arvutada: TK.Total ("Summa").

V Väärtuste tabel meetodit kasutades on võimalik arvväärtusi rühmitada (ahendada) teatud veergude samade väärtuste järgi Ahenda (,).

Tulemustabelis varem näidatud koodi suhtes saate väärtuse arvutada: TK.Collapse ("Nädala päev", "Summa").

Väärtuste tabel saab kuvada kohandatud ekraanil, nii et saate sellega mis tahes toiminguid teha. Aga erinevalt Väärtuste loend te ei saa programmi koodist tabelit lihtsalt ekraanile kutsuda.

Kuvamiseks Väärtuste tabel looge ekraanil vormi atribuut ja määrake sellele andmetüüp Väärtuste tabel.

Pärast seda tuleks vormil kuvada saadud tabel.

Vormimoodulis lisage eelnevalt koostatud algoritmi lõppu (väärtustabeli loomise protseduuris):
ValueVDataForm (TK, tabel);

Üldine kogum Väärtuste puu

mitmekülgne kollektsioon, mis on väga sarnane Väärtuste tabel... Erinevus tabelist on see, et puu read võivad olla üksteisele allutatud, s.t. saab moodustada mingi hierarhia.

Saab kuvada ka ekraanil. Väärtuspuu koosneb selgesõnaliselt stringide ja veergude kogumist. Puul on kaks omadust - read ja veerud.

Kuna read võivad olla üksteisele allutatud, siis saab iga rea ​​jaoks määrata nii ema kui ka alluvad read.

Loome sobiva puu käsu ja selle töötlemise protseduuri.

Loome kus üks vanem rida ja kaks alluvat.

Loome vormi rekvisiidid DerZn(andmetüüp - ValueTree).

Selle atribuudi jaoks loome veerud Aasta ja Kuu.

Liigutage vastav element DerZn vormil.

Lõpus Protseduurid TreeOnServer () lisama:

ValueVDataForm (TreeZn, DerZn);

Kontrollime, mis juhtus kasutajarežiimis.

Nupu kasutamine Lisama saab lisada uusi ridu. Nad võivad moodustada ka hierarhia.

Kõigi väärtuspuu elementide läbimiseks peame kasutama rekursiooni, s.t. protseduuri iseendast välja kutsumine. Näiteks väärtuspuu töötlemine võib välja näha järgmine:

Sellega lõpeb meie esimene tutvumine universaalsete kollektsioonidega.

Järgmises artiklis vaatleme olulist mehhanismi, mida arendaja saab kasutada programmi koodi viiteelemendile juurdepääsu lihtsustamiseks.