Pašalinkite elementą iš reikšmių sąrašo 1c

Visa sintaksė (spustelėkite norėdami išplėsti)

ListValues

Apibūdinimas:

Vertybių sąrašas yra duomenų bazėje neišsaugomas objektas, leidžiantis kurti dinaminius reikšmių rinkinius sąsajos problemoms spręsti ir jais manipuliuoti (pridėti, redaguoti, ištrinti elementus, rūšiuoti). Jis gali būti užpildytas bet kokio tipo reikšmėmis, t.y. Viename sąraše saugomų verčių tipai gali būti skirtingi. Vienas iš šio objekto naudojimo pavyzdžių yra konkretaus dokumento atrankos organizavimas iš galimų dokumentų sąrašo, sugeneruotų naudojant sudėtingą algoritmą.

Kolekcijos elementai: ValueListElement

Objektas gali apeiti kolekciją naudojant operatorių Kiekvienam... Nuo... Ciklas. Traversal parenkami kolekcijos elementai.

Kolekcijos elementą galima pasiekti naudojant [...] operatorių. Elemento indeksas perduodamas kaip argumentas ( numeracija nuo 0).

Savybės:

Metodai:

Įterpti (indeksas, reikšmė, reprezentacija, etiketė, vaizdas) Į reikšmių sąrašą įterpia naują elementą nurodyto indekso vietoje.SelectElement (Antraštė, Elementas) Iškviečia langą, kuriame interaktyviai galima pasirinkti vieną iš elementų, įtrauktų į reikšmių sąrašą. Elementas- elementas, prie kurio iš pradžių turėtų būti įtrauktas reikšmių sąrašas interaktyvaus pasirinkimo metu. Jei parametro reikšmė nėra reikšmių sąrašo elementas, įtrauktas į nurodytą sąrašą, padėties nustatymas nebus atliekamas.UnloadValues() Sukuria masyvą ir į jį nukopijuoja reikšmių sąrašo elementų reikšmes.Pridėti (vertė, reprezentacija, etiketė, vaizdas) reikšmių sąrašo pabaigoje prideda naują elementą.LoadValues(ArrayValues) Įkelia reikšmių sąrašą su reikšmėmis iš perduoto masyvo. Tokiu atveju visi ankstesni sąrašo elementai ištrinami.Užpildykite pastabas(Pažymėti) Nustato ženklą visiems reikšmių sąrašo elementams.Indeksas (Elementas) Gauna elemento indeksą reikšmių sąraše. Jei nerasta, grąžinamas -1.Count() Gauna elementų skaičių reikšmių sąraše.FindByValue(SearchValue) Ieško elemento vertės reikšmių sąraše. Jei joks elementas nesaugo reikšmės, lygios paieškos reikšmei, vertė grąžinama Neapibrėžtas. Rasti pagal ID(Identifier)Gauna reikšmių sąrašo elementą pagal identifikatorių. Jei elementas nerastas, jis grąžinamas Neapibrėžtas. MarkItems(Antraštė) Nustato arba panaikina žymėjimą (interaktyviai) reikšmių sąrašo elementus. Grąžina Tiesa, jei dialogo lange paspaudžiamas mygtukas „Gerai“, Melas- kitaip.Clear() Išvalo reikšmių sąrašą ir pašalina iš jo visus elementus.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Iškviečia langą, kuriame interaktyviai galima pasirinkti vieną iš elementų, įtrauktų į reikšmių sąrašą.„ShowMark“ elementai(Uždarymo įspėjimų aprašymas, Antraštė) Skirta interaktyviai nustatyti žymų būsenas reikšmių sąrašo elementams.Gauti(Index)Gauna reikšmę pagal indeksą. Veikia panašiai kaip operatorius.Shift (elementas, poslinkis) Perkelia reikšmių sąrašo elementą į priekį arba atgal nurodytu pozicijų skaičiumi.Copy() Sukuria reikšmių sąrašo kopiją.RūšiuotiByValue(Kryptis) Surūšiuoja reikšmių sąrašą elementų saugomų reikšmių didėjimo arba mažėjimo tvarka. Žiūrėkite pavyzdį žemiau.Rūšiuoti pagal vaizdą(Kryptis) Rikiuoja reikšmių sąrašą didėjimo arba mažėjimo tvarka abėcėlės tvarka pagal į reikšmių sąrašą įtrauktų elementų atvaizdavimą. Žiūrėkite pavyzdį žemiau.Pašalinti (Elementas) Pašalina elementą iš reikšmių sąrašo, kur Elementas- elemento, kurį reikia ištrinti, indeksas arba pats elementas.

Dizaineriai:

Naujas vertybių sąrašas
&OnClient procedūros vykdymo kodas (komanda) /// Kaip sukurti reikšmių sąrašą 1s 8.3, 8.2 Sąrašas = New ValueList; /// Kaip įtraukti elementą į reikšmių sąrašą 1s 8.3, 8.2 // pridėti metodo parametrus:// - prasmė // - spektaklis // - ženklas (būtina) // - nuotrauka (būtina) Sąrašas. Add (1980, // elemento reikšmė „Vasijos gimimo metai“// spektaklis ) ; Sąrašas. Add(1985, „Julijos gimimo metai“) ; // reikšmės gali būti įvairių tipų Sąrašas. Add("Polina" , "Vaiko vardas" ) ; /// Kaip įterpti elementą į reikšmių sąrašą 1s 8.3, 8.2 // įterpti į vietą Nr. 2 (elementai numeruojami nuo 0) // elementas su reikšme 2010 ir reprezentacija // "Metai, kuriais gimė jų bendra dukra" Sąrašas. Insert(2, 2010, „Tais metais, kai gimė jų bendra dukra“) ; /// Kaip apeiti reikšmių sąrašo elementus 1s 8.3, 8.2 Kiekvienam elementui iš sąrašo ciklo ataskaitos( Element. Reprezentation + ": " + String(Element. Value) ) ; EndCycle ; /// Kaip išvalyti reikšmių sąrašą 1s 8.3, 8.2 Sąrašas. Išvalyti () ; Sąrašas. Add("pirmadienis"); Sąrašas. Add("antradienis"); Sąrašas. Add("trečiadienis" ); /// Kaip sužinoti reikšmių sąrašo elementų skaičių, taip pat /// gauti sąrašo elementą pagal jo indeksą 1s 8.3, 8.2 // numeravimas nuo nulio Indeksui = 0 pagal sąrašą. Kiekis() - 1 ciklo ataskaita(sąrašas[indeksas]) ; EndCycle ; /// Kaip rasti sąrašo elementą pagal jo reikšmę 1s 8.3, 8.2 ValueTuesday = sąrašas. FindByValue("antradienis"); /// Kaip sužinoti elemento indeksą sąraše 1s 8.3, 8.2 Report(Sąrašas.Indeksas(ValueAntradienis)) ; // 1, nes numeracija prasideda nuo nulio /// Kaip rūšiuoti sąrašą pagal jo reikšmes 1s 8.3, 8.2 // buvo: pirmadienis, antradienis, trečiadienis Sąrašas. RūšiuotiByValue(Rūšiavimo kryptis.Descending) ; // tapo: Trečiadienis, Pirmadienis, Antradienis /// Kaip pašalinti elementą iš reikšmių sąrašo 1s 8.3, 8.2 // pašalinti pirmąjį elementą // parametras: sąrašo elementas // arba elemento indeksas// galite padaryti šį sąrašą. Ištrinti(Sąrašas[ 0 ]) ; // arba taip // Sąrašas.Ištrinti(0); /// Kaip perkelti reikšmių sąrašo elementą per 1s 8.3, 8.2 // perkelkite nulinį elementą viena pozicija į priekį // buvo: pirmadienis antradienis Sąrašas. Perkelti(0, 1); // tapo: antradienis pirmadienis /// Kaip padaryti sąrašo kopiją 1s 8 ListCopy = Sąrašas. Kopijuoti () ; Spalvos = NewValueList; Spalvos. Pridėti("raudona"); Spalvos. Pridėti ("Žalia"); Spalvos. Pridėti ("Mėlyna"); /// Kaip įkelti sąrašo reikšmes į masyvą per 1s 8.3, 8.2 ArrayColors = spalvos. UnloadValues() ; /// Kaip įkelti sąrašo reikšmes iš masyvo per 1s 8.3, 8.2 Spalvos. LoadValues(ArrayColors) ; Procedūros pabaiga /// Kaip pasirinkti bemodelį vertės iš sąrašo /// reikšmės 1s 8.3, 8.2&Apie kliento procedūrą Kaip atlikti nemodalinės vertės pasirinkimą (komandos) Spalvos = naujas vertybių sąrašas; Spalvos. Pridėti("raudona"); Spalvos. Pridėti ("Žalia"); Spalvos. Pridėti ("Mėlyna"); // procedūra AfterSelectingElement yra apibrėžta žemiau AlertAfterElementSelection = Naujas aprašymasAlerts( „AfterElement Selection“, ThisObject ); Spalvos. ShowElementSelection( NotificationAfterElementSelection, "Pasirinkite savo mėgstamą spalvą") ; Procedūros pabaiga & Kliento procedūra Pasirinkus elementą (elementą, parametrus) Eksportuoti, jei elementas<>Neapibrėžta Tada ataskaita(Elementas.Value) ; EndIf ; Procedūros pabaiga /// Kaip iš sąrašo bemodelį reikšmių žymėjimą /// reikšmės 1s 8.3, 8.2&Apie kliento procedūrą Kaip atlikti nemodalinį verčių žymėjimą (komandos) spalvos = naujas vertybių sąrašas; Spalvos. Pridėti("raudona"); Spalvos. Pridėti ("Žalia"); Spalvos. Pridėti ("Mėlyna"); // procedūra AfterMarkingElements yra apibrėžta žemiau AlertAfterMarkingItems = Naujas aprašymasAlerts( "Požymėjimo elementai", ThisObject ); Spalvos. ShowTagItems (AlertAfterTagItems, "Pasirinkite savo mėgstamas spalvas") ; Spalvos. FillNotes(True) ; Procedūros pabaiga & Kliento procedūra pažymėjus elementus (elementus, parametrus) Eksportuoti jei elementus<>Neapibrėžta Tada kiekvienai spalvai iš elementų ciklas Jei spalva. Pažymėti tada ataskaita(Spalva.Vertė) ; EndIf ; EndCycle ; EndIf ; Procedūros pabaiga /// Kaip atlikti modalinį vertės pasirinkimą iš sąrašo 1s 8.3, 8.2&Apie kliento procedūrą Kaip padaryti ModalValueSelection(Command) Colors = New ValueList; Spalvos. Pridėti("raudona"); Spalvos. Pridėti ("Žalia"); Spalvos. Pridėti ("Mėlyna"); SelectColor = spalvos. SelectItem( "Pasirinkite savo mėgstamą spalvą") ; Jei SelectColor<>Neapibrėžta Tada ataskaita(SelectColor.Value) ; EndIf ; Procedūros pabaiga /// Kaip modaliai pažymėti reikšmes iš sąrašo /// reikšmės 1s 8.3, 8.2&Apie kliento procedūrą Kaip sukurti modalinį vertybių ženklą (komandos) spalvos = naujas vertybių sąrašas; Spalvos. Pridėti("raudona"); Spalvos. Pridėti ("Žalia"); Spalvos. Pridėti ("Mėlyna"); Jei Spalvos. MarkItems( "Pasirinkite savo mėgstamas spalvas") Tada kiekvienai spalvai iš spalvų ciklo, jei spalva. Pažymėti tada ataskaita(Spalva.Vertė) ; EndIf ; EndCycle ; EndIf ; // taip galite nustatyti visus ženklus vienu metu // sąrašą iki konkrečios reikšmės Spalvos. FillNotes(True) ; Procedūros pabaiga /// Atsisiųskite ir paleiskite šiuos pavyzdžius savo kompiuteryje

Šiame skyriuje susipažinsime su nauju 1C kalbos duomenų tipu, kuris vadinamas ListValues.

Vertybių sąrašas yra masyvas, bet turintis puikių galimybių. Ir jei taip, tai taip pat yra duomenų rinkinys ir į jį galite įdėti skaičių rinkinį:

// sukūrė vertybių sąrašą

Sąrašas.Pridėti(23);

Kol kas viskas atrodo kaip masyvas, ar ne? Bet eikime toliau. Kad dabar vartotojui būtų rodomi šie skaičiai, rašome:

// kilpa per kiekvieną sąrašo elementą For Every Element From List Loop Report(Element.Value);

// rodoma elemento EndCycle reikšmė;

Ir čia yra pirmasis skirtumas. Įprasto masyvo elementai yra patys skaičiai. Ir prieiga prie dabartinės elemento vertės Sąrašas pasinaudojame galimybe Reikšmė, naudojant konstrukciją Elementas. Reikšmė.

Pažvelkime į keletą papildomų funkcijų Vertybės.

Gali rūšiuoti

Pavyzdžiui, galime lengvai surūšiuoti vertybių sąrašą. Sąrašas gali tai padaryti pats:

List.SortByValue(SortDirection.Age); Įprasto masyvo atveju turėtume įgyvendinti vieną iš rūšiavimo algoritmų (pavyzdžiui, „burbulas“).

Gali ieškoti

Vertybių sąrašas gali savarankiškai ieškoti jo elementų. Tarkime, kad norime sužinoti, ar vartotojo įvestas skaičius yra mūsų sąraše:

ĮveskiteNumber(Skaičius); // įvedė numerį iš vartotojo FoundElement = Sąrašas. FindByValue(Skaičius);

Jei FoundItem = Neapibrėžta Tada OpenValue("Skaičius " + Skaičius + " sąraše nerastas!"); Priešingu atveju

OpenValue("Skaičius " + Skaičius + " yra sąraše. Čia jis yra:" + FoundElement.Value);

endIf; ListValues

Palaiko įterpimą ir ištrynimą

Vertybių sąrašas, kaip masyvas, palaiko elementų įterpimą ir pašalinimą:

Sąrašas. Insert(0, 1000);

// įterpti tūkstantį pačioje sąrašo pradžioje List.Delete(O); // ir nedelsdami pašalinkite jį iš sąrašo Sąrašas. Insert(Sąrašas.Kiekis(), 13);

// sąrašo pabaigoje įterpti 13 Report(Sąrašas[Sąrašas.Kiekis() - 1]);

// rodyti paskutinį sąrašo elementą (13)

Palaiko laužtinius skliaustus

Kaip jau supratote, sąrašo elementų numeracija taip pat prasideda nuo nulio, o bet kurį elementą galime pasiekti pagal jo indeksą naudodami laužtinius skliaustus:

Ataskaita(Sąrašas.Vertė); // rodyti antrąjį sąrašo elementą Taigi, mes galime pereiti visus sąrašo elementus taip:

Jei A = 0 pagal sąrašą.Kiekis() - 1 Ciklo ataskaita(Sąrašas[A].Vertė);

EndCycle;

Gali sukurti savo kopiją

Vertybių sąrašas turi tik puikią savybę - jis gali sukurti savo kopiją:

ListCopy = List.Copy();

// padarė sąrašo kopiją // dabar galime saugiai pakeisti sąrašo kopiją // o originalus sąrašas nepakeis sąrašo kopijos. Vertė = 123456;

Gali virsti masyvu

Ir galiausiai, bet kuriuo metu galite lengvai sudėti visus sąrašo elementus į masyvą:

ArrayNumbers = Sąrašas. UnloadValues();

// išmesta į masyvą

Jei A = 0 Pagal masyvo skaičių.Kiekis () – 1 ciklas

Ataskaita(ArraySkaičiai[A]); // nereikia nurodyti // parinkties Reikšmė

EndCycle;

Norint praktikuoti ir įtvirtinti šio skyriaus medžiagą, rekomenduojama atlikti šią užduotį.

Būtina įvesti 5 vartotojo skaičius, surasti didžiausią ir mažiausią iš jų ir parodyti juos vartotojui. Sprendime turi būti naudojamas reikšmių sąrašas.

Sprendimas

Sąrašas = New ValueList;

// sukūrė reikšmių sąrašą A = 1 Per 5 Ciklo skaičius = 0;

ĮveskiteNumber(Skaičius); // įveskite skaičių iš vartotojo List.Add(Number); // ir įtraukite jį į sąrašą EndCycle; // ir taip 5 kartus

// surūšiuoti skaičių sąrašą

Sąrašas. Rūšiuoti pagal reikšmę(Rūšiavimo kryptis.Amžius);

// po rūšiavimo pirmasis sąrašo elementas yra // mažiausias elementas, o paskutinis didžiausias OpenValue ("Mažiausias elementas" + Sąrašas +

", o didžiausias " + Sąrašas[Sąrašas.Kiekis() - 1]);

Apie ką šis straipsnis?

Šis straipsnis tęsia straipsnių seriją „Pirmieji žingsniai kuriant 1C“. Tai apima darbo su universaliomis kolekcijomis principus. Perskaitę straipsnį sužinosite:

  • Kas yra universalios kolekcijos, kada ir kokiais atvejais jas naudoti?
  • Ką bendro turi visos universalios kolekcijos? Kokius metodus galite naudoti dirbdami su jais visais?
  • Kas yra masyvas, kaip ir kada jį naudoti? Kokius metodus jis turi?
  • Kodėl naudoti struktūrą? Kuo jis skiriasi nuo masyvo?
  • Kada turėtumėte naudoti vertybių sąrašą? Kaip tai parodyti formoje?
  • Atitiktis – kas tai yra ir kada jį naudoti? Kokie yra struktūros pranašumai?
  • Kam naudojama verčių lentelė? Kaip apibūdinti jo struktūrą? Kaip pridėti/pašalinti eilutes? Kaip tai parodyti formoje?
  • Vertybių medis – kam jis naudojamas? Kaip užpildyti ir parodyti formą? Kaip su juo dirbti?

Pritaikomumas

Straipsnyje aptariama dabartinio leidimo 1C:Enterprise 8.3 platforma.

Kaip dirbti su universaliomis kolekcijomis 1C

Vertybių rinkinys yra konteineris, kuriame paprastai gali būti bet koks elementų skaičius. Tačiau dažnai nėra griežtų duomenų tipo apribojimų.

Galite pridėti verčių į bendrą kolekciją. Galima pereiti visas kolekcijos vertybes. Šios kolekcijos daugiausia naudojamos tam tikram algoritmų apdorojimui. Tie. Tai yra keletas dinaminių struktūrų, kurios egzistuoja veikiant algoritmui.

Svarbu suprasti, kad kolekcijos nėra saugomos duomenų bazėje (kalbame ne apie Value Store duomenų tipą, kuriame galima saugoti beveik bet kokio tipo duomenis).

Yra įvairių tipų universalių kolekcijų: masyvas, struktūra, atitiktis, fiksuotas masyvas, verčių lentelė, lentelės dalis ir kt. Tačiau visos kolekcijos elgiasi panašiai.

Kolekcija gali būti sukurta kaip funkcijos veikimo rezultatas (funkcija grąžina universalų rinkinį kaip reikšmę).

Naują kolekciją galite gauti rankiniu būdu, paskambinę konstruktoriui ir sukūrę klasės egzempliorių.

Pavyzdžiui: OurArray = naujas masyvas;

Daugelio bendrųjų kolekcijų konstruktoriai yra parametrizuoti.

Taigi, konstruktoriuje už Atitinkamuose matmenyse galite nurodyti narių skaičių. Tie. iš karto galite paskelbti daugiamačiu .

Atitinkamas konstruktoriaus aprašymas yra sintaksės asistente.

Taigi, naudodami konstruktoriaus parametrus, galite iš karto nustatyti norimą tam tikro objekto elgesį.

Tačiau parametrai yra neprivalomi; kūrėjas negali jų nustatyti ir toliau apibrėžti masyvo veikimo taip, kaip jam atrodo tinkama.

Beveik bet kokią universalią kolekciją galima sukurti naudojant konstruktorių (išimtis yra lentelės dalys, kurios veikia kaip konfigūracijos objektai).

Universalioms kolekcijoms yra bendrų sąvokų, tokių kaip indeksas ir skaičius. Kiekvienas kolekcijos elementas turi rodyklę. Šiuo atveju indeksas prasideda nuo nulio.

Norėdami pasiekti elementą Mūsų Array, galite naudoti rodyklės prieigą; tam indeksas nurodomas laužtiniuose skliaustuose.

Pavyzdžiui, Mūsų Array. Atkreipkite dėmesį, kad tokiu atveju sistema grąžina masyvo elementą su indeksu 3, ir tai yra ketvirtasis masyvo elementas.

Kai kuriose kolekcijose taip pat yra eilutės numerio sąvoka. Eilutės numeris prasideda vienu. Pavyzdžiui, lentelės daliai yra tokia savybė kaip eilutės numeris. Svarbu nepamiršti, kad jei žinome eilutės numerį ir norime jį pasiekti pagal indeksą, kaip rodyklę turėtume naudoti vieną mažesnę reikšmę nei eilutės numeris.

Eilutės numerio sąvoka egzistuoja ne visose kolekcijose, bet daugiausia tose, kurios gali būti rodomos vartotojo sąsajoje.

Visos kolekcijos naudoja kolekcijos elementų perėjimą. Apeiti galima dviem būdais: ciklas Už Ir ciklas Kiekvienam iš.

Daugeliui bendrųjų kolekcijų taikomi metodai yra Count, Index, Add, Insert, Delete ir Find.

Skaičiavimas yra funkcija, kuri grąžina kolekcijos elementų skaičių. Jis gali būti naudojamas prieš ciklą Dėl, kaip parodyta paveikslėlyje.

Indekso metodas neegzistuoja visoms kolekcijoms, o tik tiems, kurių elementus galima nurodyti. Pavyzdys yra Vertybių lentelė.

Vertybių lentelė– tai konkretus eilučių rinkinys; eilutėse gali būti skirtingų stulpelių su skirtingų tipų reikšmėmis.

Kiekviena eilutė reiškia nepriklausomą subjektą. Galite gauti nuorodą į ją; per šią eilutę galite pasiekti šios eilutės stulpelių reikšmes.

Indekso metodas leidžia nustatyti, kuris indeksas atitinka nurodytą eilutę (ty dabartinę eilutės padėtį lentelėje). Indekso reikšmės prasideda nuo nulio.

Beveik bet kurioje universalioje kolekcijoje yra būdų, kaip pridėti naujų verčių į tam tikrą kolekciją. Paveikslėlyje parodyta, kaip dviem būdais užpildyti masyvą reikšmėmis nuo 0 iki 10.

Norėdami pridėti elementą į masyvą, galime naudoti šį metodą Papildyti, skliausteliuose nurodykite pridėtinę vertę. Tokiu atveju reikšmė bus įtraukta į sąrašo pabaigą, t.y. Masyvas nuolat didės dėl paskutinės padėties.

Kitas metodas, leidžiantis pridėti verčių prie kolekcijos, yra Įdėti. Tai skiriasi nuo metodo Papildyti kuriame galite nurodyti, kur įterpti pridėtą elementą.

Sintaksė: Įdėti (,)

Pirmasis parametras nurodo indeksą, į kurį bus įterpta nauja reikšmė. Tie. pavyzdžiui, galime nurodyti, kad kiekviena reikšmė turi būti įterpta sąrašo pradžioje (antrasis metodas aukščiau esančiame paveikslėlyje).

Norėdami pašalinti elementus iš kolekcijos, naudokite metodą Ištrinti. Naikinimo metodas pagal indeksą nurodo, kurį elementą ištrinsime.

Sintaksė: Ištrinti()
Naudojimo pavyzdys: OurArray.Delete(5);

Reikėtų pažymėti, kad tose kolekcijose, kuriose eilutės reiškia nepriklausomą objektą (pavyzdžiui, už Vertybių lentelės), taip pat galime naudoti indekso gavimo metodą, kad vėliau ištrintume šią eilutę.

Beveik visose kolekcijose yra vertės paieškos metodas - Rasti. Reikšmė, kurią norime rasti, perduodama metodui. Kai kurios kolekcijos leidžia nustatyti tam tikrus apribojimus.

Pavyzdžiui, į Vertybių lentelė galite nurodyti eilutes ir stulpelius, kuriuose norite ieškoti.

Jei reikšmė randama, šis metodas grąžina indeksą arba nurodytą eilutę. Jei reikšmė nerandama, grąžinama tipo reikšmė Neapibrėžtas. Kalbant apie masyvą, grįžta Indeksas, arba vertę Neapibrėžtas.

Naudojimo pavyzdys: MūsųKintamasis = OurArray.Find(8);

Universalias kolekcijas galima labai greitai išvalyti, t.y. pašalinti absoliučiai visus elementus. Šiuo tikslu naudojamas metodas Išvalyti (), kuris pašalina masyvo elementus, eilutes Vertybių lentelės, arba duomenis iš kitų kolekcijų.

Papildomi masyvo metodai

Metodas BBorder() grąžina elementų skaičių atėmus vieną. Tie. jei naudosime kilpą Dėl, tada vietoj kiekio metodo galime iš karto naudoti metodą Kraštinė ().

Visų pirma, kintamasis QuantityInArray gali būti apibrėžtas skirtingai:

QuantityInArray = OurArray.InBorder();
Tada, aprašant patį ciklą, iš šio kintamojo nereikėtų atimti.

Set metodas leidžia priskirti reikšmę masyvo elementui pagal indeksą.

Sintaksė: Diegti(,)

Pavyzdys: OurArray.Set(2,8);

Alternatyvus variantas: OurArray = 8;

Metodą galite naudoti masyvei Gauk, norint nuskaityti indekso reikšmę nenaudojant laužtinių skliaustų.

Sintaksė: Gauti ()

Pavyzdys: OurVariable = OurArray.Get(2);

Alternatyvus variantas: OurVariable = OurArray;

Universali kolekcijos struktūra

Struktūra, kaip ir masyvas, gali turėti neribotą elementų skaičių, tačiau elemento turinys skiriasi nuo masyvo.

Struktūra yra rinkinys, kurio kiekviena vertė susideda iš poros. Pirmasis poros elementas vadinamas Raktas. Antrasis poros elementas yra Reikšmė.

Raktas yra griežtos eilutės duomenų tipas, apibūdinantis reikšmę. Pavyzdžiui, Prie rakto„Kodas“ gali atitikti reikšmę 113; Prie rakto„Vardas“ reiškia „Vasya“. Pačiai vertei duomenų tipo apribojimas netaikomas.

Struktūrą labai patogu naudoti, jei norime susikurti tam tikrą parametrų sąrašą. Jei tai Struktūra paskambino Mūsų Struktūra, tada mes nurodysime dvi jo reikšmes taip: OurStructure.Code ir OurStructure.Name.

Tokia prieiga yra daug patogesnė nei tuo atveju, jei visus parametrus apibrėžtume masyve ir pasiektume juos pagal indeksą.

Struktūra daro programos kodą skaitomą (suprantamą). Struktūra naudojama gana dažnai, daug dažniau nei Array.

Jis naudojamas apibūdinti tam tikrus parametrus, kurių visuose algoritmuose dažnai yra gana daug.

Be to, Struktūra naudojama, jei procedūroje ir funkcijoje yra daug priimtų parametrų.

Tada daug patogiau visus parametrus įrašyti į Struktūrą ir perduoti. Tie. „supakuoti“ procedūrų ir funkcijų parametrai.

Atskirai reikia pažymėti, kad kaip Raktas Struktūroje negali atsirasti visiškai jokios eilutės. Galioja tam tikri apribojimai.

Raktas turėtų veikti kaip identifikatorius. Tai reiškia, kad į Klyuche neturi būti tarpų ir negali prasidėti skaičiumi.

Priimtina pradžia Raktas su raide arba pabraukimu. Taigi, Raktas turi atitikti identifikatorių kūrimo reikalavimus.

Pažymėkime, kuo dar struktūra skiriasi nuo masyvo. Struktūroje yra metodas Įdėti, yra du įterpimo į masyvą būdai: Įdėti(į tam tikrą poziciją) ir Papildyti(iki sąrašo pabaigos). Masyve visi elementai yra išdėstyti.

Struktūra yra tam tikras netvarkingas rinkinys. Štai kodėl yra tik įterpimo metodas Struktūrai.

Reikšmė įterpiama ne konkrečioje vietoje, o į nurodytą rinkinį. Struktūros negalima pasiekti naudojant indeksą, kaip ir kitų bendrųjų kolekcijų.

Struktūros elementai pasiekiami tik rakto pavadinimu. Tačiau ciklas „Kiekvienam“ taip pat veikia ir Struktūrai, tačiau neturėtumėte pasikliauti struktūros elementų tvarka.

Struktūra sukuriama taip pat, kaip ir kiti bendrieji rinkiniai, naudojant naują konstruktorių, nurodant duomenų tipą Struktūra.

Kaip ir masyvas, struktūros konstruktorius gali turėti parametrus. Tie. galima apibūdinti patį Struktūros turinį naudojant konstruktorių.

Skirtingai nuo masyvo, kuriame galite tiesiog nurodyti visų dimensijų elementų skaičių, struktūroje galite nurodyti patį turinį.

Pavyzdžiui: OurStructure = nauja struktūra („Kodas, pavadinimas“, 133, „Vasya“);

Atskirti kableliais, pirmiausia pateikiami raktų pavadinimai, o tada atitinkamai ta pačia seka parametrų reikšmės.

Yra būdas pridėti naują vertę Struktūrai Įdėti, kuris įterpia naują porą (raktas ir vertė).

Pavyzdžiui: OurStructure.Insert(“Šeimos nariai”,3);

Struktūrai būdingas kitas gana dažnai naudojamas metodas. Tai yra metodas Nuosavybė.

Naudodami šį metodą galite suprasti, ar šioje Struktūroje yra elementas, kurio raktas turi tokį ir tokį pavadinimą.

Jei toks elementas yra, sistema grąžins reikšmę True, kitu atveju – False.

Pavyzdžiui, išraiška OurStructure.Property („Šeimos nariai“) bus lygus reikšmei True. Šis metodas gana dažnai naudojamas analizuojant Struktūrą.

Kaip ir bet kurios universalios kolekcijos atveju, Struktūros ypatybes galima pasiekti pagal indeksą. Tačiau struktūros indeksas yra eilutės reikšmė.

Pavyzdžiui: Ataskaita (Mūsų struktūra [Šeimos nariai]);

Tačiau neturėtume pamiršti, kad struktūra yra netvarkingas objektų rinkinys, todėl prieiga naudojant indeksą 0, 1, 2 yra nepriimtina.

Bendras rinkinys Vertybių sąrašas

ListValues yra linijinis bet kokio tipo duomenų elementų sąrašas.

Kiekvienas elementas susideda iš kelių reikšmių. Schematiškai reikšmių sąrašas gali būti pateikiamas kaip sąrašas su keturiais stulpeliais.

Pirmas stulpelis - ženklas. Jis turi Būlio duomenų tipą ir leidžia vartotojui pažymėti langelius arba panaikinti jų žymėjimą.

Kitas stulpelis – paveikslėlis, galintis kažkaip vizualiai pavaizduoti šį elementą, t.y. suderinkite šią eilutę su paveikslėliu.

Trečiame stulpelyje yra pati saugoma reikšmė, t.y. Tai yra bet kokio tipo duomenys ir skirtingose ​​eilutėse jie gali skirtis.

Ketvirtas stulpelis – pristatymas, t.y. tai tam tikros reikšmės eilutės aprašymas. Rodinys bus rodomas vartotojui, kai jis peržiūrės šį elementą. Tokiu atveju, jei atvaizdavimas nenurodytas, sistema bandys gauti šioje pozicijoje esančio elemento atvaizdus.

ListValues– tai objektas, su kuriuo vartotojas gali vizualiai dirbti. Tie. ListValues gali būti rodomas formoje.

Su juo vartotojas gali atlikti kai kuriuos veiksmus. Be to, ListValues galima numanyti savarankiškai naudojant metodus, t.y. rodyti ekrane tam tikroje algoritmo šakoje (išskyrus serverio kodą), kad vartotojas pasirinktų kokią nors eilutę arba pažymėtų kai kuriuos langelius.

Mes surasime ListValues sitaksės asistente. Konstruktorius ListValues nėra parametrizuotas (negalite nustatyti jokių numatytųjų verčių).

Yra tokie metodai kaip:

  • Įdėti(,) ;
  • Papildyti(,);
  • Kiekis ();
  • Indeksas().

Taip pat yra specialių metodų, pvz. UnloadValues ​​(). Taip sukuriamas masyvas, į kurį nukopijuojamas reikšmių sąrašas. Pavyzdžiui:

Array of Elements = PriceTypes sąrašas.OutloadValues();

Taip pat yra atvirkštinis metodas:
ListPriceTypes.LoadValues(ArrayItems);

Yra paieškos būdai:
FindByValue(); FindByIdentifier().

Yra kopijavimo būdas:
ListCopy = PriceTypeList.Copy();
Šis metodas skirtas tam tikram kopijos pakeitimui.

Yra metodai:
RūšiuotiByValue();
SortByView().

Metodai Pasirinkite elementą (,) Ir MarkItems () iškviesti modalinį dialogo langą, kuris sustabdo algoritmo vykdymą, kol vartotojas uždaro langą.

Norėdami naudoti šiuos metodus konfigūracijos ypatybėse Modalumo naudojimo būdas turi būti nustatyta Naudokite.

Kodo pavyzdys, iškviestas iš valdomos programos modulio:

Rodyti šį kodą vartotojo režimu (modalinis dialogas).

Žemiau ListValues naudojamas kaip galimas formos atributų duomenų tipas. Mes sukuriame naują apdorojimo formos atributą ir nustatome jo tipą ListValues ir parodyti jį formoje.

Naujos komandos kūrimas Užpildykite dovanas, perkelkite jį į formą ir nustatykite veiksmo tvarkyklę.

Naudotojo režimu, kai apdorojimo formoje spustelėsite mygtuką Užpildyti dovanas, pasirodys užpildytas sąrašas.

Jei pageidaujama, sąrašą galima redaguoti: kai kuriuos elementus galima pridėti, kai kuriuos pašalinti.

Universalus kolekcijos atitikimas

Ši kolekcija labai panaši į Struktūra. Kaip ir struktūra, atvaizdai yra reikšmių rinkiniai, susidedantys iš rakto ir pačios vertės.

Pagrindinis skirtumas yra tas, kad bet koks duomenų tipas gali būti nurodytas kaip raktas, taip pat kaip reikšmė. Atsižvelgiant į šią savybę, reikia prieiti prie atitikties reikšmės pagal indeksą; pagrindinė reikšmė nurodoma kaip indekso reikšmė.

Raktas gali būti kitokio tipo duomenų nei eilutė. Darbo su atitiktimi savybės ir metodai yra beveik tokie patys kaip ir Structure.

Atitikties konstruktorius, skirtingai nei struktūra, neturi galimybės nurodyti parametrų.

Naudojimo pavyzdys:

Korespondenciją patogu naudoti, kai reikia sujungti bet kurias dvi struktūras. Pavyzdžiui, kiekviena lentelės skyriaus eilutė turi būti suderinta su eilute iš reikšmių lentelės.
Šiuo atveju lentelės sekcijos eilutė naudojama kaip atitikties klavišas ir nurodoma atitinkama reikšmė.

Įterpiant elementus į kolekciją Sutapkite be metodo Įdėti(,) Kitas būdas įterpti reikšmę yra naudoti įprastą priskyrimo operatorių.

Pavyzdžiui: OurMatch = NewMatch;
Atitiktis = 999;

Tie. jei elemento kolekcijoje nebuvo, tada jis bus pridėtas naudojant priskyrimo operatorių, o jei buvo, jis bus atnaujintas.

Tai prieštarauja struktūrai.

Universali kolekcijos verčių lentelė

Vertybių lentelė yra lentelė su savavališku eilučių ir stulpelių skaičiumi. Sankryža gali saugoti bet kokio tipo duomenų reikšmes. Jei reikia, stulpelius galima įvesti, t.y. galite nustatyti, kuriame stulpelyje kokio tipo duomenys yra saugomi.

Stulpelius galite palikti neįvestus, tada skirtingų tipų reikšmės gali būti saugomos viename stulpelyje skirtingose ​​eilutėse.

Skirtumai Vertybių lentelės iš dvimačio masyvo:

  • tai yra objektas, su kuriuo vartotojas gali dirbti (ekrane gali būti rodoma verčių lentelė, vartotojas gali ją užpildyti, o įvesti duomenys gali būti nuskaityti);
  • greitos paieškos indeksų kūrimas;
  • klonavimas, viso stulpelio užpildymas tam tikra reikšme, visų stulpelių įkėlimas į masyvą.

Vertybių lentelė naudojamas kaip tam tikras informacijos saugojimo buferis. Vertybių lentelė yra grąžinamas ir priimamas kaip parametras daugeliu sistemos metodų. Galima sukurti užklausą pagal verčių lentelę.

Taigi, Vertybių lentelė susideda iš eilučių rinkinio ir stulpelių rinkinio. Ir eilutės, ir stulpeliai yra rinkiniai.

Tie. kolekcijos viduje Vertybių lentelė yra dar dvi kolekcijos. Kreipkimės į sintaksės asistentą ir suraskime Vertybių lentelė.

Palaikomi duomenų tipai: pats Vertybių lentelė, kuris susideda iš stygų. Kiekviena eilutė pavaizduota duomenų tipu RowTableValues, kuri turi savo savybes ir savo metodus. Yra Lentelės stulpelių verčių rinkinys taip pat turi tam tikrų savybių.

Svarbus punktas! Procedūra, kuri sukuria Vertybių lentelė, turi kompiliuoti &OnServer.

Prieš pradėdami dirbti su Vertybių lentelė, turite nustatyti, kokie stulpeliai jame bus (t. y. juos sukurti). Sintaksė:

Papildyti(,)
(neprivaloma)
Tipas: Styga.
(neprivaloma)
Tipas: AprašymasTypai
(neprivaloma)
Tipas: Styga.
(neprivaloma)
Tipas: Skaičius.

Pavyzdžiui:

Norėdami iškviesti šią procedūrą, naudosime komandą.

Aprašyme Vertybių lentelės kolekcijos elementai yra tiksliai RowsTableValues.

Skirtingai nuo stulpelių, kuriuos sudaro tik savybės (pavadinimas, tipas, antraštė, plotis), in RowTableValues Yra ir savybės (prieiga pagal stulpelio pavadinimą), ir metodai (galite gauti ir nustatyti reikšmę, dirbti su savininkais).

Norėdami į lentelę įtraukti naują eilutę, turite naudoti šį metodą Papildyti(), arba Įdėti(). Antruoju atveju turėtumėte nurodyti, kokioje padėtyje reikia įdėti reikiamą eilutę.

Norėdami stulpeliui priskirti reikšmę, naudojame tašką, kad pasiektume stulpelio pavadinimą arba indeksą (naudodami laužtinius skliaustus).

Užpildymui Vertybių lentelės Gali būti naudojami šie metodai:

Išvalyti ()– pašalinti visas eilutes iš Vertybių lentelės.

FillValues(,)– leidžia užpildyti visus stulpelius arba pasirinktus stulpelius viena reikšme.
Įkelti stulpelį (,)– įkelia stulpelį iš masyvo.
Iškrauti stulpelį ()– iškrauna stulpelį į masyvą.

Paskutinius du būdus patogu naudoti, kai reikia perkelti stulpelį iš vienos verčių lentelės į kitą.

Kopijuoti (,)– leidžia sukurti naują pagal esamą lentelę Vertybių lentelė, ir ne visos eilutės ir visi stulpeliai, o tik kai kurie iš jų. Grąžinimo vertė – Vertybių lentelė.

Galite nukopijuoti struktūrą Vertybių lentelės. Tam yra atitinkamas metodas CopyColumns (). Gausime tuščią Vertybių lentelė su reikiama struktūra.

IN Vertybių lentelė yra metodas Iš viso (). Galite nurodyti stulpelį, kuriame norite susumuoti skaitines reikšmes. Atsižvelgiant į anksčiau lentelėje pateiktą kodą, galite apskaičiuoti vertę: TK.Iš viso („Suma“).

IN Vertybių lentelė metodu galima sugrupuoti (sutraukti) skaitines reikšmes pagal identiškas tam tikrų stulpelių reikšmes Sutraukti (,).

Atsižvelgiant į anksčiau lentelėje pateiktą kodą, galite apskaičiuoti vertę: TK.Collapse("Savaitės diena", "Suma").

Vertybių lentelė gali būti rodomas vartotojo ekrane, kad su juo galėtumėte atlikti bet kokius veiksmus. Bet skirtingai nei ListValues Negalite tiesiog iškviesti lentelės ekrane iš programos kodo.

Rodyti Vertybių lentelė ekrane sukurkite formos atributą ir priskirkite jam duomenų tipą Vertybių lentelė.

Po to gauta lentelė turėtų būti rodoma formoje.

Formos modulyje, esančiame anksčiau sudaryto algoritmo pabaigoje (Verčių lentelės kūrimo procedūroje), turėtumėte pridėti:
ValueInFormData(TK, lentelė);

Universali kolekcija Vertybių medis

universali kolekcija, kuri labai panaši į Vertybių lentelė. Skirtumas nuo lentelės yra tas, kad medžio eilės gali būti viena kitai pavaldžios, t.y. gali susidaryti tam tikra hierarchija.

Tai taip pat gali atsispindėti ekrane. Vertybių medis aiškiai susideda iš eilučių ir stulpelių rinkinio. Medyje yra dvi savybės: eilutės ir stulpeliai.

Kadangi eilutės gali būti pavaldžios viena kitai, kiekviena eilutė gali turėti pirminę, taip pat jai pavaldžias eilutes.

Sukurkime atitinkamą medžio komandą ir jos apdorojimo procedūrą.

Kurkime kurioje yra viena pirminė eilutė ir dvi pavaldžios eilutės.

Sukurkime formos atributus DerZn(duomenų tipas – Vertės medis).

Šiam atributui sukursime stulpelius Metai ir Mėnuo.

Perkelkite atitinkamą elementą DerZn ant formos.

Pabaigoje Procedūros TreeOnServer() pridėkime:

ValueInFormData(TreeZn, DerZn);

Pažiūrėkime, kas nutiko vartotojo režimu.

Naudojant mygtuką Papildyti galite pridėti naujų eilučių. Jie taip pat gali sudaryti hierarchiją.

Norėdami pereiti visus reikšmių medžio elementus, turėsime naudoti rekursiją, t.y. iškvietęs procedūrą iš savęs. Pavyzdžiui, verčių medžio apdorojimas gali atrodyti taip:

Tuo mūsų pirmoji pažintis su universaliomis kolekcijomis baigiasi.

Kitame straipsnyje apžvelgsime, kokį svarbų mechanizmą gali naudoti kūrėjas, kad supaprastintų prieigą prie katalogo elemento iš programos kodo.