1c prvok zoznamu hodnôt. Univerzálna kolekcia Strom hodnôt

Úplná syntax (kliknutím rozbalíte)

ListValues

Popis:

Zoznam hodnôt je objekt, ktorý nie je uložený v databáze, čo vám umožňuje vytvárať dynamické sady hodnôt na riešenie problémov s rozhraním a manipulovať s nimi (pridávať, upravovať, mazať prvky, triediť). Môže byť naplnený hodnotami akéhokoľvek typu, t.j. V jednom zozname môžu byť typy uložených hodnôt rôzne. Jeden príklad použitia tohto objektu môže slúžiť ako organizácia na výber konkrétneho dokumentu zo zoznamu možných dokumentov generovaných pomocou zložitého algoritmu.

Zbierkové predmety: ValueListElement

Objekt je možné obísť zber pomocou operátora Pre každého... Od... Cyklus. Priechod vyberá prvky kolekcie.

K prvku kolekcie je možné pristupovať pomocou operátora [...]. Index prvku sa odovzdá ako argument ( číslovanie od 0).

Vlastnosti:

Metódy:

Insert (Index, Value, Representation, Label, Image) Inserts nový prvok do zoznamu hodnôt na pozícii so zadaným indexom.SelectElement (Title, Element) Vyvolá okno pre interaktívny výber jedného z prvkov zahrnutých v zozname hodnôt. Element- prvok, ku ktorému by mal byť zoznam hodnôt pôvodne umiestnený počas interaktívneho výberu. Ak hodnota parametra nie je súčasťou zoznamu hodnôt tento zoznam, k polohovaniu nedôjde.UnloadValues()Vytvorí pole a skopíruje do neho hodnoty prvkov zoznamu hodnôt.Pridať(Hodnota, Reprezentácia, Označenie, Obrázok)Pridá nový prvok na koniec zoznamu hodnôt.LoadValues(ArrayValues)Načíta zoznam hodnôt s hodnotami z odovzdaného poľa. V tomto prípade sa vymažú všetky predchádzajúce prvky zoznamu.Vyplňte Poznámky(Mark) Nastaví značku pre všetky prvky zoznamu hodnôt.Index(Element)Získa index prvku v zozname hodnôt. Ak sa nenájde, vráti sa -1.Count() Získa počet prvkov v zozname hodnôt.FindByValue(SearchValue) Hľadá hodnotu prvku v zozname hodnôt. Ak žiadny prvok neuchováva hodnotu rovnajúcu sa hodnote vyhľadávania, vráti sa hodnota Nedefinované. Nájsť podľa ID(Identifikátor)Načíta zoznam hodnôt prvku podľa identifikátora. Ak sa prvok nenájde, vráti sa Nedefinované. MarkItems(Hlavička) Nastavuje alebo odznačuje (interaktívne) položky v zozname hodnôt. Návraty Pravda, ak je v dialógovom okne stlačené tlačidlo "OK", Klamať- inak.Clear() Vymaže zoznam hodnôt a odstráni z neho všetky prvky.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Vyvolá okno pre interaktívny výber jedného z prvkov zahrnutých v zozname hodnôt.ShowMark položky(Popis zatváracích upozornení, hlavička) Určené na interaktívne nastavenie stavov značiek pre prvky zoznamu hodnôt.Get(Index)Načíta hodnotu podľa indexu. Funguje podobne ako operátor.Posun (prvok, posun) Posunie prvok zoznamu hodnôt dopredu alebo dozadu o zadaný počet pozícií.Copy() Vytvorí kópiu zoznamu hodnôt.SortByValue(Smer) Zoradí zoznam hodnôt vo vzostupnom alebo zostupnom poradí podľa hodnôt uložených prvkami. Pozrite si príklad nižšie.SortByView(Smer) Zoradí zoznam hodnôt vo vzostupnom alebo zostupnom poradí abecedné poradie reprezentácie zahrnuté v zozname hodnôt prvkov. Pozrite si príklad nižšie.Remove (Element) Odstráni prvok zo zoznamu hodnôt, kde Element- index prvku, ktorý sa má vymazať, alebo samotného prvku.

Dizajnéri:

Nový zoznam hodnôt
&OnClient Procedure ExecuteCode(príkaz) /// Ako vytvoriť zoznam hodnôt v 1s 8.3, 8.2 Zoznam = Nový zoznam hodnôt; /// Ako pridať prvok do zoznamu hodnôt v 1s 8.3, 8.2 // pridanie parametrov metódy:// - význam // - výkon // - značka (povinné) // - obrázok (povinné) Zoznam. Pridať ( 1980, // hodnota prvku "Rok Vasyovho narodenia"// výkon ); Zoznam. Pridať(1985, "Rok Juliinho narodenia") ; // hodnoty môžu byť rôzneho typu Zoznam. Add("Polina" , "Meno dieťaťa" ); /// Ako vložiť prvok do zoznamu hodnôt v 1s 8.3, 8.2 // vložte na pozíciu č. 2 (prvky sú číslované od 0) // prvok s hodnotou 2010 a reprezentáciou // "Rok, keď sa narodila ich spoločná dcéra" Zoznam. Insert(2, 2010, "Rok, keď sa narodila ich spoločná dcéra") ; /// Ako obísť prvky zoznamu hodnôt v 1s 8.3, 8.2 Pre každý prvok zo zoznamu Správa slučky( Element. Reprezentácia + ": " + String(Element. Hodnota) ); EndCycle ; /// Ako vymazať zoznam hodnôt v 1s 8.3, 8.2 Zoznam. Jasný() ; Zoznam. Add("pondelok"); Zoznam. Pridať("utorok"); Zoznam. Add("Streda" ); /// Ako zistiť počet prvkov zoznamu hodnôt, ako aj /// získa prvok zoznamu podľa jeho indexu v 1s 8.3, 8.2 // číslovanie od začiatku Pre Index = 0 Podľa zoznamu. Množstvo() - Správa 1 cyklu(Zoznam[Index]) ; EndCycle ; /// Ako nájsť prvok zoznamu podľa jeho hodnoty v 1s 8.3, 8.2 ValueTuesday = Zoznam. FindByValue("utorok"); /// Ako zistiť index prvku v zozname v 1s 8.3, 8.2 Report(List.Index(HodnotaUtorok)) ; // 1, pretože číslovanie začína od nuly /// Ako zoradiť zoznam podľa jeho hodnôt v 1s 8.3, 8.2 // bolo: pondelok, utorok, streda Zoznam. SortByValue(SortDirection.Descending) ; // sa stali: streda, pondelok, utorok /// Ako odstrániť prvok zo zoznamu hodnôt v 1s 8.3, 8.2 // odstráňte prvý prvok // parameter: prvok zoznamu // alebo index prvku// môžete urobiť tento zoznam. Delete(Zoznam[ 0]) ; // alebo tak // List.Delete(0); /// Ako posunúť prvok zoznamu hodnôt v 1s 8.3, 8.2 // posun nulového prvku o jednu pozíciu dopredu // bolo: pondelok utorok Zoznam. Move(0, 1); // stal sa: utorok pondelok /// Ako vytvoriť kópiu zoznamu za 1 s 8 ListCopy = Zoznam. Copy() ; Farby = NewValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); /// Ako nahrať hodnoty zoznamu do poľa za 1s 8.3, 8.2 ArrayColors = Farby. UnloadValues() ; /// Ako načítať hodnoty zoznamu z poľa v 1s 8.3, 8.2 Farby. LoadValues(ArrayColors) ; Koniec procedúry /// Ako urobiť nemodálny výber hodnoty zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Na procedúre klienta Ako vytvoriť nemodálny výber (príkaz) Farby = nový zoznam hodnôt; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterSelectingElement je definovaný nižšie AlertAfterElementSelection = New DescriptionAlerts( "AfterElementSelection", ThisObject ); Farby. ShowElementSelection( NotificationAfterElementSelection, "Vyberte si svoju obľúbenú farbu"); Koniec procedúry &Na procedúre klienta Po výbere prvku (prvku, parametrov) Exportujte prvok<>Undefined Then Report(Element.Value) ; Koniec Ak ; Koniec procedúry /// Ako urobiť nemodálne označovanie hodnôt zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Na postupe klienta Ako vytvoriť nemodálne označovanie hodnôt (príkaz) Farby = nový zoznam hodnôt; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterMarkingElements je definovaný nižšie AlertAfterMarkingItems = New DescriptionAlerts( "Po označovaní položiek", ThisObject ); Farby. ShowTagItems( AlertAfterTagItems, "Vyberte si svoje obľúbené farby"); Farby. FillNotes(True) ; Koniec procedúry &Na klientskej procedúre po označení prvkov (prvkov, parametrov) Exportujte prvky, ak<>Nedefinované potom pre každú farbu z prvkov Cyklus Ak farba. Označ, potom ohlás(Color.Value) ; Koniec Ak ; EndCycle ; Koniec Ak ; Koniec procedúry /// Ako urobiť modálny výber hodnoty zo zoznamu v 1s 8.3, 8.2&Na klientskej procedúre Ako vytvoriť ModalValueSelection(Command) Farby = Nový ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); SelectColor = Farby. Vybrať položku( "Vyberte si svoju obľúbenú farbu"); Ak SelectColor<>Undefined Then Report(SelectColor.Value) ; Koniec Ak ; Koniec procedúry /// Ako modálne označiť hodnoty zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Na postupe klienta Ako vytvoriť modálnu značku hodnôt ​​(príkaz) Farby = nový zoznam hodnôt; Farby. Add("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); Ak Farby. MarkItems( "Vyberte si svoje obľúbené farby") Potom pre každú farbu z farebného cyklu Ak farba. Označ, potom ohlás(Color.Value) ; Koniec Ak ; EndCycle ; Koniec Ak ; // takto môžete nastaviť všetky značky naraz // zoznam na konkrétnu hodnotu Farby. FillNotes(True) ; Koniec procedúry /// Stiahnite si a spustite tieto príklady na svojom počítači

V tomto celku sa zoznámime s novým dátovým typom jazyka 1C, ktorý je tzv ListValues.

Zoznam hodnôt je pole, ale s veľkými schopnosťami. A ak áno, potom je to tiež zbierka údajov a môžete do nej vložiť množinu čísel:

// vytvoril zoznam hodnôt

List.Add(23);

Zatiaľ všetko vyzerá ako pole, však? Ale poďme ďalej. Aby sme teraz tieto čísla zobrazili používateľovi, napíšeme:

// cyklus cez každý prvok zoznamu For Each Element From List Loop Report(Element.Value);

// zobrazenie hodnoty prvku EndCycle;

A tu je prvý rozdiel. Prvky pravidelného poľa sú samotné čísla. A prístup k aktuálnej hodnote prvku Zoznam využívame možnosť Význam, pomocou konštrukcie Element. Význam.

Pozrime sa na niektoré ďalšie funkcie hodnoty.

Vie triediť

Môžeme napríklad jednoducho zoradiť zoznam hodnôt. Zoznam to dokáže sám:

List.SortByValue(SortDirection.Vek); V prípade bežného poľa by sme museli implementovať niektorý z triediacich algoritmov (napríklad „bublina“).

Vie hľadať

Zoznam hodnôt môže vyhľadávať svoje prvky sám. Povedzme, že chceme zistiť, či sa číslo zadané používateľom nachádza v našom zozname:

EnterNumber(Number); // zadané číslo od užívateľa FoundElement = List. FindByValue(Number);

If FoundItem = Undefined Then OpenValue("Number " + Number + " not found in the list!"); Inak

OpenValue("Číslo " + Číslo + " je v zozname. Tu je:" + FoundElement.Value);

koniec Ak; ListValues

Podporuje vkladanie a mazanie

Zoznam hodnôt, napríklad pole, podporuje vkladanie a odstraňovanie prvkov:

Zoznam. Insert(0, 1000);

// vlož tisícku na úplný začiatok zoznamu List.Delete(O); // a okamžite ho odstráňte zo zoznamu List. Vlozit(Zoznam.Mnozstvo(), 13);

// vložte 13 na koniec zoznamu Report(List[List.Quantity() - 1]);

// zobrazenie posledného prvku zoznamu (13)

Podporuje hranaté zátvorky

Ako ste už pochopili, číslovanie prvkov zoznamu tiež začína od nuly a k akémukoľvek prvku môžeme pristupovať podľa jeho indexu pomocou hranatých zátvoriek:

Správa(Zoznam.Hodnota); // zobrazenie druhého prvku zoznamu Takto môžeme prejsť všetkými prvkami zoznamu:

Pre A = 0 Podľa List.Quantity() - 1 Slučka Report(List[A].Value);

EndCycle;

Dokáže vytvoriť kópiu seba samého

Zoznam hodnôt má len skvelú vlastnosť – dokáže vytvoriť svoju kópiu:

ListCopy = List.Copy();

// vytvoril kópiu zoznamu // teraz môžeme bezpečne zmeniť kópiu zoznamu //, zatiaľ čo pôvodný zoznam nezmení kópiu zoznamu. hodnota = 123456;

Môže sa zmeniť na pole

A nakoniec, všetky prvky zoznamu môžete kedykoľvek jednoducho vypísať do poľa:

ArrayNumbers = Zoznam. UnloadValues();

// vyhodené do poľa

Pre A = 0 By ArrayNumber.Quantity() - 1 cyklus

Report(ArrayNumbers[A]); // nie je potrebné špecifikovať // možnosť Hodnota

EndCycle;

Na precvičenie a upevnenie materiálu tejto jednotky sa odporúča splniť nasledujúcu úlohu.

Je potrebné zadať 5 čísel od užívateľa, nájsť najväčšie a najmenšie z nich a zobraziť ich užívateľovi. Riešenie musí používať zoznam hodnôt.

Riešenie

Zoznam = Nový zoznam hodnôt;

// vytvoril zoznam hodnôt Pre A = 1 až 5 Číslo cyklu = 0;

EnterNumber(Number); // zadajte číslo od užívateľa List.Add(Number); // a pridajte ho do zoznamu EndCycle; // a tak ďalej 5 krát

// triedenie zoznamu čísel

Zoznam. Sort ByValue(SortDirection.Vek);

// po zoradení je prvý prvok zoznamu // najmenší prvok a posledný je najväčší OpenValue("Najmenší prvok" + Zoznam +

", a najväčší " + List[List.Quantity() - 1]);

O čom je tento článok?

Tento článok pokračuje v sérii článkov „Prvé kroky vo vývoji 1C“. Zahŕňa princípy práce s univerzálnymi kolekciami. Po prečítaní článku sa dozviete:

  • Čo sú univerzálne kolekcie a kedy a v akých prípadoch by sa mali používať?
  • Čo majú spoločné všetky univerzálne kolekcie? Aké techniky môžete použiť na prácu so všetkými z nich?
  • Čo je pole, ako a kedy ho použiť? Aké metódy má?
  • Prečo používať štruktúru? Ako sa líši od poľa?
  • Kedy by ste mali použiť zoznam hodnôt? Ako to zobraziť vo formulári?
  • Súlad – čo to je a kedy ho použiť? Aké sú výhody štruktúry?
  • Na čo sa používa tabuľka hodnôt? Ako opísať jeho štruktúru? Ako pridať/odstrániť riadky? Ako to zobraziť vo formulári?
  • Strom hodnôt - na čo sa používa? Ako vyplniť a zobraziť formulár? Ako s tým pracovať?

Použiteľnosť

Článok pojednáva o platforme 1C:Enterprise 8.3 aktuálneho vydania.

Ako pracovať s univerzálnymi kolekciami v 1C

Zbierka hodnôt je kontajner, ktorý môže zvyčajne obsahovať ľubovoľný počet prvkov. Často však neexistujú žiadne prísne obmedzenia na typ údajov.

Do všeobecnej kolekcie môžete pridať hodnoty. Všetky hodnoty v kolekcii je možné prechádzať. Tieto kolekcie sa používajú hlavne na nejaký druh spracovania v algoritmoch. Tie. Toto sú niektoré dynamické štruktúry, ktoré existujú počas spustenia algoritmu.

Je dôležité pochopiť, že kolekcie nie sú uložené v databáze (nehovoríme o dátovom type Value Store, ktorý dokáže ukladať takmer akýkoľvek typ dát).

Existujú rôzne typy generických kolekcií: pole, štruktúra, zhoda, pevné pole, tabuľka hodnôt, Tabuľková časť atď. Ale všetky kolekcie majú podobné správanie.

Kolekcia môže byť vytvorená ako výsledok operácie funkcie (funkcia vracia univerzálnu kolekciu ako hodnotu).

Novú kolekciu môžete získať manuálne zavolaním konštruktora a vytvorením inštancie triedy.

Napríklad: OurArray = Nové pole;

Konštruktory pre mnohé generické kolekcie sú parametrizované.

Takže v konštruktéri pre Môžete určiť počet členov v zodpovedajúcich rozmeroch. Tie. môžete okamžite vyhlásiť multidimenzionálny .

Zodpovedajúci popis konštruktora je v asistentovi syntaxe.

Pomocou parametrov konštruktora teda môžete okamžite nastaviť požadované správanie daného objektu.

Parametre sú však voliteľné; vývojár ich nemôže nastaviť a ďalej definovať správanie poľa, ako uzná za vhodné.

Pomocou konštruktora je možné vytvoriť takmer akúkoľvek univerzálnu kolekciu (výnimkou sú časti tabuľky, ktoré fungujú ako konfiguračné objekty).

Pre univerzálne kolekcie existujú také všeobecné pojmy ako index a číslo. Každý prvok kolekcie má index. V tomto prípade index začína od nuly.

Pre prístup k prvku OurArray, môžete použiť prístup k indexu; na tento účel je index uvedený v hranatých zátvorkách.

Napríklad, OurArray. Upozorňujeme, že v tomto prípade systém vráti prvok Array s indexom 3 av poradí je to štvrtý prvok Array.

Pre niektoré kolekcie existuje aj pojem číslo riadku. Číslo riadku začína jednotkou. Napríklad pre tabuľkovú časť existuje taká vlastnosť ako číslo riadku. Je dôležité mať na pamäti, že ak poznáme číslo riadku a chceme k nemu pristupovať podľa indexu, potom by sme ako index mali použiť hodnotu o jednu menšiu ako je číslo riadku.

Pojem číslo riadku neexistuje vo všetkých kolekciách, ale hlavne v tých, ktoré je možné zobraziť v používateľskom rozhraní.

Všetky kolekcie používajú prechod elementom kolekcie. Obtok je možný dvoma spôsobmi: cyklus Pre A cyklus Pre každý z.

Metódy, ktoré sa vzťahujú na väčšinu všeobecných kolekcií, sú Count, Index, Add, Insert, Delete a Find.

Count je funkcia, ktorá vracia počet prvkov v kolekcii. Môže sa použiť pred cyklom Pre, ako je znázornené na obrázku.

Metóda Index neexistuje pre všetky kolekcie, ale iba pre tie, na ktorých prvky možno odkazovať. Príkladom je Tabuľka hodnôt.

Tabuľka hodnôt– ide o špecifickú kolekciu riadkov, pričom riadky môžu obsahovať rôzne stĺpce s odlišné typy hodnoty.

Každý riadok predstavuje nezávislú entitu. Môžete naň získať odkaz; cez tento riadok máte prístup k hodnotám stĺpcov v tomto riadku.

Metóda Index umožňuje určiť, ktorý index zodpovedá danému riadku (teda aktuálnej pozícii riadka v tabuľke). Hodnoty indexu začínajú na nule.

Takmer každá univerzálna kolekcia má metódy na pridávanie nových hodnôt do danej kolekcie. Obrázok ukazuje, ako vyplniť pole hodnotami od 0 do 10 dvoma spôsobmi.

Na pridanie prvku do poľa môžeme použiť metódu Pridať, uveďte hodnotu, ktorá sa má pridať v zátvorkách. V tomto prípade bude hodnota pridaná na koniec zoznamu, t.j. Pole sa bude neustále zvyšovať kvôli poslednej pozícii.

Ďalšou metódou, ktorá vám umožňuje pridávať hodnoty do kolekcie, je Vložiť. Líši sa od metódy Pridať v ktorej môžete určiť, kam sa má vložiť pridaný prvok.

Syntax: Vložiť (,)

Prvý parameter určuje index, do ktorého sa vloží nová hodnota. Tie. môžeme napríklad určiť, že každá hodnota má byť vložená na začiatok zoznamu (druhá metóda na obrázku vyššie).

Ak chcete odstrániť prvky z kolekcie, použite metódu Odstrániť. Metóda Delete určuje indexom, ktorý prvok vymažeme.

Syntax: Odstrániť()
Príklad použitia: OurArray.Delete(5);

Je potrebné poznamenať, že pre tie kolekcie, kde reťazce predstavujú nezávislú entitu (napríklad pre Tabuľky hodnôt), môžeme tiež použiť metódu získania indexu, aby sme tento riadok neskôr odstránili.

Takmer všetky zbierky majú metódu na vyhľadávanie hodnoty - Nájsť. Hodnota, ktorú chceme nájsť, sa odovzdá metóde. Niektoré kolekcie umožňujú nastaviť určité obmedzenia.

Napríklad v Tabuľka hodnôt môžete určiť riadky a stĺpce, v ktorých chcete vyhľadávať.

Ak sa hodnota nájde, táto metóda vráti index alebo zadaný reťazec. Ak sa hodnota nenájde, vráti sa hodnota typu Nedefinované. Vo vzťahu k poľu sa vracia Index alebo hodnotu Nedefinované.

Príklad použitia: OurVariable = OurArray.Find(8);

Univerzálne zbierky sa dajú veľmi rýchlo vyčistiť, t.j. odstráňte úplne všetky prvky. Na tento účel sa používa metóda Jasný(), ktorý odstráni prvky Array, riadky Tabuľky hodnôt alebo údaje z iných zbierok.

Ďalšie metódy pre Array

Metóda Bborder() vráti počet prvkov mínus jeden. Tie. ak použijeme slučku Pre, potom namiesto metódy Množstvo môžeme okamžite použiť metódu Hranica().

Najmä premenná QuantityInArray by mohla byť definovaná inak:

QuantityInArray = OurArray.InBorder();
Potom pri popise samotného cyklu by sme nemali od tejto premennej odčítať.

Metóda Set vám umožňuje priradiť hodnotu prvku Array pomocou indexu.

Syntax: Inštalácia(,)

Príklad: OurArray.Set(2,8);

Alternatívna možnosť: OurArray = 8;

Túto metódu môžete použiť pre pole Získajte, na čítanie hodnoty v indexe bez použitia hranatých zátvoriek.

Syntax: Získať ()

Príklad: OurVariable = OurArray.Get(2);

Alternatívna možnosť: OurVariable = OurArray;

Univerzálna štruktúra kolekcie

Štruktúra, podobne ako pole, môže mať neobmedzený počet prvkov, ale obsah prvku sa líši od poľa.

Štruktúra je kolekcia, ktorej každá hodnota pozostáva z páru. Prvý prvok z dvojice je tzv kľúč. Druhým prvkom páru je Význam.

kľúč– toto je prísne typ reťazcaúdaj, ktorý popisuje hodnotu. Napríklad, Ku kľúču"Kód" môže zodpovedať hodnote 113; Ku kľúču„Meno“ znamená „Vasya“. Samotná hodnota nepodlieha obmedzeniu typu údajov.

Štruktúru je veľmi vhodné použiť, ak chceme vytvoriť určitý zoznam parametrov. Ak toto Štruktúra volal Naša štruktúra, potom sa budeme odvolávať na jeho dve hodnoty takto: OurStructure.Code a OurStructure.Name.

Tento druh prístupu je oveľa pohodlnejší, ako keby sme definovali všetky parametre v poli a pristupovali k nim indexom.

Štruktúra robí programový kód čitateľným (pochopiteľným). Štruktúra sa používa pomerne často, oveľa častejšie ako Array.

Používa sa na popis určitých parametrov, ktorých je vo všetkých algoritmoch často dosť veľké množstvo.

Okrem toho sa Štruktúra používa, ak procedúra a funkcia obsahujú veľké množstvo odovzdaných parametrov.

Potom je oveľa pohodlnejšie zapísať všetky parametre do Štruktúry a odovzdať ju ďalej. Tie. parametre procedúr a funkcií sú „nabalené“.

Samostatne je potrebné poznamenať, že ako kľúč V štruktúre sa nemôže objaviť žiadna čiara. Platia určité obmedzenia.

kľúč by mal fungovať ako identifikátor. To znamená, že v Klyuche nesmú tam byť žiadne medzery a nemôže začínať číslom.

Prijateľný začiatok kľúč s písmenom alebo podčiarkovníkom. teda kľúč musí spĺňať požiadavky na vytváranie identifikátorov.

Všimnime si, ako sa ešte štruktúra líši od poľa. V Štruktúre je metóda Vložiť, existujú dva spôsoby vloženia do poľa: Vložiť(do určitej polohy) a Pridať(na koniec zoznamu). V poli sú všetky prvky usporiadané.

Štruktúra je akýmsi neusporiadaným súborom. To je dôvod, prečo existuje iba metóda vkladania pre štruktúru.

Hodnota sa nevloží na konkrétnu pozíciu, ale do zadanej množiny. K štruktúre nie je možné pristupovať pomocou indexu, podobne ako k iným generickým kolekciám.

Prvky štruktúry sú prístupné iba pomocou názvu kľúča. Slučka For Each však funguje aj pre štruktúru, ale nemali by ste sa spoliehať na poradie prvkov štruktúry.

Štruktúra sa vytvorí rovnakým spôsobom ako ostatné generické kolekcie pomocou konštruktora New, pričom sa určí typ údajov Štruktúra.

Podobne ako pole, aj konštruktor štruktúry môže mať parametre. Tie. je možné opísať samotný obsah Štruktúry pomocou konštruktora.

Na rozdiel od poľa, kde môžete jednoducho určiť počet prvkov pre všetky dimenzie, v štruktúre môžete určiť samotný obsah.

Napríklad: OurStructure = Nová štruktúra („Kód, Meno“, 133, „Vasya“);

Názvy kľúčov oddelené čiarkami sú najprv uvedené a potom v rovnakom poradí hodnoty parametrov.

Existuje metóda na pridanie novej hodnoty do štruktúry Vložiť, ktorý vloží nový pár (Kľúč a Hodnota).

Napríklad: OurStructure.Insert(“Členovia rodiny”,3);

Štruktúra sa vyznačuje ďalšou metódou, ktorá sa používa pomerne často. Toto je metóda Nehnuteľnosť.

Pomocou tejto metódy môžete pochopiť, či v tejto štruktúre existuje prvok, ktorého kľúč má taký a taký názov.

Ak takýto prvok existuje, systém vráti hodnotu True, v opačnom prípade – False.

Napríklad výraz OurStructure.Property („Členovia rodiny“) sa bude rovnať hodnote True. Táto metóda sa používa pomerne často pri analýze štruktúry.

Ako pri každej univerzálnej kolekcii je možné pristupovať k vlastnostiam štruktúry podľa indexu. Ale index pre štruktúru je hodnota reťazca.

Napríklad: Správa (Naša štruktúra[“Členovia rodiny”]);

Nemali by sme však zabúdať, že štruktúra je neusporiadaná množina objektov, a preto je prístup pomocou indexu 0, 1, 2 neprijateľný.

Všeobecná zbierka Zoznam hodnôt

ListValues je lineárny zoznam prvkov ľubovoľného dátového typu.

Každý prvok pozostáva z niekoľkých hodnôt. Schematicky môže byť zoznam hodnôt reprezentovaný ako zoznam so štyrmi stĺpcami.

Prvý stĺpec - Marka. Má typ údajov Boolean a umožňuje používateľovi začiarknuť alebo zrušiť začiarknutie políčok.

Druhý stĺpec je obrázok, ktorý môže tento prvok nejako vizuálne reprezentovať, t.j. spojte tento reťazec s obrázkom.

Tretí stĺpec je samotná uložená hodnota, t.j. ide o akýkoľvek typ údajov a môžu sa líšiť v rôznych riadkoch.

Štvrtý stĺpec je prezentácia, t.j. toto je nejaký popis reťazca daná hodnota. Pohľad sa používateľovi zobrazí pri zobrazení tohto prvku. V tomto prípade, ak reprezentácia nie je špecifikovaná, systém sa pokúsi získať reprezentácie pre prvok obsiahnutý v tejto pozícii.

ListValues– to je objekt, s ktorým môže používateľ vizuálne pracovať. Tie. ListValues možno zobraziť vo formulári.

Používateľ s ním môže vykonávať niektoré akcie. okrem toho ListValues môžu byť odvodené nezávisle pomocou metód, t.j. zobraziť na obrazovke v niektorej vetve algoritmu (s výnimkou kódu servera), takže používateľ vyberie nejaký riadok alebo zaškrtne niektoré políčka.

nájdeme ListValues v sitax asistentovi. Konštruktér ListValues nie je parametrizovaný (nemôžete nastaviť žiadne predvolené hodnoty).

Existujú metódy ako:

  • Vložiť(,) ;
  • Pridať(,);
  • Množstvo ();
  • Index().

Existujú aj špeciálne metódy, napr. UnloadValues(). Tým sa vytvorí pole, do ktorého sa skopíruje zoznam hodnôt. Napríklad:

Array of Elements = Zoznam cenových typov.OutloadValues();

Existuje aj opačná metóda:
ListPriceTypes.LoadValues(ArrayItems);

Existujú metódy vyhľadávania:
FindByValue(); FindByIdentifier().

Existuje metóda kopírovania:
ListCopy = PriceTypeList.Copy();
Táto metóda je určený na vykonanie určitej úpravy kópie.

Existujú metódy:
SortByValue();
SortByView().

Metódy Vybrať položku(,) A MarkItems() zavolajte modálne dialógové okno, ktoré zastaví vykonávanie algoritmu, kým používateľ nezavrie okno.

Ak chcete použiť tieto metódy vo vlastnostiach konfigurácie Spôsob použitia modality musí byť nastavené na Použite.

Príklad kódu volaného z modulu spravovanej aplikácie:

Zobrazte tento kód v užívateľskom režime (modálny dialóg).

Nižšie ListValues používané ako dostupný typúdaje pre podrobnosti formulára. Pre formulár spracovania vytvoríme nový atribút a definujeme jeho typ ListValues a zobraziť ho vo formulári.

Vytvorenie nového tímu Vyplňte Darčeky, preneste ho do formulára a definujte preň obsluhu akcie.

V užívateľskom režime sa po kliknutí na tlačidlo Vyplniť darčeky vo formulári spracovania zobrazí vyplnený zoznam.

V prípade potreby je možné zoznam upraviť: niektoré prvky možno pridať, niektoré odstrániť.

Súlad s všestrannou kolekciou

Táto kolekcia je veľmi podobná Štruktúra. Rovnako ako štruktúra, aj mapovania sú sady hodnôt, ktoré pozostávajú z kľúča a samotnej hodnoty.

Hlavný rozdiel je v tom, že ako kľúč možno zadať ľubovoľný typ údajov, ako aj hodnotu. Vzhľadom na túto vlastnosť je potrebné pristupovať k hodnote zhody podľa indexu, hodnota kľúča je označená ako hodnota indexu.

Kľúčom môže byť iný typ údajov ako reťazec. Vlastnosti a metódy práce s Compliance sú takmer rovnaké ako pri Structure.

Konštruktor súladu na rozdiel od štruktúry neobsahuje možnosť špecifikovať parametre.

Príklad použitia:

Korešpondenciu je vhodné použiť, keď potrebujete spojiť ľubovoľné dve štruktúry. Napríklad každý riadok v tabuľkovej časti sa musí zhodovať s riadkom z tabuľky hodnôt.
V tomto prípade sa riadok sekcie tabuľky použije ako kľúč zhody a zobrazí sa zodpovedajúca hodnota.

Pri vkladaní prvkov do kolekcie Match okrem metódy Vložiť(,)Ďalším spôsobom vloženia hodnoty je použitie bežného operátora priradenia.

Napríklad: OurMatch = NewMatch;
Zhoda = 999;

Tie. ak sa prvok v kolekcii nenachádza, pridá sa pomocou operátora priradenia, a ak bol prítomný, aktualizuje sa.

Toto je v protiklade so štruktúrou.

Tabuľka hodnôt univerzálnej zbierky

Tabuľka hodnôt je tabuľka s ľubovoľným počtom riadkov a ľubovoľným počtom stĺpcov. Priesečník môže ukladať hodnoty akéhokoľvek typu údajov. V prípade potreby je možné stĺpce napísať, t.j. môžete určiť, v ktorom stĺpci je uložený typ údajov.

Stĺpce môžete nechať nezadané, potom môžu byť hodnoty rôznych typov uložené v jednom stĺpci v rôznych riadkoch.

Rozdiely Tabuľky hodnôt z dvojrozmerného poľa:

  • ide o objekt, s ktorým môže užívateľ pracovať (tabuľku hodnôt je možné zobraziť na obrazovke, užívateľ ju môže vyplniť a zadané údaje následne prečítať);
  • vytváranie indexov pre rýchle vyhľadávanie;
  • klonovanie, vyplnenie celého stĺpca určitou hodnotou, nahranie všetkých stĺpcov do poľa.

Tabuľka hodnôt používa sa ako druh vyrovnávacej pamäte na ukladanie informácií. Tabuľka hodnôt je vrátený a prijatý ako parameter mnohými systémovými metódami. Je možné zostaviť dotaz podľa tabuľky hodnôt.

takže, Tabuľka hodnôt pozostáva zo sady riadkov a sady stĺpcov. Riadky aj stĺpce sú kolekcie.

Tie. vnútri zbierky Tabuľka hodnôt sú ešte dve kolekcie. Obráťme sa na asistenta syntaxe a nájdime Tabuľka hodnôt.

Podporované typy údajov: samotné Tabuľka hodnôt, ktorý sa skladá zo strún. Každý riadok je reprezentovaný dátovým typom RowTableValues, ktorý má svoje vlastnosti a svoje metódy. K dispozícii Zbierka hodnôt stĺpcov tabuľky má tiež určité vlastnosti.

Dôležitý bod! Postup, ktorý vytvára Tabuľka hodnôt, musí skompilovať &OnServer.

Než začnete pracovať s Tabuľka hodnôt, je potrebné určiť, aké stĺpce bude obsahovať (t.j. vytvoriť ich). Syntax:

Pridať (,)
(voliteľné)
Typ: Reťazec.
(voliteľné)
Typ: PopisTypy
(voliteľné)
Typ: Reťazec.
(voliteľné)
Typ: Číslo.

Napríklad:

Na zavolanie tejto procedúry použijeme príkaz.

V popise Tabuľky hodnôt prvky kolekcie sú precízne RowsTableValues.

Na rozdiel od stĺpcov, ktoré pozostávajú len z vlastností (Názov, Typ, Nadpis, Šírka), v RowTableValues Existujú vlastnosti (prístup podľa názvu stĺpca) a metódy (môžete získať a nastaviť hodnotu, pracovať s vlastníkmi).

Pridať Nový riadok do tabuľky musíte použiť metódu buď Pridať (), alebo vložiť(). V druhom prípade by ste mali uviesť, na akej pozícii by mala byť požadovaná čiara umiestnená.

Na priradenie hodnoty stĺpcu používame bodku na prístup k názvu stĺpca alebo indexu (pomocou hranatých zátvoriek).

Na plnenie Tabuľky hodnôt Môžu sa použiť nasledujúce metódy:

Jasný()– odstrániť všetky riadky z Tabuľky hodnôt.

FillValues(,)– umožňuje vyplniť všetky stĺpce alebo vybrané stĺpce jednou hodnotou.
LoadColumn(,)– načíta stĺpec z poľa.
UnloadColumn()– uvoľní stĺpec do poľa.

Posledné dve metódy sú vhodné na použitie, keď potrebujete preniesť stĺpec z jednej tabuľky hodnôt do druhej.

Kopírovať (,)– umožňuje vytvoriť novú na základe existujúcej tabuľky Tabuľka hodnôt a nie všetky riadky a všetky stĺpce, ale iba niektoré z nich. Návratová hodnota - Tabuľka hodnôt.

Môžete skopírovať štruktúru Tabuľky hodnôt. Na to existuje zodpovedajúca metóda CopyColumns(). Dostaneme prázdnu Tabuľka hodnôt s požadovanou štruktúrou.

IN Tabuľka hodnôt existuje metóda Celkom(). Môžete zadať stĺpec, v ktorom chcete sčítať číselné hodnoty. Vo vzťahu k predtým uvedenému kódu v tabuľke môžete vypočítať hodnotu: TK.Celkom („Suma“).

IN Tabuľka hodnôt pomocou metódy je možné zoskupiť (zbaliť) číselné hodnoty podľa rovnakých hodnôt určitých stĺpcov Zbaliť (,).

Vo vzťahu k predtým uvedenému kódu v tabuľke môžete vypočítať hodnotu: TK.Collapse („Deň v týždni“, „Suma“).

Tabuľka hodnôt sa môže zobraziť na obrazovke používateľa, aby ste s ním mohli vykonávať akékoľvek akcie. Ale na rozdiel od ListValues od programový kód Nemôžete len tak zobraziť stôl na obrazovke.

Zobraziť Tabuľka hodnôt na obrazovke vytvorte atribút formulára a priraďte mu typ údajov Tabuľka hodnôt.

Potom by sa výsledná tabuľka mala zobraziť vo formulári.

Vo formulárovom module na konci predtým zostaveného algoritmu (v Postupe na vytvorenie tabuľky hodnôt) by ste mali pridať:
ValueInFormData(TK, Tabuľka);

Univerzálna kolekcia Strom hodnôt

univerzálna kolekcia, ktorá je veľmi podobná Tabuľka hodnôt. Rozdiel oproti tabuľke je v tom, že riadky stromu môžu byť navzájom podriadené, t.j. môže sa vytvoriť určitý druh hierarchie.

To sa môže prejaviť aj na obrazovke. Strom hodnôt explicitne pozostáva z kolekcie riadkov a kolekcie stĺpcov. V strome sú dve vlastnosti: Riadky a Stĺpce.

Keďže riadky môžu byť jeden druhému podriadené, každý riadok môže mať nadradeného, ​​ako aj jeho podriadené riadky.

Vytvorme zodpovedajúci príkaz Strom a jeho postup spracovania.

Poďme tvoriť v ktorom je jeden nadradený riadok a dva podriadené riadky.

Poďme vytvoriť atribúty formulára DerZn(údajový typ – Strom hodnôt).

Pre tento atribút vytvoríme stĺpce Rok a Mesiac.

Presuňte príslušný prvok DerZn na formulári.

Nakoniec Postupy TreeOnServer() pridajme:

ValueInFormData(TreeZn, DerZn);

Pozrime sa, čo sa stalo v používateľskom režime.

Pomocou tlačidla Pridať môžete pridať nové riadky. Môžu tiež vytvárať hierarchiu.

Na prejdenie všetkých prvkov hodnotového stromu budeme musieť použiť rekurziu, t.j. volanie procedúry od seba. Napríklad spracovanie stromu hodnôt môže vyzerať takto:

Týmto končíme naše prvé zoznámenie s univerzálnymi kolekciami.

V ďalšom článku sa pozrieme na to, aký dôležitý mechanizmus môže vývojár použiť na zjednodušenie prístupu k prvku adresára z programového kódu.