1s 8 seznam vrednosti s seznama

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

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

// ustvarili seznam vrednosti

Seznam.Dodaj(23);

Zaenkrat je vse videti kot niz, kajne? Ampak pojdimo naprej. Za prikaz teh številk uporabniku zapišemo:

// zanka skozi vsak element seznama za vsak element s seznama Loop Report(Element.Value);

// prikaz vrednosti elementa EndCycle;

In tukaj je prva razlika. Elementi pravilne matrike so sama števila. In dostop do trenutne vrednosti elementa Seznam uporabimo možnost Pomen, z uporabo konstrukcije Element. Pomen.

Oglejmo si nekaj dodatnih funkcij Vrednote.

Lahko razvršča

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

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

Lahko išče

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

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

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

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

endIf; ListValues

Podpira vstavljanje in brisanje

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

Seznam. Vstavi (0, 1000);

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

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

// prikaz zadnjega elementa seznama (13)

Podpira oglate oklepaje

Kot ste že razumeli, se tudi številčenje elementov seznama začne od nič, do katerega koli elementa pa lahko dostopamo po njegovem indeksu z oglatimi oklepaji:

Poročilo(List.Value); // prikaz drugega elementa seznama Tako lahko gremo skozi vse elemente seznama takole:

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

EndCycle;

Lahko ustvari kopijo samega sebe

Seznam vrednosti ima samo odlično funkcijo - lahko ustvari kopijo samega sebe:

ListCopy = List.Copy();

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

Lahko se spremeni v niz

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

ArrayNumbers = seznam. UnloadValues();

// vrženo v matriko

Za A = 0 z ArrayNumber.Quantity() - 1 cikel

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

EndCycle;

Za vajo in utrjevanje gradiva te enote priporočamo, da opravite naslednjo nalogo.

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

rešitev

Seznam = Nov seznam vrednosti;

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

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

// razvrsti seznam številk

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

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

", in največji " + Seznam[Seznam.Količina() - 1]);

O čem govori ta članek?

Ta članek nadaljuje serijo člankov "Prvi koraki v razvoju 1C." Zajema principe dela z univerzalnimi zbirkami. Po branju članka se boste naučili:

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

Uporabnost

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

Kako delati z univerzalnimi zbirkami v 1C

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

Splošni zbirki lahko dodate vrednosti. Vse vrednosti v zbirki je mogoče prečkati. Te zbirke se uporabljajo predvsem za nekakšno obdelavo v algoritmih. Tisti. To je nekaj dinamičnih struktur, ki obstajajo med izvajanjem algoritma.

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

Obstajajo različne vrste generičnih zbirk: matrika, struktura, ujemanje, fiksna matrika, tabela vrednosti, Tabelarni del itd. Toda vse zbirke imajo podobno obnašanje.

Zbirka se lahko ustvari kot rezultat delovanja funkcije (funkcija vrne univerzalno zbirko kot vrednost).

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

Na primer: OurArray = Nova matrika;

Konstruktorji za številne generične zbirke so parametrirani.

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

Ustrezen opis konstruktorja je v pomočniku za sintakso.

Tako lahko z uporabo parametrov konstruktorja takoj nastavite želeno vedenje tega predmeta.

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

Skoraj vsako univerzalno zbirko je mogoče ustvariti s konstruktorjem (izjema so deli tabele, ki delujejo kot konfiguracijski objekti).

Za univerzalne zbirke obstajajo takšne splošni pojmi, kot sta indeks in številka. Vsak element zbirke ima indeks. V tem primeru se indeks začne od nič.

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

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

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

Koncept številke vrstice ne obstaja v vseh zbirkah, ampak predvsem v tistih, ki jih je mogoče prikazati v uporabniškem vmesniku.

Vse zbirke uporabljajo prečkanje elementov zbirke. Obvoz je možen na dva načina: cikel Za in cikel Za vsako od.

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

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

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

Tabela vrednosti– to je posebna zbirka vrstic; vrstice lahko vsebujejo različne stolpce z različnimi vrstami vrednosti.

Vsaka vrstica predstavlja neodvisno entiteto. Lahko dobite povezavo do njega; prek te vrstice lahko dostopate do vrednosti stolpcev v tej vrstici.

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

Metode za dodajanje novih vrednosti v to zbirko obstajajo v skoraj vseh univerzalna zbirka. Slika prikazuje, kako zapolniti matriko z vrednostmi od 0 do 10 na dva načina.

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

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

Sintaksa: Vstavi (,)

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

Če želite odstraniti elemente iz zbirke, uporabite metodo Izbriši. Metoda Delete z indeksom določa, kateri element bomo izbrisali.

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

Upoštevati je treba, da pri tistih zbirkah, kjer nizi predstavljajo neodvisno entiteto (na primer for Tabele vrednosti), lahko uporabimo tudi metodo pridobivanja indeksa, da pozneje izbrišemo to vrstico.

Skoraj vse zbirke imajo metodo za iskanje vrednosti - Najti. Vrednost, ki jo želimo najti, se posreduje metodi. Nekatere zbirke vam omogočajo nastavitev nekaterih omejitev.

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

Če je vrednost najdena, potem ta metoda vrne indeks ali podani niz. Če vrednost ni najdena, je vrnjena vrednost vrste Nedoločeno. V zvezi z matriko vrne Kazalo, ali vrednost Nedoločeno.

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

Univerzalne zbirke je mogoče zelo hitro očistiti, tj. odstranite popolnoma vse elemente. V ta namen se uporablja metoda Počisti(), ki odstrani elemente Array, vrstice Tabele vrednosti, ali podatke iz drugih zbirk.

Dodatne metode za Array

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

Zlasti spremenljivko QuantityInArray bi lahko definirali drugače:

KoličinaInArray = NašaMatrika.InBorder();
Potem pri opisu samega cikla od te spremenljivke ne bi smeli odšteti.

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

Sintaksa: Namesti(,)

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

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

Metodo lahko uporabite za matriko Dobiti, za branje vrednosti v indeksu brez uporabe oglatih oklepajev.

Sintaksa: Get()

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

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

Univerzalna zbirka Struktura

Struktura, tako kot niz, ima lahko neomejeno količino elementov, vendar se vsebina elementa razlikuje od matrike.

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

Ključ- to je strogo vrsto niza podatke, ki opisujejo vrednost. na primer K ključu"Koda" lahko ustreza vrednosti 113; K ključu"Ime" pomeni "Vasya". Sama vrednost ni predmet omejitve vrste podatkov.

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

Ta vrsta dostopa je veliko bolj priročna, kot če bi definirali vse parametre v polju in do njih dostopali po indeksu.

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

Uporablja se za opis določenih parametrov, ki jih je v vseh algoritmih pogosto precej veliko.

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

Potem je veliko bolj priročno zapisati vse parametre v strukturo in jo posredovati naprej. Tisti. parametri postopkov in funkcij so “zapakirani”.

Ločeno je treba opozoriti, da kot Ključ V strukturi se ne sme pojaviti nobena črta. Veljajo določene omejitve.

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

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

Oglejmo si, v čem se sicer struktura razlikuje od matrike. V strukturi je metoda Vstavi, obstajata dva načina za vstavljanje v Array: Vstavi(na določen položaj) in Dodaj(do konca seznama). V matriki so vsi elementi urejeni.

Struktura je nekakšen neurejen niz. Zato obstaja samo metoda vstavljanja za strukturo.

Vrednost ni vstavljena na določeno mesto, ampak v podani niz. Do strukture ni mogoče dostopati z indeksom, tako kot do drugih generičnih zbirk.

Elementi strukture so dostopni samo z imenom ključa. Vendar pa zanka Za vsak deluje tudi za strukturo, vendar se ne smete zanašati na vrstni red elementov strukture.

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

Tako kot polje ima lahko tudi konstruktor strukture parametre. Tisti. z uporabo konstruktorja je mogoče opisati samo vsebino strukture.

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

Na primer: OurStructure = Nova struktura (»Koda, ime«, 133, »Vasya«);

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

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

Na primer: OurStructure.Insert(“FamilyMembers”,3);

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

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

Če tak element obstaja, bo sistem vrnil vrednost True, v nasprotnem primeru – False.

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

Kot pri kateri koli univerzalni zbirki je možno dostopati do lastnosti strukture z indeksom. Toda indeks za strukturo je vrednost niza.

Na primer: Poročilo (Naša struktura [“Družinski člani”]);

Ne smemo pa pozabiti, da je Struktura neurejena množica objektov, zato je dostop z indeksom 0, 1, 2 nesprejemljiv.

Generična zbirka Seznam vrednosti

ListValues je linearni seznam elementov katerega koli podatkovnega tipa.

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

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

Drugi stolpec je slika, ki lahko nekako vizualno predstavlja ta element, tj. poveži ta niz s sliko.

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

Četrti stolpec je predstavitev, tj. to je neke vrste opis niza dano vrednost. Pogled bo prikazan uporabniku, ko si bo ogledal ta element. V tem primeru, če predstavitev ni podana, bo sistem poskušal pridobiti predstavitve za element, ki ga vsebuje ta položaj.

ListValues– to je predmet, s katerim lahko uporabnik vizualno dela. Tisti. ListValues lahko prikažete na obrazcu.

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

Bomo našli ListValues v asistentu za sitax. Konstruktor ListValues ni parametriran (ne morete nastaviti privzetih vrednosti).

Obstajajo metode, kot so:

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

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

Niz elementov = Seznam PriceTypes.OutloadValues();

Obstaja tudi obratna metoda:
ListPriceTypes.LoadValues(ArrayItems);

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

Obstaja metoda kopiranja:
ListCopy = PriceTypeList.Copy();
Ta metoda je namenjen neke vrste spremembi kopije.

Obstajajo metode:
RazvrstiPoVrednosti();
RazvrstiPoPogledu().

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

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

Primer kode, poklicane iz modula upravljane aplikacije:

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

Spodaj ListValues uporablja kot razpoložljiva vrsta podatke za podrobnosti obrazca. Oblikujemo nov atribut obrazca za obdelavo in določimo njegov tip ListValues in ga prikažite na obrazcu.

Ustvarjanje nove ekipe Prijavite se Darila, ga prenesite v obrazec in zanj definirajte upravljalnik dejanj.

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

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

Vsestranska skladnost zbiranja

Ta zbirka je zelo podobna Struktura. Tako kot struktura tudi ujemanje predstavlja nize vrednosti, ki so sestavljeni iz ključa in same vrednosti.

Glavna razlika je v tem, da je mogoče kot ključ in vrednost določiti katero koli podatkovno vrsto. Glede na to funkcijo je potrebno dostopati do vrednosti ujemanja po indeksu; vrednost ključa je navedena kot vrednost indeksa.

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

Konstruktor skladnosti za razliko od strukture ne vsebuje možnosti podajanja parametrov.

Primer uporabe:

Korespondenca je priročna za uporabo, ko morate povezati kateri koli dve strukturi. Na primer, vsaka vrstica tabelarnega dela se mora ujemati z vrstico iz tabele vrednosti.
V tem primeru se kot ključ za ujemanje uporabi vrstica razdelka tabele in prikazana je ustrezna vrednost.

Pri vstavljanju elementov v zbirko Ujemanje poleg metode Vstavi(,) Drug način za vstavljanje vrednosti je uporaba običajnega operatorja dodelitve.

Na primer: OurMatch = NewMatch;
Ujemanje = 999;

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

To je v nasprotju s strukturo.

Univerzalna zbirka vrednosti

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

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

razlike Tabele vrednosti iz dvodimenzionalne matrike:

  • to je predmet, s katerim lahko dela uporabnik (tabela vrednosti se lahko prikaže na zaslonu, jo uporabnik izpolni in nato prebere vnesene podatke);
  • ustvarjanje indeksov za hitro iskanje;
  • kloniranje, polnjenje celotnega stolpca z določeno vrednostjo, razkladanje vseh stolpcev v matriko.

Tabela vrednosti uporablja kot neke vrste medpomnilnik za shranjevanje informacij. Tabela vrednosti se vrne in sprejme kot parameter s številnimi sistemskimi metodami. Možno je sestaviti poizvedbo glede na tabelo vrednosti.

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

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

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

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

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

Dodaj(,)
(neobvezno)
Vrsta: Vrvica.
(neobvezno)
Vrsta: DescriptionTypes
(neobvezno)
Vrsta: Vrvica.
(neobvezno)
Vrsta: številka.

Na primer:

Za klic tega postopka bomo uporabili ukaz.

V opisu Tabele vrednosti elementi zbirke so namreč prav RowsTableValues.

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

Dodati nova vrstica v tabelo morate uporabiti metodo bodisi Dodaj(), oz Vstavi(). V drugem primeru morate navesti, na katerem mestu naj bo zahtevana vrstica.

Za dodelitev vrednosti stolpcu uporabimo piko za dostop do imena ali indeksa stolpca (z oglatimi oklepaji).

Za polnjenje Tabele vrednosti Uporabite lahko naslednje metode:

Počisti()– za odstranitev vseh vrstic iz Tabele vrednosti.

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

Zadnji dve metodi sta priročni za uporabo, ko morate prenesti stolpec iz ene tabele vrednosti v drugo.

Kopirati(,)– omogoča ustvarjanje nove na podlagi obstoječe tabele Tabela vrednosti, in ne vse vrstice in vsi stolpci, ampak le nekateri izmed njih. Povratna vrednost – Tabela vrednosti.

Strukturo lahko kopirate Tabele vrednosti. Za to obstaja ustrezna metoda Kopiraj stolpce(). Dobili bomo prazno Tabela vrednosti z zahtevano strukturo.

IN Tabela vrednosti obstaja metoda Skupaj(). Določite lahko stolpec, v katerem želite sešteti številske vrednosti. Glede na predhodno prikazano kodo v Tabeli lahko izračunate vrednost: TZ.Total (»Znesek«).

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

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

Tabela vrednosti se lahko prikaže na uporabniškem zaslonu, tako da lahko z njim izvajate poljubna dejanja. Ampak za razliko od ListValues od programsko kodo Tabele ne morete preprosto prikazati na zaslonu.

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

Po tem naj bo nastala tabela prikazana na obrazcu.

V modul obrazca na koncu predhodno sestavljenega algoritma (v Postopku za izdelavo tabele vrednosti) morate dodati:
ValueInFormData(TK, Tabela);

Univerzalna zbirka Drevo vrednot

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

To se lahko odraža tudi na zaslonu. Drevo vrednosti izrecno sestoji iz zbirke vrstic in zbirke stolpcev. V drevesu sta dve lastnosti: vrstice in stolpci.

Ker so vrstice lahko podrejene druga drugi, ima lahko vsaka vrstica nadrejenega, pa tudi svoje podrejene vrstice.

Ustvarimo ustrezen ukaz Tree in postopek njegove obdelave.

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

Ustvarimo atribute obrazca DerZn(vrsta podatkov – Drevo vrednosti).

Za ta atribut bomo ustvarili stolpca Leto in Mesec.

Premakni ustrezen element DerZn na obrazcu.

Na koncu Postopki TreeOnServer() dodajmo:

ValueInFormData(TreeZn, DerZn);

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

Uporaba gumba Dodaj lahko dodate nove vrstice. Lahko tvorijo tudi hierarhijo.

Za prečkanje vseh elementov drevesa vrednosti bomo morali uporabiti rekurzijo, tj. priklic postopka iz sebe. Na primer, obdelava drevesa vrednosti bi lahko izgledala takole:

S tem zaključujemo naše prvo spoznavanje univerzalnih zbirk.

V naslednjem članku si bomo ogledali, kateri pomemben mehanizem lahko razvijalec uporabi za poenostavitev dostopa do elementa imenika iz programske kode.

Celotna sintaksa (kliknite za razširitev)

ListValues

Opis:

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

Predmeti zbirke: ValueListElement

Možno je, da objekt zaobide zbirko z uporabo operatorja Za vsak... Od... Cikel. Prehod izbere elemente zbirke.

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

Lastnosti:

Metode:

Vstavi (indeks, vrednost, predstavitev, oznaka, slika) Vstavi nov element na seznam vrednosti na položaju z navedenim indeksom.SelectElement (Naslov, Element) Prikliče okno za interaktivno izbiro enega od elementov, vključenih v seznam vrednosti. Element- element, na katerega naj se prvotno postavi seznam vrednosti med interaktivno izbiro. Če vrednost parametra ni element seznama vrednosti, vključen v ta seznam, do pozicioniranja ne bo prišlo.UnloadValues()Ustvari matriko in vanj kopira vrednosti elementov seznama vrednosti.Dodaj(vrednost, predstavitev, oznaka, slika)Doda nov element na konec seznama vrednosti.LoadValues(ArrayValues) Naloži seznam vrednosti z vrednostmi iz posredovane matrike. V tem primeru se izbrišejo vsi prejšnji elementi seznama.Izpolnite opombe(Označi) Nastavi oznako za vse elemente seznama vrednosti.Index(Element)Pridobi indeks elementa na seznamu vrednosti. Če ni najden, se vrne -1.Count() Dobi število elementov na seznamu vrednosti.FindByValue(SearchValue) Išče vrednost elementa na seznamu vrednosti. Če noben element ne shrani vrednosti, ki je enaka iskalni vrednosti, se vrednost vrne Nedoločeno. Iskanje po ID-ju(Identifikator) Pridobi element seznama vrednosti po identifikatorju. Če element ni najden, se vrne Nedoločeno. MarkItems(Glava) Nastavi ali počisti (interaktivno) elemente na seznamu vrednosti. Vračila Prav, če v pogovornem oknu pritisnete gumb "OK", laž- drugače.Clear() Počisti seznam vrednosti in z njega odstrani vse elemente.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Prikliče okno za interaktivno izbiro enega od elementov, vključenih v seznam vrednosti.Predmeti ShowMark(Opis opozoril za zapiranje, glava) Zasnovan za interaktivno nastavitev stanj oznak za elemente seznama vrednosti.Get(Index) Pridobi vrednost po indeksu. Deluje podobno kot operater.Shift (Element, Offset) Premakne element seznama vrednosti naprej ali nazaj za določeno število položajev.Copy() Ustvari kopijo seznama vrednosti.SortByValue(Smer) Razvrsti seznam vrednosti v naraščajočem ali padajočem vrstnem redu vrednosti, ki jih hranijo elementi. Glej primer spodaj.SortByView(Smer) Razvrsti seznam vrednosti v naraščajočem ali padajočem vrstnem redu po abecednem vrstnem redu predstavitve, vključene v seznam vrednosti elementov. Glej primer spodaj.Odstrani (element) Odstrani element s seznama vrednosti, kjer Element- indeks elementa, ki ga želite izbrisati, ali sam element.

Oblikovalci:

Nov seznam vrednosti
&OnClient Procedure ExecuteCode(Command) /// Kako ustvariti seznam vrednosti v 1s 8.3, 8.2 Seznam = Nov seznam vrednosti; /// Kako dodati element na seznam vrednosti v 1s 8.3, 8.2 // dodaj parametre metode:// - pomen // - izvedba // - oznaka (obvezno) // - slika (obvezno) Seznam. Dodaj (1980, // vrednost elementa "Leto Vasjinega rojstva"// izvedba ) ; Seznam. Dodaj(1985, "Leto Julijinega rojstva") ; // vrednosti so lahko različnih vrst Seznam. Dodaj("Polina" , "Ime otroka" ) ; /// Kako vstaviti element v seznam vrednosti v 1s 8.3, 8.2 // vstavite na pozicijo št. 2 (elementi so oštevilčeni od 0) // element z vrednostjo 2010 in predstavitvijo // "Leto, ko se je rodila njuna skupna hči" Seznam. Vstavi (2, 2010, "Leto, ko se je rodila njuna skupna hči") ; /// Kako zaobiti elemente seznama vrednosti v 1s 8.3, 8.2 Za vsak element iz seznama Loop Report( Element. Representation + ": " + String(Element. Value) ); Končni cikel ; /// Kako počistiti seznam vrednosti v 1s 8.3, 8.2 Seznam. Počisti(); Seznam. Dodaj ("ponedeljek"); Seznam. Dodaj ("torek"); Seznam. Dodaj ("sreda"); /// Kako ugotoviti število elementov seznama vrednosti, pa tudi /// pridobi element seznama po njegovem indeksu v 1s 8.3, 8.2 // številčenje iz nič Za indeks = 0 po seznamu. Količina() - 1 poročilo o ciklu (seznam[indeks]); Končni cikel ; /// Kako najti element seznama po njegovi vrednosti v 1s 8.3, 8.2 ValueTuesday = Seznam. FindByValue("torek"); /// Kako ugotoviti indeks elementa na seznamu v 1s 8.3, 8.2 Report(List. Index(ValueTuesday) ) ; // 1, saj se številčenje začne od nič /// Kako razvrstiti seznam po njegovih vrednostih v 1s 8.3, 8.2 // je bil: ponedeljek, torek, sreda Seznam. SortByValue(Smer razvrščanja.Padajoče) ; // postal: sreda, ponedeljek, torek /// Kako odstraniti element s seznama vrednosti v 1s 8.3, 8.2 // odstranite prvi element // parameter: element seznama // ali indeks elementa// lahko naredite ta seznam. Izbriši(Seznam[0]); // ali tako // List.Delete(0); /// Kako premakniti element seznama vrednosti v 1s 8.3, 8.2 // premakni ničelni element za en položaj naprej // je bil: ponedeljek torek Seznam. Premakni (0, 1); // postal: torek ponedeljek /// Kako narediti kopijo seznama v 1s 8 ListCopy = Seznam. Kopirati() ; Barve = NewValueList; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra");/// Kako naložiti vrednosti seznama v matriko v 1s 8.3, 8.2 ArrayColors = Barve. RazložiVrednosti() ;/// Kako naložiti vrednosti seznama iz matrike v 1 s 8.3, 8.2 Barve. LoadValues(ArrayColors) ; Konec postopka /// Kako narediti brezmodno izbiro vrednosti s seznama/// vrednosti v 1s 8.3, 8.2 &O odjemalskem postopku Kako narediti izbor nemodalne vrednosti (ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra");// postopek AfterSelectingElement je definiran tik spodaj AlertAfterElementSelection = New DescriptionAlerts("AfterElementSelection" , Ta predmet ); Barve. ShowElementSelection( NotificationAfterElementSelection,"Izberi svojo najljubšo barvo"<>Undefined Then Report(Element.Value) ; EndIf ; Konec postopka /// Kako narediti brezmodno označevanje vrednosti s seznama /// Kako narediti brezmodno izbiro vrednosti s seznama&O odjemalskem postopku Kako narediti nemodalno označevanje vrednosti (ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); // postopek AfterMarkingElements je definiran tik spodaj AlertAfterMarkingItems = New DescriptionAlerts( "AfterMarkingItems", Ta predmet ); Barve. ShowTagItems( AlertAfterTagItems, "Izberite svoje najljubše barve") ; Barve. FillNotes(True) ; Konec postopka &Na odjemalskem postopku po označevanju elementov (elementov, parametrov) Izvozi če elemente<>Nedefinirano, potem za vsako barvo iz elementov cikel, če je barva. Označi, nato prijavi (barva.vrednost) ; EndIf ; Končni cikel ; EndIf ; Konec postopka /// Kako narediti modalno izbiro vrednosti s seznama v 1s 8.3, 8.2&Na odjemalskem postopku Kako narediti izbor modalne vrednosti (ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); SelectColor = Barve. SelectItem( , Ta predmet ); Barve. ShowElementSelection( NotificationAfterElementSelection,) ; Če SelectColor<>Undefined Then Report(SelectColor.Value) ; EndIf ; Konec postopka /// Kako modalno označiti vrednosti s seznama /// Kako narediti brezmodno izbiro vrednosti s seznama&O odjemalskem postopku Kako narediti modalno oznako vrednosti (ukaz) Barve = Nov seznam vrednosti; Barve. Dodaj ("rdeča"); Barve. Dodaj ("zeleno"); Barve. Dodaj ("modra"); Če Barve. MarkItems( "Izberite svoje najljubše barve") Nato za vsako barvo iz barvnega cikla Če barva. Označi, nato prijavi (barva.vrednost) ; EndIf ; Končni cikel ; EndIf ; // tako lahko nastavite vse oznake hkrati // seznam na določeno vrednost Barve. FillNotes(True) ; Konec postopka /// Prenesite in zaženite te primere v svojem računalniku