• 1c přidat prvky do seznamu

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

    ListValues

    Popis:

    Seznam hodnot je objekt, který není uložen v databázi, což vám umožňuje vytvářet dynamické sady hodnot pro řešení problémů s rozhraním a manipulovat s nimi (přidávat, upravovat, mazat prvky, třídit). Může být naplněn hodnotami libovolného typu, tzn. V jednom seznamu se mohou typy uložených hodnot lišit. Jedním příkladem použití tohoto objektu je organizace výběru konkrétního dokumentu ze seznamu možných dokumentů generovaných pomocí složitého algoritmu.

    Sbírkové předměty: ValueListElement

    Objekt je možné obejít sběr pomocí operátoru Pro každého... Od... Cyklus. Procházení vybere prvky kolekce.

    K prvku kolekce je možné přistupovat pomocí operátoru [...]. Index prvku je předán jako argument ( číslování od 0).

    Vlastnosti:

    Metody:

    Vložit (Index, Hodnota, Reprezentace, Štítek, Obrázek) Vloží nový prvek do seznamu hodnot na pozici na zadaném indexu.SelectElement (Title, Element) Vyvolá okno pro interaktivní výběr jednoho z prvků obsažených v seznamu hodnot. Živel- prvek, ke kterému by měl být seznam hodnot zpočátku umístěn během interaktivního výběru. Pokud hodnota parametru není prvkem seznamu hodnot, který je zahrnut v daném seznamu, nedojde k žádnému umístění.UnloadValues()Vytvoří pole a zkopíruje do něj hodnoty prvků seznamu hodnot.Add(Value, Representation, Label, Image)Přidá nový prvek na konec seznamu hodnot.LoadValues(ArrayValues)Načte seznam hodnot s hodnotami z předaného pole. V tomto případě budou odstraněny všechny předchozí prvky seznamu.Vyplňte Poznámky(Mark) Nastaví značku pro všechny prvky seznamu hodnot.Index(Element)Vrátí index prvku v seznamu hodnot. Pokud není nalezen, vrátí se -1.Count() Vrátí počet prvků v seznamu hodnot.FindByValue(SearchValue) Vyhledá hodnotu prvku v seznamu hodnot. Pokud žádný prvek neukládá hodnotu rovnou hledané hodnotě, je vrácena hodnota Nedefinováno. Najít podle ID(Identifier)Načte seznam hodnot prvku podle identifikátoru. Pokud prvek není nalezen, je vrácen Nedefinováno. MarkItems(Záhlaví) Nastaví nebo zruší (interaktivně) položky v seznamu hodnot. Návraty Skutečný, pokud je v dialogovém okně stisknuto tlačítko "OK", Lhát- v opačném případě.Clear() Vymaže seznam hodnot a odstraní z něj všechny prvky.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Vyvolá okno pro interaktivní výběr jednoho z prvků obsažených v seznamu hodnot.ShowMark položky(Popis závěrečných upozornění, záhlaví) Určeno pro interaktivní nastavení stavů značek pro prvky seznamu hodnot.Get(Index) Načte hodnotu podle indexu. Funguje podobně jako operátor.Shift (Element, Offset) Posune prvek seznamu hodnot dopředu nebo dozadu o zadaný počet pozic.Copy() Vytvoří kopii seznamu hodnot.SortByValue(Směr) Seřadí seznam hodnot ve vzestupném nebo sestupném pořadí hodnot uložených prvky. Viz příklad níže.SortByView(Směr) Seřadí seznam hodnot vzestupně nebo sestupně v abecedním pořadí podle znázornění prvků obsažených v seznamu hodnot. Viz příklad níže.Odebrat (prvek) Odebere prvek ze seznamu hodnot, kde Živel- index prvku, který má být odstraněn, nebo prvku samotného.

    Návrháři:

    Nový seznam hodnot
    &OnClient Postup ExecuteCode(Příkaz) /// Jak vytvořit seznam hodnot v 1s 8.3, 8.2 Seznam = Nový seznam hodnot; /// Jak přidat prvek do seznamu hodnot v 1s 8.3, 8.2 // přidat parametry metody:// - význam // - výkon // - značka (povinné) // - obrázek (povinný) Seznam. Přidat ( 1980, // hodnota prvku "Rok Vasyova narození"// výkon); Seznam. Přidat(1985, „Rok Juliina narození“) ; // hodnoty mohou být různého typu Seznam. Add("Polina" , "Jméno dítěte" ); /// Jak vložit prvek do seznamu hodnot v 1s 8.3, 8.2 // vložte na pozici č. 2 (prvky jsou číslovány od 0) // prvek s hodnotou 2010 a reprezentací // "Rok, kdy se narodila jejich společná dcera" Seznam. Vložit(2, 2010, "Rok, kdy se narodila jejich společná dcera") ; /// Jak obejít prvky seznamu hodnot v 1s 8.3, 8.2 Pro každý prvek ze seznamu Sestava smyčky( Element. Representation + ": " + String(Element. Value) ); EndCycle ; /// Jak vymazat seznam hodnot v 1s 8.3, 8.2 Seznam. Průhledná() ; Seznam. Add("pondělí"); Seznam. Add("úterý"); Seznam. Add("středa" ) ; /// Jak zjistit počet prvků seznamu hodnot a také /// získá prvek seznamu podle jeho indexu v 1s 8.3, 8.2 // číslování od začátku Pro Index = 0 Podle seznamu. Quantity() - 1 Cycle Report(List[Index]) ; EndCycle ; /// Jak najít prvek seznamu podle jeho hodnoty v 1s 8.3, 8.2 ValueTuesday = Seznam. FindByValue("úterý"); /// Jak zjistit index prvku v seznamu v 1s 8.3, 8.2 Report(List.Index(ValueTuesday)) ; // 1, protože číslování začíná od nuly /// Jak seřadit seznam podle jeho hodnot v 1s 8.3, 8.2 // bylo: pondělí, úterý, středa Seznam. SortByValue(SortDirection.Descending) ; // se stalo: středa, pondělí, úterý /// Jak odstranit prvek ze seznamu hodnot v 1s 8.3, 8.2 // odstranění prvního prvku // parametr: prvek seznamu // nebo index prvku// můžete udělat tento seznam. Smazat(Seznam[ 0]) ; // nebo tak // List.Delete(0); /// Jak posunout prvek seznamu hodnot v 1s 8.3, 8.2 // posun nulového prvku o jednu pozici dopředu // bylo: pondělí úterý Seznam. Move(0, 1); // se stalo: úterý pondělí /// Jak vytvořit kopii seznamu za 1s 8 ListCopy = Seznam. Kopírovat() ; Barvy = NewValueList; Barvy. Add("Červená"); Barvy. Add("Zelená" ) ; Barvy. Add("Modrá" ) ; /// Jak nahrát hodnoty seznamu do pole v 1s 8.3, 8.2 ArrayColors = Barvy. UnloadValues() ; /// Jak načíst hodnoty seznamu z pole v 1s 8.3, 8.2 Barvy. LoadValues(ArrayColors) ; Konec procedury /// Jak provést nemodální výběr hodnoty ze seznamu /// hodnoty v 1s 8,3, 8,2&Na proceduře klienta Jak vytvořit Non-ModalValueSelection(Command) Barvy = Nový ValueList; Barvy. Add("Červená"); Barvy. Add("Zelená" ) ; Barvy. Add("Modrá" ) ; // postup AfterSelectingElement je definován níže AlertAfterElementSelection = New DescriptionAlerts( "AfterElementSelection", ThisObject ); Barvy. ShowElementSelection( NotificationAfterElementSelection, "Vyberte si svou oblíbenou barvu"); Konec procedury &Na klientovi Procedura Po výběru prvku (prvku, parametrů) Export If Element<>Undefined Then Report(Element.Value) ; EndIf; Konec procedury /// Jak udělat nemodální označení hodnot ze seznamu /// hodnoty v 1s 8,3, 8,2&Na proceduře klienta Jak vytvořit nemodální označení hodnot (příkaz) Barvy = nový seznam hodnot; Barvy. Add("Červená"); Barvy. Add("Zelená" ) ; Barvy. Add("Modrá" ) ; // postup AfterMarkingElements je definován níže AlertAfterMarkingItems = New DescriptionAlerts( "Po označení položek", ThisObject ); Barvy. ShowTagItems( AlertAfterTagItems, "Vyberte si své oblíbené barvy"); Barvy. FillNotes(True) ; Konec procedury &Na klientovi Procedura po označení prvků (prvků, parametrů) Export If prvky<>Nedefinováno Pak pro každou barvu z prvků Cyklus If Color. Mark Then Report(Color.Value) ; EndIf; EndCycle ; EndIf; Konec procedury /// Jak provést modální výběr hodnoty ze seznamu v 1s 8.3, 8.2&Na klientské proceduře Jak vytvořit ModalValueSelection(Command) Barvy = Nový ValueList; Barvy. Add("Červená"); Barvy. Add("Zelená" ) ; Barvy. Add("Modrá" ) ; SelectColor = Barvy. Vybrat předmět( "Vyberte si svou oblíbenou barvu"); Pokud SelectColor<>Undefined Then Report(SelectColor.Value) ; EndIf; Konec procedury /// Jak modálně označit hodnoty ze seznamu /// hodnoty v 1s 8,3, 8,2&Na proceduře klienta Jak vytvořit modální značku hodnot ​​(příkaz) Barvy = nový seznam hodnot; Barvy. Add("Červená"); Barvy. Add("Zelená" ) ; Barvy. Add("Modrá" ) ; Pokud Barvy. MarkItems( "Vyberte si své oblíbené barvy") Potom pro každou barvu z barevného cyklu Pokud barva. Mark Then Report(Color.Value) ; EndIf; EndCycle ; EndIf; // takto můžete nastavit všechny značky najednou // seznam na konkrétní hodnotu Barvy. FillNotes(True) ; Konec procedury /// Stáhněte a spusťte tyto příklady na svém počítači

    V tomto celku se seznámíme s novým datovým typem jazyka 1C, který je tzv ListValues.

    Seznam hodnot je pole, ale s velkými schopnostmi. A pokud ano, pak je to také sbírka dat a můžete do ní vložit sadu čísel:

    // vytvořil seznam hodnot

    List.Add(23);

    Zatím vše vypadá hodně jako pole, že? Ale pojďme dál. Abychom nyní tato čísla zobrazili uživateli, napíšeme:

    // procházet každý prvek seznamu For Each Element From List Loop Report(Element.Value);

    // zobrazení hodnoty prvku EndCycle;

    A zde je první rozdíl. Prvky pravidelného pole jsou samotná čísla. A přístup k aktuální hodnotě prvku Seznam využíváme možnosti Význam, pomocí konstrukce Živel. Význam.

    Podívejme se na některé další funkce Hodnoty.

    Umí třídit

    Snadno můžeme seřadit například seznam hodnot. Seznam to umí sám:

    List.SortByValue(SortDirection.Age); V případě běžného pole bychom museli implementovat některý z třídicích algoritmů (například „bublina“).

    Umí vyhledávat

    Seznam hodnot může své prvky hledat sám. Řekněme, že chceme zjistit, zda se číslo zadané uživatelem nachází v našem seznamu:

    EnterNumber(Number); // zadáno číslo od uživatele FoundElement = List. FindByValue(Číslo);

    If FoundItem = Undefined Then OpenValue("Číslo " + Číslo + "nenalezeno v seznamu!"); v opačném případě

    OpenValue("Číslo " + Číslo + " je v seznamu. Zde je:" + FoundElement.Value);

    endIf; ListValues

    Podporuje vkládání a mazání

    Seznam hodnot, jako je pole, podporuje vkládání a odebírání prvků:

    Seznam. Vložit(0, 1000);

    // vloží tisíc na úplný začátek seznamu List.Delete(O); // a okamžitě jej odeberte ze seznamu List. Vložit(Seznam.Množství(), 13);

    // vložení 13 na konec seznamu Report(List[List.Quantity() - 1]);

    // zobrazení posledního prvku seznamu (13)

    Podporuje hranaté závorky

    Jak jste již pochopili, číslování prvků seznamu také začíná od nuly a k libovolnému prvku můžeme přistupovat podle jeho indexu pomocí hranatých závorek:

    Report(List.Value); // zobrazení druhého prvku seznamu Můžeme tedy projít všechny prvky seznamu takto:

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

    EndCycle;

    Dokáže vytvořit kopii sebe sama

    Seznam hodnot má prostě skvělou vlastnost - může vytvořit kopii sebe sama:

    ListCopy = List.Copy();

    // vytvořil kopii seznamu // nyní můžeme bezpečně změnit kopii seznamu //, zatímco původní seznam nezmění kopii seznamu. Hodnota = 123456;

    Může se proměnit v pole

    A nakonec můžete kdykoli snadno vypsat všechny prvky seznamu do pole:

    ArrayNumbers = Seznam. UnloadValues();

    // vypsáno do pole

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

    Zpráva(Čísla pole[A]); // není třeba zadávat // volbu Hodnota

    EndCycle;

    Pro procvičení a upevnění látky této jednotky se doporučuje splnit následující úkol.

    Je potřeba zadat 5 čísel od uživatele, najít největší a nejmenší z nich a zobrazit je uživateli. Řešení musí používat seznam hodnot.

    Řešení

    Seznam = Nový seznam hodnot;

    // vytvořil seznam hodnot Pro A = 1 až 5 Číslo cyklu = 0;

    EnterNumber(Number); // zadejte číslo od uživatele List.Add(Number); // a přidejte jej do seznamu EndCycle; // a tak dále 5x

    // řazení seznamu čísel

    Seznam. Sort ByValue(SortDirection.Age);

    // po seřazení je první prvek seznamu // nejmenší prvek a poslední je největší OpenValue("Smallest element" + List +

    ", a největší " + List[List.Quantity() - 1]);

    O čem je tento článek?

    Tento článek pokračuje v sérii článků „První kroky ve vývoji 1C“. Pokrývá principy práce s univerzálními kolekcemi. Po přečtení článku se dozvíte:

    • Co jsou univerzální kolekce a kdy a v jakých případech by měly být použity?
    • Co mají všechny univerzální kolekce společného? Jaké techniky můžete použít pro práci se všemi z nich?
    • Co je pole, jak a kdy jej používat? Jaké má metody?
    • Proč používat strukturu? Jak se liší od pole?
    • Kdy byste měli použít seznam hodnot? Jak to zobrazit ve formuláři?
    • Compliance – co to je a kdy to použít? Jaké jsou výhody struktury?
    • K čemu slouží tabulka hodnot? Jak popsat jeho strukturu? Jak přidat/odebrat řádky? Jak to zobrazit ve formuláři?
    • Strom hodnot - k čemu slouží? Jak vyplnit a zobrazit formulář? Jak s tím pracovat?

    Použitelnost

    Článek pojednává o platformě 1C:Enterprise 8.3 aktuálního vydání.

    Jak pracovat s univerzálními kolekcemi v 1C

    Kolekce hodnot je kontejner, který může obvykle obsahovat libovolný počet prvků. Často však neexistují žádná přísná omezení typu dat.

    Do obecné kolekce můžete přidat hodnoty. Všechny hodnoty v kolekci lze procházet. Tyto kolekce se používají hlavně pro nějaký druh zpracování v algoritmech. Tito. Toto jsou některé dynamické struktury, které existují, když je algoritmus spuštěn.

    Je důležité pochopit, že kolekce nejsou uloženy v databázi (nemluvíme o datovém typu Value Store, který může ukládat téměř jakýkoli typ dat).

    Existují různé typy univerzálních kolekcí: Array, Structure, Match, Fixed Array, Value Table, Table Part atd. Ale všechny kolekce mají podobné chování.

    Kolekce může být vytvořena jako výsledek operace funkce (funkce vrací univerzální kolekci jako hodnotu).

    Novou kolekci můžete získat ručně voláním konstruktoru a vytvořením instance třídy.

    Například: OurArray = Nové pole;

    Konstruktory pro mnoho obecných kolekcí jsou parametrizovány.

    Takže v konstruktoru pro Můžete zadat počet členů v odpovídajících rozměrech. Tito. můžete okamžitě prohlásit multidimenzionální .

    Odpovídající popis konstruktoru je v asistentovi syntaxe.

    Pomocí parametrů konstruktoru tedy můžete okamžitě nastavit požadované chování daného objektu.

    Parametry jsou ale volitelné, vývojář je nemůže nastavit a dále definovat chování pole, jak uzná za vhodné.

    Pomocí konstruktoru lze vytvořit téměř jakoukoli univerzální kolekci (výjimkou jsou části tabulky, které fungují jako konfigurační objekty).

    Pro univerzální kolekce existují běžné pojmy jako index a číslo. Každý prvek kolekce má index. V tomto případě index začíná od nuly.

    Pro přístup k prvku OurArray, můžete použít přístup k indexu, k tomu je index uveden v hranatých závorkách.

    Například, OurArray. Upozorňujeme, že v tomto případě systém vrací prvek Array s indexem 3 a v pořadí se jedná o čtvrtý prvek Array.

    U některých sbírek existuje také pojem číslo řádku. Číslo řádku začíná jedničkou. Například pro tabulkovou část existuje vlastnost jako číslo řádku. Je důležité mít na paměti, že pokud známe číslo řádku a chceme k němu přistupovat podle indexu, měli bychom jako index použít hodnotu o jednu menší, než je číslo řádku.

    Pojem číslo řádku neexistuje ve všech kolekcích, ale hlavně v těch, které lze zobrazit v uživatelském rozhraní.

    Všechny kolekce používají procházení prvků kolekce. Přemostění je možné dvěma způsoby: cyklus Pro A cyklus Pro každý z.

    Pro většinu obecných kolekcí jsou použitelné metody Count, Index, Add, Insert, Delete a Find.

    Count je funkce, která vrací počet prvků v kolekci. Může být použit před cyklem Pro, jak je znázorněno na obrázku.

    Metoda Index neexistuje pro všechny kolekce, ale pouze pro ty, na jejichž prvky lze odkazovat. Příkladem je Tabulka hodnot.

    Tabulka hodnot– jedná se o specifickou kolekci řádků; řádky mohou obsahovat různé sloupce s různými typy hodnot.

    Každý řádek představuje nezávislou entitu. Můžete na něj získat odkaz, přes tento řádek se dostanete k hodnotám sloupců v tomto řádku.

    Metoda Index umožňuje určit, který index odpovídá danému řádku (tedy aktuální pozici řádku v tabulce). Hodnoty indexu začínají na nule.

    Téměř každá univerzální kolekce má metody pro přidávání nových hodnot do dané kolekce. Obrázek ukazuje, jak vyplnit pole hodnotami od 0 do 10 dvěma způsoby.

    K přidání prvku do pole můžeme použít metodu Přidat, uveďte hodnotu, která má být přidána v závorkách. V tomto případě bude hodnota přidána na konec seznamu, tzn. Pole se bude neustále zvětšovat kvůli poslední pozici.

    Další metodou, která umožňuje přidávat hodnoty do kolekce, je Vložit. Liší se od metody Přidat v tom můžete určit, kam vložit přidaný prvek.

    Syntax: Vložit (,)

    První parametr určuje index, do kterého bude vložena nová hodnota. Tito. můžeme například určit, že každá hodnota má být vložena na začátek seznamu (druhá metoda na obrázku výše).

    Chcete-li odebrat prvky z kolekce, použijte metodu Vymazat. Metoda Delete určuje indexem, který prvek smažeme.

    Syntax: Vymazat()
    Příklad použití: OurArray.Delete(5);

    Je třeba poznamenat, že u těch kolekcí, kde řetězce představují nezávislou entitu (například pro Tabulky hodnot), můžeme také použít metodu získání indexu, abychom tento řádek později smazali.

    Téměř všechny sbírky mají metodu pro hledání hodnoty - Nalézt. Hodnota, kterou chceme najít, je předána metodě. Některé kolekce umožňují nastavit určitá omezení.

    Například v Tabulka hodnot můžete určit řádky a sloupce, ve kterých chcete hledat.

    Pokud je hodnota nalezena, tato metoda vrátí index nebo zadaný řetězec. Pokud hodnota není nalezena, je vrácena hodnota typu Nedefinováno. Ve vztahu k poli se vrací Index nebo hodnotu Nedefinováno.

    Příklad použití: OurVariable = OurArray.Find(8);

    Univerzální sbírky lze velmi rychle vyčistit, tzn. odstranit úplně všechny prvky. K tomuto účelu se používá metoda Průhledná(), který odstraní prvky Array, řádky Tabulky hodnot nebo data z jiných sbírek.

    Další metody pro Array

    Metoda B Border() vrátí počet prvků mínus jeden. Tito. pokud použijeme smyčku Pro, pak místo metody Množství můžeme rovnou použít metodu Okraj().

    Zejména proměnná QuantityInArray by mohla být definována odlišně:

    QuantityInArray = OurArray.InBorder();
    Při popisu samotného cyklu by se pak nemělo od této proměnné odečítat.

    Metoda Set umožňuje přiřadit hodnotu prvku Array pomocí indexu.

    Syntax: Nainstalujte(,)

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

    Alternativní možnost: OurArray = 8;

    Metodu můžete použít pro pole Dostat, pro čtení hodnoty v indexu bez použití hranatých závorek.

    Syntax: Dostat()

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

    Alternativní možnost: OurVariable = OurArray;

    Univerzální struktura kolekce

    Struktura, stejně jako pole, může mít neomezený počet prvků, ale obsah prvku se od pole liší.

    Struktura je kolekce, jejíž každá hodnota se skládá z páru. První prvek z dvojice se nazývá Klíč. Druhým prvkem páru je Význam.

    Klíč je striktně řetězcový datový typ, který popisuje hodnotu. Například, Ke klíči"Kód" může odpovídat hodnotě 113; Ke klíči„Jméno“ znamená „Vasya“. Samotná hodnota nepodléhá omezení datového typu.

    Strukturu je velmi vhodné použít, pokud chceme vytvořit určitý seznam parametrů. Pokud tohle Struktura volal NašeStruktura, pak budeme odkazovat na jeho dvě hodnoty takto: OurStructure.Code a OurStructure.Name.

    Tento druh přístupu je mnohem pohodlnější, než kdybychom definovali všechny parametry v poli a přistupovali k nim pomocí indexu.

    Struktura činí programový kód čitelným (srozumitelným). Struktura se používá poměrně často, mnohem častěji než Array.

    Používá se k popisu určitých parametrů, kterých je ve všech algoritmech často poměrně velké množství.

    Kromě toho se Struktura používá, pokud procedura a funkce obsahují velké množství předávaných parametrů.

    Pak je mnohem pohodlnější zapsat všechny parametry do Struktury a předat ji dál. Tito. parametry procedur a funkcí jsou „nabaleny“.

    Samostatně je třeba poznamenat, že jako Klíč Ve struktuře se nemůže objevit žádná čára. Platí určitá omezení.

    Klíč by měl fungovat jako identifikátor. To znamená, že v Klyuche nesmí obsahovat mezery a nesmí začínat číslem.

    Přijatelný začátek Klíč s písmenem nebo podtržítkem. Tím pádem, Klíč musí splňovat požadavky na vytváření identifikátorů.

    Všimněme si, jak se ještě struktura liší od pole. Ve Strukturě je metoda Vložit, existují dva způsoby vložení do pole: Vložit(do určité polohy) a Přidat(na konec seznamu). V poli jsou všechny prvky seřazeny.

    Struktura je jakousi neuspořádanou množinou. To je důvod, proč existuje pouze metoda vkládání pro strukturu.

    Hodnota se nevloží na konkrétní pozici, ale do zadané množiny. Ke struktuře nelze přistupovat pomocí indexu, jako k jiným obecným kolekcím.

    Prvky struktury jsou přístupné pouze pomocí názvu klíče. Smyčka For Each však funguje i pro Strukturu, ale neměli byste spoléhat na pořadí prvků Struktury.

    Struktura je vytvořena stejným způsobem jako ostatní generické kolekce pomocí konstruktoru New s uvedením datového typu Structure.

    Stejně jako pole může mít konstruktor struktury parametry. Tito. je možné popsat samotný obsah Struktury pomocí konstruktoru.

    Na rozdíl od pole, kde můžete jednoduše zadat počet prvků pro všechny rozměry, ve struktuře můžete určit samotný obsah.

    Například: OurStructure = Nová struktura („Kód, jméno“, 133, „Vasya“);

    Nejprve jsou uvedeny názvy klíčů oddělené čárkami a poté ve stejném pořadí hodnoty parametrů.

    Existuje metoda, jak do struktury přidat novou hodnotu Vložit, který vloží nový pár (Klíč a Hodnota).

    Například: OurStructure.Insert(“Členové rodiny”,3);

    Struktura se vyznačuje další metodou, která se používá poměrně často. Toto je metoda Vlastnictví.

    Pomocí této metody můžete pochopit, zda v této struktuře existuje prvek, jehož klíč má takové a takové jméno.

    Pokud takový prvek existuje, systém vrátí hodnotu True, jinak – False.

    Například výraz OurStructure.Property („Členové rodiny“) se bude rovnat hodnotě True. Tato metoda se při analýze struktury používá poměrně často.

    Jako u každé univerzální kolekce je možné přistupovat k vlastnostem struktury pomocí indexu. Ale index pro strukturu je řetězcová hodnota.

    Například: Zpráva (Naše struktura[“Členové rodiny”]);

    Neměli bychom však zapomínat, že struktura je neuspořádaná množina objektů, a proto je přístup pomocí indexu 0, 1, 2 nepřijatelný.

    Obecná kolekce Seznam hodnot

    ListValues je lineární seznam prvků libovolného datového typu.

    Každý prvek se skládá z několika hodnot. Schematicky lze seznam hodnot reprezentovat jako seznam se čtyřmi sloupci.

    První sloupec - Označit. Má datový typ Boolean a umožňuje uživateli buď zaškrtnout, nebo zrušit zaškrtnutí políček.

    Druhý sloupec je obrázek, který může tento prvek nějak vizuálně reprezentovat, tzn. spojte tento řetězec s obrázkem.

    Třetí sloupec je samotná uložená hodnota, tzn. toto je jakýkoli typ dat a může se lišit v různých řádcích.

    Čtvrtým sloupcem je prezentace, tzn. toto je druh řetězcového popisu dané hodnoty. Pohled se uživateli zobrazí při zobrazení tohoto prvku. V tomto případě, pokud reprezentace není specifikována, systém se pokusí získat reprezentace pro prvek obsažený v této pozici.

    ListValues– jedná se o objekt, se kterým může uživatel vizuálně pracovat. Tito. ListValues lze zobrazit ve formuláři.

    Uživatel s ním může provádět některé akce. Kromě, ListValues mohou být odvozeny nezávisle pomocí metod, tzn. zobrazit na obrazovce v některé větvi algoritmu (s výjimkou kódu serveru), takže uživatel vybere nějaký řádek nebo zaškrtne některá políčka.

    najdeme ListValues v sitax asistentovi. Konstruktér ListValues není parametrizován (nelze nastavit žádné výchozí hodnoty).

    Existují metody jako:

    • Vložit(,) ;
    • Přidat(,);
    • Množství();
    • Index().

    Existují i ​​speciální metody, např. UnloadValues(). Tím se vytvoří pole, do kterého se zkopíruje seznam hodnot. Například:

    Pole prvků = Seznam cenových typů.OutloadValues();

    Existuje také obrácená metoda:
    ListPriceTypes.LoadValues(ArrayItems);

    Existují metody vyhledávání:
    FindByValue(); FindByIdentifier().

    Existuje metoda kopírování:
    ListCopy = PriceTypeList.Copy();
    Tato metoda je určena k provedení určité úpravy kopie.

    Existují metody:
    SortByValue();
    SortByView().

    Metody Vybrat předmět(,) A MarkItems() vyvolejte modální dialogové okno, které zastaví provádění algoritmu, dokud uživatel nezavře okno.

    Chcete-li použít tyto metody ve vlastnostech konfigurace Způsob použití modality musí být nastaveno na Použití.

    Příklad kódu volaného z modulu Managed Application:

    Zobrazte tento kód v uživatelském režimu (modální dialog).

    Níže ListValues používá se jako dostupný datový typ pro atributy formuláře. Vytvoříme nový atribut pro formulář zpracování a definujeme jeho typ ListValues a zobrazí se ve formuláři.

    Vytvoření nového týmu Vyplňte dárky, přeneste jej do formuláře a definujte pro něj obsluhu akce.

    V uživatelském režimu se po kliknutí na tlačítko Vyplnit dárky ve formuláři pro zpracování zobrazí vyplněný seznam.

    V případě potřeby lze seznam upravit: některé prvky lze přidat, některé odebrat.

    Shoda s všestrannou kolekcí

    Tato kolekce je velmi podobná Struktura. Stejně jako struktura jsou mapování sady hodnot, které se skládají z klíče a samotné hodnoty.

    Hlavním rozdílem je, že jakýkoli datový typ lze zadat jako klíč i jako hodnotu. Vzhledem k této funkci je nutné přistupovat k hodnotě shody podle indexu, hodnota klíče je označena jako hodnota indexu.

    Klíčem může být jiný datový typ než řetězec. Vlastnosti a metody práce s Compliance jsou téměř stejné jako u Structure.

    Konstruktor souladu, na rozdíl od struktury, neobsahuje možnost specifikovat parametry.

    Příklad použití:

    Korespondence je vhodné použít, když potřebujete propojit libovolné dvě struktury. Například každý řádek v tabulkové části musí odpovídat řádku z tabulky hodnot.
    V tomto případě je řádek sekce tabulky použit jako klíč Match a je uvedena odpovídající hodnota.

    Při vkládání prvků do kolekce Match kromě metody Vložit(,) Dalším způsobem vložení hodnoty je použití běžného operátoru přiřazení.

    Například: OurMatch = NewMatch;
    Shoda = 999;

    Tito. pokud prvek nebyl v kolekci přítomen, bude přidán pomocí operátoru přiřazení, a pokud byl přítomen, bude aktualizován.

    To je na rozdíl od Structure.

    Tabulka hodnot univerzální kolekce

    Tabulka hodnot je tabulka s libovolným počtem řádků a libovolným počtem sloupců. Průsečík může ukládat hodnoty libovolného datového typu. V případě potřeby lze sloupce zadávat, tj. můžete určit, ve kterém sloupci je uložen jaký typ dat.

    Sloupce můžete nechat nezadané, hodnoty různých typů pak mohou být uloženy v jednom sloupci v různých řádcích.

    Rozdíly Tabulky hodnot z dvourozměrného pole:

    • jedná se o objekt, se kterým může uživatel pracovat (tabulku hodnot lze zobrazit na obrazovce, uživatel ji může vyplnit a zadaná data pak číst);
    • vytváření indexů pro rychlé vyhledávání;
    • klonování, vyplnění celého sloupce určitou hodnotou, nahrání všech sloupců do pole.

    Tabulka hodnot používá se jako druh vyrovnávací paměti pro ukládání informací. Tabulka hodnot je vrácen a přijat jako parametr mnoha systémovými metodami. Je možné sestavit dotaz podle tabulky hodnot.

    Tak, Tabulka hodnot se skládá ze sady řádků a sady sloupců. Řádky i sloupce jsou kolekce.

    Tito. uvnitř sbírky Tabulka hodnot jsou další dvě sbírky. Pojďme se obrátit na asistenta syntaxe a najít Tabulka hodnot.

    Podporované datové typy: samotný Tabulka hodnot, který se skládá ze strun. Každý řádek je reprezentován datovým typem RowTableValues, který má své vlastnosti a své vlastní metody. Dostupný Kolekce hodnot sloupců tabulky má také určité vlastnosti.

    Důležitý bod! Postup, který vytváří Tabulka hodnot, musí zkompilovat &OnServer.

    Než začnete pracovat s Tabulka hodnot, je třeba určit, jaké sloupce bude obsahovat (tj. vytvořit je). Syntax:

    Přidat(,)
    (volitelný)
    Typ: Řetězec.
    (volitelný)
    Typ: PopisTypy
    (volitelný)
    Typ: Řetězec.
    (volitelný)
    Typ: Číslo.

    Například:

    K volání této procedury použijeme příkaz.

    V popisu Tabulky hodnot prvky kolekce jsou precizní RowsTableValues.

    Na rozdíl od sloupců, které se skládají pouze z vlastností (Název, Typ, Nadpis, Šířka), v RowTableValues Existují jak vlastnosti (přístup podle názvu sloupce), tak metody (můžete získat a nastavit hodnotu, pracovat s vlastníky).

    Chcete-li přidat nový řádek do tabulky, musíte použít metodu buď Přidat() nebo Vložit(). Ve druhém případě byste měli uvést, na jakou pozici má být požadovaný řádek umístěn.

    Pro přiřazení hodnoty sloupci používáme tečku pro přístup k názvu nebo indexu sloupce (pomocí hranatých závorek).

    Pro plnění Tabulky hodnot Lze použít následující metody:

    Průhledná()– pro odstranění všech řádků Tabulky hodnot.

    FillValues(,)– umožňuje vyplnit všechny sloupce nebo vybrané sloupce jednou hodnotou.
    LoadColumn(,)– načte sloupec z pole.
    UnloadColumn()– uvolní sloupec do pole.

    Poslední dvě metody jsou vhodné k použití, když potřebujete přenést sloupec z jedné tabulky hodnot do druhé.

    Kopírovat(,)– umožňuje vytvořit novou na základě existující tabulky Tabulka hodnot, a ne všechny řádky a všechny sloupce, ale jen některé z nich. Návratová hodnota – Tabulka hodnot.

    Strukturu můžete zkopírovat Tabulky hodnot. K tomu existuje odpovídající metoda CopyColumns(). Dostaneme prázdnou Tabulka hodnot s požadovanou strukturou.

    V Tabulka hodnot existuje metoda Celkový(). Můžete určit sloupec, ve kterém chcete sčítat číselné hodnoty. Ve vztahu k dříve uvedenému kódu v tabulce můžete vypočítat hodnotu: TK.Celkem („Částka“).

    V Tabulka hodnot pomocí metody je možné seskupovat (sbalit) číselné hodnoty podle stejných hodnot určitých sloupců Kolaps(,).

    Ve vztahu k dříve uvedenému kódu v tabulce můžete vypočítat hodnotu: TK.Collapse („Den v týdnu“, „Částka“).

    Tabulka hodnot lze zobrazit na uživatelské obrazovce, abyste s ním mohli provádět jakékoli akce. Ale na rozdíl od ListValues Nemůžete jen vyvolat tabulku na obrazovce z programového kódu.

    Zobrazit Tabulka hodnot na obrazovce vytvořte atribut formuláře a přiřaďte mu datový typ Tabulka hodnot.

    Poté by se výsledná tabulka měla zobrazit na formuláři.

    V modulu formuláře na konci dříve zkompilovaného algoritmu (v Proceduře vytváření tabulky hodnot) byste měli přidat:
    ValueInFormData(TK, Tabulka);

    Univerzální kolekce Strom hodnot

    univerzální kolekce, která je velmi podobná Tabulka hodnot. Rozdíl oproti tabulce je v tom, že řádky stromu si mohou být navzájem podřízené, tzn. může být vytvořena určitá hierarchie.

    To se může projevit i na obrazovce. Strom hodnot se explicitně skládá z kolekce řádků a kolekce sloupců. Ve stromu jsou dvě vlastnosti: Řádky a Sloupce.

    Vzhledem k tomu, že řádky mohou být vzájemně podřízené, každý řádek může mít nadřazeného a také jeho podřízené řádky.

    Vytvořme odpovídající příkaz Strom a postup jeho zpracování.

    Pojďme tvořit ve kterém je jeden nadřazený řádek a dva podřízené řádky.

    Pojďme vytvořit atributy formuláře DerZn(datový typ – Strom hodnot).

    Pro tento atribut vytvoříme sloupce Rok a Měsíc.

    Přesuňte odpovídající prvek DerZn na formuláři.

    Na konci Postupy TreeOnServer() dodejme:

    ValueInFormData(TreeZn, DerZn);

    Podívejme se, co se stalo v uživatelském režimu.

    Pomocí tlačítka Přidat můžete přidat nové řádky. Mohou také tvořit hierarchii.

    Pro procházení všech prvků hodnotového stromu budeme muset použít rekurzi, tzn. volání procedury ze sebe. Například zpracování stromu hodnot může vypadat takto:

    Tím naše první seznámení s univerzálními kolekcemi končí.

    V příštím článku se podíváme na to, jaký důležitý mechanismus může vývojář použít ke zjednodušení přístupu k prvku adresáře z programového kódu.