Prvok zoznamu hodnôt 1s. Univerzálna štruktúra kolekcie

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

Zoznam hodnôt

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. Jedným príkladom použitia tohto objektu je organizovanie výberu konkrétneho dokumentu zo zoznamu možných dokumentov generovaných zložitým algoritmom.

Prvky kolekcie: ItemListValues

Kolekciou objektu je možné prejsť pomocou operátora Pre každý ... 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, View, Markup, Image) Vloží nový prvok do zoznamu hodnôt na pozíciu v zadanom indexe.SelectElement(Title, Element) Vyvolá okno pre interaktívny výber jeden z prvkov v zozname hodnôt. Prvok- prvok, na ktorý by mal byť pri interaktívnom výbere spočiatku umiestnený zoznam hodnôt. Ak hodnota parametra nie je prvkom zoznamu hodnôt obsiahnutých v tomto zozname, k umiestneniu nedôjde.UploadValues()Vytvorí pole a skopíruje do neho hodnoty prvkov zoznamu hodnôt.Add(Value, View, Markup, Image) Pridá nový prvok na koniec zoznamu hodnôt.DownloadValues(Pole hodnôt) 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(Label) Nastaví označenie 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 zoznamu hodnôt.FindByValue(LookupValue) Vyhľadá hodnotu prvku v zozname hodnôt. Ak žiadny prvok neuchováva hodnotu rovnajúcu sa požadovanej hodnote, hodnota sa vráti. Nedefinované. FindByID(ID) Získa prvok zoznamu hodnôt podľa ID. Ak sa prvok nenájde, vráti sa Nedefinované. Označiť položky(Title) Začiarkne alebo zruší (interaktívne) položky v zozname hodnôt. sa vracia Pravda ak v dialógovom okne stlačíte tlačidlo "OK", Klamať- inak.Clear() Vymaže zoznam hodnôt odstránením všetkých prvkov z neho.ShowItemSelection(ClosingAlertDescription, Title, Item) Vyvolá okno na interaktívny výber jednej z položiek v zozname hodnôt.ShowMarkItems(DescriptionAlertOnClosing, Header) Navrhnuté pre interaktívne nastavenie vlajkových stavov pre prvky zoznamu hodnôt.Get(Index) Získa hodnotu v indexe. Funguje podobne ako operátor.Presunúť (Položka, Posun) Presunie 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.Zoradiť podľa zobrazenia(Smer) Zoradí zoznam hodnôt vo vzostupnom alebo zostupnom abecednom poradí podľa reprezentácií hodnôt členov v zozname. Pozrite si príklad nižšie.Remove (Element) Odstráni prvok zo zoznamu hodnôt, kde Prvok- index prvku, ktorý sa má odstrániť, alebo samotného prvku.

Konštrukté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 (voliteľné) // - obrázok (povinné) Zoznam. Pridať ( 1980 , // hodnota prvku "Rok Vasyovho narodenia"// výkon ); Zoznam. Pridať(1985, "Júliine narodeniny") ; // 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žiť na pozíciu #2 (prvky sú číslované od 0) // prvok s hodnotou 2010 a reprezentáciou // "Rok narodenia ich spoločnej dcéry" Zoznam. Vložiť(2, 2010, "Rok narodenia ich spoločnej dcéry") ; /// Ako obísť prvky zoznamu hodnôt v 1s 8.3, 8.2 Pre každý prvok zo zoznamu Správa slučky( Element. View + ": " + String(Element. Value) ); 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 a tiež /// získa prvok zoznamu podľa jeho indexu v 1s 8.3, 8.2 // číslovanie od nuly Pre Index = 0 Podľa zoznamu. Quantity() - 1 Loop Report(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 je od nuly /// Ako zoradiť zoznam podľa jeho hodnôt v 1s 8.3, 8.2 // bolo: pondelok, utorok, streda Zoznam. SortByValue(SortingDirection. Zostupne) ; // 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 1s 8 ListCopy = Zoznam. Copy() ; Farby = Nový zoznam hodnôt; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); /// Ako uvoľniť hodnoty zoznamu do poľa v 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) ; EndProcedure /// Ako urobiť nemodálny výber hodnoty zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalSelectValue(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterItemSelect je definovaný nižšie AlertAfterItemSelection = New AlertDescription( "AfterElementSelection", ThisObject ); Farby. ShowItemChoice( AlertAfterItemChoice, "Vyberte si svoju obľúbenú farbu"); EndProcedure &AtClient Procedure AfterElementSelection(Element, Parameters) Export If Element<>Undefined Then Report(Item. Value) ; Koniec Ak ; EndProcedure /// Ako vytvoriť nemodálnu značku hodnôt zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); // postup AfterMarkingItems je definovaný nižšie AlertAfterMarkItems = New AlertDescription( "Po označovaní položiek", ThisObject ); Farby. ShowItemMark( NotificationAfterItemMark, "Vyberte si svoje obľúbené farby"); Farby. FillRemarks(True) ; EndProcedure &OnClient Procedure AfterMarkingElements(Elements, Parameters) Export If Elements<>Nedefinované potom pre každú farbu z prvkov slučka, ak farba. Príznak Potom správa (Hodnota farby) ; Koniec Ak ; EndCycle ; Koniec Ak ; EndProcedure /// Ako urobiť modálny výber hodnoty zo zoznamu v 1s 8.3, 8.2&Na procedúre klienta How toMakeModalSelectValue(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); SelectColor = Farby. Vybrať položku( "Vyberte si svoju obľúbenú farbu"); Ak vyberiete farbu<>Undefined Then Report(SelectColor. Value) ; Koniec Ak ; EndProcedure /// Ako vytvoriť modálnu značku hodnôt zo zoznamu /// hodnoty v 1 s 8,3, 8,2&Procedúra OnClient How toMakeModalValueMark(Command) Colors = New ValueList; Farby. Pridať("Červená"); Farby. Pridať("Zelená" ); Farby. Pridať("Modrá" ); Ak farby. Označiť položky ( "Vyberte si svoje obľúbené farby") Potom pre každú farbu z farebného cyklu Ak farba. Príznak Potom správa (Hodnota farby) ; Koniec Ak ; EndCycle ; Koniec Ak ; // a takto sa dajú nastaviť všetky značky naraz // zoznam na konkrétnu hodnotu Farby. FillRemarks(True) ; EndProcedure /// Stiahnite si a spustite tieto príklady na počítači

O čom je tento článok

Tento článok pokračuje v sérii článkov „Prvé kroky vo vývoji na 1C“. Rozoberá princípy práce s generickými kolekciami. Po prečítaní článku sa dozviete:

  • Čo sú generické zbierky, kedy a v akých prípadoch by sa mali používať?
  • Čo majú spoločné všetky univerzálne kolekcie? Aké techniky sa dajú použiť na prácu so všetkými?
  • Č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 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 slúži tabuľka hodnôt? Ako opísať jeho štruktúru? Ako pridať/odstrániť riadky? Ako to dostať do formy?
  • Strom hodnôt – na čo sa používa? Ako vyplniť a zobraziť formulár? Ako s ní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 druh kontajnera, ktorý môže zvyčajne obsahovať ľubovoľný počet prvkov. Zároveň často 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 trvania 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 uložiť takmer akýkoľvek dátový typ).

Existovať rôzne druhy generické kolekcie: pole, štruktúra, mapovanie, 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 nejakej funkcie (funkcia vracia generickú kolekciu ako hodnotu).

Dostupné Nová kolekcia manuálne volaní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 prvkov v zodpovedajúcich rozmeroch. Tie. môžete okamžite vyhlásiť multidimenzionálny .

Zodpovedajúci popis konštruktora je v pomocníkovi syntaxe.

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

Ale parametre sú voliteľné, vývojár ich nemôže nastaviť a ďalej definovať správanie Array, ako uzná za vhodné.

Takmer každá generická kolekcia môže byť vytvorená pomocou konštruktora (s výnimkou tableparts, ktoré fungujú ako konfiguračné objekty).

Pre generické zbierky existujú všeobecné pojmy ako index a číslo. Každý prvok kolekcie má index. Index začína od nuly.

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

Napríklad, OurArray. Všimnite si, že v tomto prípade systém vráti prvok poľa na indexe 3 a v poradí je to štvrtý prvok poľa.

Pre niektoré kolekcie existuje aj pojem radové číslo. Číslo riadku začína jednotkou. Napríklad pre tabuľkovú sekciu existuje taká vlastnosť ako číslo riadku. Je dôležité mať na pamäti, že ak poznáme číslo riadku a chceme pristupovať podľa indexu, potom by sa ako index mala použiť hodnota o jeden menšia ako číslo riadku.

Koncept čísla riadku neexistuje pre všetky kolekcie, ale hlavne pre tie, ktoré je možné zobraziť v používateľskom rozhraní.

Pre všetky kolekcie sa používa prechádzanie prvkov kolekcie. Obtok je možný dvoma spôsobmi: cyklus Pre a cyklus Pre každého.

Pre väčšinu všeobecných kolekcií platia nasledujúce metódy: Počet, Index, Pridať, Vložiť, Odstrániť a Nájsť.

Count je funkcia, ktorá vracia počet prvkov v kolekcii. Môže sa použiť pred slučkou 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 je špecifická kolekcia reťazcov, pričom reťazce môžu obsahovať rôzne stĺpce s odlišné typy hodnoty.

Každý riadok je nezávislý subjekt. 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.

Metódy na pridávanie nových hodnôt do tejto kolekcie existujú takmer v každej generickej kolekcii. 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 pridanú hodnotu v zátvorke. 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 metóda Vložiť. Líši sa od metódy Pridať aby ste mohli určiť, kam 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 sa má vložiť na začiatok zoznamu (druhý spôsob na obrázku vyššie).

Metóda sa používa na odstránenie prvkov z kolekcie. Odstrániť. Pri metóde Delete je indexom označené, 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 TableValues), môžeme tiež použiť metódu get index na odstránenie daného riadku neskôr.

Takmer všetky zbierky majú metódu na nájdenie hodnoty - Nájsť. Metóde sa odovzdá hodnota, ktorú chceme nájsť. V niektorých kolekciách môžete zaviesť akékoľvek obmedzenia.

Napríklad v Tabuľka hodnôt môžete zadať tie riadky, tie stĺpce, v ktorých chcete hľadať.

Ak sa hodnota nájde, táto metóda vráti index alebo špecifický reťazec. Ak sa nenájde žiadna hodnota, vráti sa hodnota typu. Nedefinované. Pri použití na pole sa vráti Index alebo hodnotu Nedefinované.

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

Generické zbierky je možné veľmi rýchlo vyčistiť, t.j. odstráňte úplne všetky prvky. Na tento účel sa používa metóda jasný(), ktorý odstraňuje prvky poľa, struny TableValues alebo údaje z iných zbierok.

Ďalšie metódy pre pole

Metóda Bboundary() 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á NumberInArray mohla byť definovaná inak:

NumberInArray = OurArray.InBorder();
Potom pri popise samotného cyklu by sa od tejto premennej nemalo 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, aby bolo možné prečítať hodnotu 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 od poľa líši.

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

kľúč je striktne reťazcový dátový typ, ktorý popisuje hodnotu. Napríklad, kľúč"Kód" môže zodpovedať hodnote 113; kľúč"Meno" znamená "Vasya". Na samotnú hodnotu neexistuje žiadne obmedzenie typu údajov.

Štruktúru je veľmi výhodné použiť, ak chceme vytvoriť 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.

Takéto odvolanie je oveľa pohodlnejšie, 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 niektorých parametrov, ktoré sú vo všetkých algoritmoch často dosť veľké.

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. dochádza k „nabaľovaniu“ parametrov procedúr a funkcií.

Samostatne je potrebné poznamenať, že ako kľúč v štruktúre sa nemôže objaviť absolútne žiadny reťazec. Platia určité obmedzenia.

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

Prípustný štart kľúč s písmenom alebo podčiarkovníkom. Touto cestou, kľúč musí spĺňať požiadavky na vytváranie identifikátorov.

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

Štruktúra je druh neusporiadanej množiny. Preto existuje iba metóda vkladania pre štruktúru.

Hodnota sa nevloží na konkrétnu pozíciu, ale do zadanej množiny. Na štruktúru nemožno odkazovať indexom ako na iné generické kolekcie.

Prvky štruktúry sú označované iba názvom kľúča. Slučka For each of však funguje aj pre štruktúru, ale nemali by ste sa spoliehať na poradie prvkov štruktúry.

Štruktúra sa vytvára rovnakým spôsobom ako iné generické kolekcie pomocou konštruktora New, ktorý špecifikuje typ údajov štruktúry.

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

Na rozdiel od Array, kde môžete jednoducho určiť počet prvkov pre všetky dimenzie, v Structure je možné nastaviť samotný obsah.

Napríklad: OurStructure = New Structure("Kód,Názov", 133, "Vasya");

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

Na pridanie novej hodnoty do štruktúry existuje metóda 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 taký prvok, pre ktorý má kľúč taký a taký názov.

Ak takýto prvok existuje, systém vráti hodnotu True, inak vráti hodnotu False.

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

Ako pre každú univerzálnu kolekciu je povolený prístup 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 nie je usporiadaná množina objektov, a preto je prístup pomocou indexu 0, 1, 2 neprijateľný.

Generic Collection List of Values

Zoznam hodnôt 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 - značka. Má booleovský typ údajov a umožňuje používateľovi buď začiarknuť políčka, alebo ich začiarknutie zrušiť.

Druhý stĺpec je obrázok, ktorý môže tento prvok nejako vizuálne znázorniť, t.j. priraďte tento riadok k ľubovoľnému obrázku.

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

Štvrtý stĺpec je pohľad, t.j. je to nejaký reťazcový popis danej hodnoty. Pohľad sa používateľovi zobrazí pri zobrazení tohto prvku. V tomto prípade, ak nie je nastavené zobrazenie, systém sa pokúsi získať zobrazenia pre prvok obsiahnutý v tejto pozícii.

Zoznam hodnôt- toto je objekt, s ktorým môže používateľ vizuálne pracovať. Tie. Zoznam hodnôt možno zobraziť vo formulári.

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

Poďme nájsť Zoznam hodnôt v sitax pomocníkovi. Konštruktér Zoznam hodnôt nie je parametrizovaný (nie je možné 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:

ArrayElements = ListPriceTypes.UnloadValues();

Existuje aj opačná metóda:
PriceTypeList.LoadValues(ElementsArray);

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

Existuje metóda kopírovania:
CopyList = ListPriceTypes.Copy();
Táto metóda je určený na vykonanie určitého druhu úpravy s kópiou.

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

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

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

Vzorový kód volaný z modulu spravovanej aplikácie:

Zobrazte tento kód v používateľskom režime (modálne dialógové okno).

Nižšie Zoznam hodnôt použitý ako dostupný typ údajov pre atribút formulára. Pre formulár spracovania vytvoríme nový atribút, určíme mu typ Zoznam hodnôt a zobraziť ho vo formulári.

Tvoríme nový tím StoreGifts, 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ť: pridať niektoré prvky, niektoré odstrániť.

Súlad s univerzálnou kolekciou

Táto kolekcia je veľmi podobná štruktúru. Rovnako ako štruktúra, aj zhoda je súbor hodnôt, ktorý pozostáva z kľúča a samotnej hodnoty.

Hlavný rozdiel je v tom, že akýkoľvek typ údajov môže byť špecifikovaný ako kľúč, aj ako hodnota. Vzhľadom na túto vlastnosť je potrebné pristupovať k hodnote zhody indexom, hodnota kľúča je špecifikovaná ako hodnota indexu.

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

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

Príklad použitia:

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

Pri vkladaní prvkov do kolekcie Match iných ako metóda Vložiť (,) Existuje ďalší spôsob vloženia hodnoty, a to použitie normálneho operátora priradenia.

Napríklad: OurMatch = Nový zápas;
Zhoda = 999;

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

Toto sa líši od štruktúry.

Generic Collection Table of Values

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. určiť, v ktorom stĺpci je uložený typ údajov.

Môžete nechať stĺpce nezadané, potom môže rovnaký stĺpec v rôznych riadkoch ukladať hodnoty rôznych typov.

Rozdiely TableValues z 2D poľa:

  • ide o objekt, s ktorým môže užívateľ pracovať (tabuľka hodnôt môže byť zobrazená na obrazovke, užívateľ ju môže vyplniť, v budúcnosti je možné čítať zadané údaje);
  • vytváranie indexov pre rýchle vyhľadávanie;
  • klonovanie, vyplnenie celého stĺpca určitou hodnotou, uvoľnenie 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 na tabuľku 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 metódy. Dostupné CollectionColumns TableValues má tiež určité vlastnosti.

Dôležitý bod! Postup, ktorý generuje Tabuľka hodnôt, mal by sa skompilovať & na serveri.

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

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

Napríklad:

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

V popise TableValues ako sú prvky kolekcie presne RowsTableValues.

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

Pridať Nový riadok k tabuľke, musíte použiť metódu buď Pridať (), alebo vložiť(). V druhom prípade by ste mali určiť, na ktorú pozíciu má byť požadovaný reťazec umiestnený.

Ak chcete stĺpcu priradiť hodnotu, odkazujeme naň názvom stĺpca alebo indexom (pomocou hranatých zátvoriek) oddelených bodkou.

Na plnenie TableValues možno použiť nasledujúce metódy:

jasný()- odstrániť všetky riadky z TableValues.

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ú užitočné, keď potrebujete presunúť stĺpec z jednej tabuľky hodnôt do druhej.

Kopírovať (,)- umožňuje vytvoriť novú tabuľku na základe existujúcej tabuľky Tabuľka hodnôt, pričom 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 TableValues. Na to existuje zodpovedajúca metóda. CopyColumns(). Dostaneme prázdne Tabuľka hodnôt s požadovanou štruktúrou.

AT Tabuľka hodnôt existuje metóda Celkom(). Môžete zadať stĺpec, v ktorom chcete sčítať číselné hodnoty. S ohľadom na predtým uvedený kód v tabuľke môžete vypočítať hodnotu: TK.Total („Súčet“).

AT 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ť (,).

S ohľadom na predtým uvedený kód 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 Zoznam hodnôt z programového kódu, nemôžete len zavolať 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) pridajte:
ValueVFormData(TK, Tabuľka);

Generic Collection Tree of Values

všestranná 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á hierarchia.

Dá sa zobraziť 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é, potom pre každý riadok možno zadať rodiča, ako aj riadky, ktoré sú mu podriadené.

Vytvorme si príslušný stromový príkaz a postup jeho spracovania.

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

Vytvorte atribút 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 do formulára.

Na koniec Postupy TreeOnServer() pridať:

ValueVFormData(StromZn, DerZn);

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

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

Na iteráciu cez všetky prvky stromu hodnôt musíme použiť rekurziu, t.j. volanie procedúry od seba. Napríklad spracovanie stromu hodnôt môže vyzerať takto:

Týmto sa končí naše prvé predstavenie univerzálnych kolekcií.

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 slovníka z programového kódu.

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

Zoznam hodnôt je pole, ale s viacerými funkciami. 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ľ je všetko veľmi podobné poliu, však? Ale poďme ďalej. Aby sme teraz tieto čísla zobrazili používateľovi, napíšeme:

// Slučka cez každý prvok zoznamu Pre každý prvok zo zoznamu Slučka (Item.Value);

// zobrazenie hodnoty prvku EndCycle;

A tu je prvý rozdiel. Prvky bežného poľa sú samotné čísla. A prístup k aktuálnej hodnote prvku Zoznam dostaneme s opciou Význam, pomocou konštrukcie Prvok. Význam.

Zvážte niektoré ďalšie funkcie hodnoty.

Vie triediť

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

List.SortByValue(SortingDirection.Asc); V prípade obyčajného poľa by sme museli implementovať niektorý z triediacich algoritmov (napríklad „bublina“).

Vie hľadať

Zoznam hodnôt je schopný vyhľadávať svoje vlastné prvky. Povedzme, že chceme zistiť, či číslo zadané používateľom je v našom zozname:

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

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

OpenValue("Číslo " + Číslo + " je v zozname. Tu je:" + NájdenáPoložka.Hodnota);

Koniec Ak; Zoznam hodnôt

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ž 13 na koniec zoznamu Report(List[List.Count() - 1]);

// zobrazenie posledného prvku zoznamu (13)

Podporuje hranaté zátvorky

Ako ste už pochopili, číslovanie prvkov zoznamu tiež začína od nuly a na ľubovoľný prvok môžeme odkazovať jeho indexom pomocou hranatých zátvoriek:

Upozorniť(Zoznam.Hodnota); // odvodil druhý prvok zoznamu Takto môžeme prejsť cez všetky prvky zoznamu:

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

EndCycle;

Schopný vytvoriť kópiu

Zoznam hodnôt má len skvelú príležitosť – môže si vytvoriť svoju vlastnú 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;

Dá sa previesť na pole

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

ArrayNumbers = Zoznam. UnloadValues();

// uvoľnené do poľa

Pre A = 0 By ArrayNumbers.Quantity() - 1 slučka

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

EndCycle;

Na vypracovanie a upevnenie materiálu tejto jednotky sa odporúča vykonať 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 By 5 Číslo slučky = 0;

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

// triedenie zoznamu čísel

Zoznam. Triediť podľa hodnoty (Smer triedenia. Asc);

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

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