Ievades parametri, kas norāda vērtību sarakstu 1 s.

Šajā nodaļā mēs iepazīsimies ar jaunu 1C valodas datu tipu, ko sauc Vērtību saraksts.

Vērtību saraksts ir masīvs, bet ar lieliskām iespējām. Un ja tā, tad tā ir arī datu kolekcija, un tajā varat ievietot skaitļu kopu:

// izveidoja vērtību sarakstu

Saraksts.Pievienot(23);

Līdz šim viss izskatās pēc masīva, vai ne? Bet ejam tālāk. Lai tagad parādītu šos skaitļus lietotājam, mēs rakstām:

// cilpa cauri katram saraksta elementam For Every Element From List Loop Report(Element.Value);

// parāda elementa EndCycle vērtību;

Un šeit ir pirmā atšķirība. Parasta masīva elementi ir paši skaitļi. Un piekļuve elementa pašreizējai vērtībai Saraksts mēs izmantojam iespēju Nozīme, izmantojot konstrukciju Elements. Nozīme.

Apskatīsim dažas papildu funkcijas Vērtības.

Var šķirot

Piemēram, mēs varam viegli sakārtot vērtību sarakstu. Saraksts to var izdarīt pats:

List.SortByValue(SortDirection.Age); Parasta masīva gadījumā mums būtu jārealizē kāds no šķirošanas algoritmiem (piemēram, "burbulis").

Var meklēt

Vērtību saraksts var meklēt tā elementus atsevišķi. Pieņemsim, ka mēs vēlamies noskaidrot, vai mūsu sarakstā ir lietotāja ievadīts numurs:

IevadietNumurs(Numurs); // ievadīja numuru no lietotāja FoundElement = saraksts. FindByValue(Numurs);

Ja FoundItem = Undefined Then OpenValue("Skaitlis " + Skaitlis + " sarakstā nav atrasts!"); Citādi

OpenValue("Skaitlis " + Skaitlis + " atrodas sarakstā. Šeit tas ir:" + FoundElement.Value);

endIf; Vērtību saraksts

Atbalsta ievietošanu un dzēšanu

Vērtību saraksts, piemēram, masīvs, atbalsta elementu ievietošanu un noņemšanu:

Saraksts. Ievietot(0, 1000);

// ievieto tūkstoti pašā saraksta sākumā List.Delete(O); // un nekavējoties noņemiet to no saraksta Saraksts. Insert(Saraksts.Daudzums(), 13);

// saraksta beigās ievietot 13 Report(Saraksts[Saraksts.Daudzums() - 1]);

// parāda pēdējo saraksta elementu (13)

Atbalsta kvadrātiekavas

Kā jau sapratāt, arī saraksta elementu numerācija sākas no nulles, un jebkuram elementam varam piekļūt pēc tā indeksa, izmantojot kvadrātiekavas:

Report(Saraksts.Vērtība); // parāda otro saraksta elementu Tādējādi mēs varam iet cauri visiem saraksta elementiem šādi:

Ja A = 0 pēc saraksta.daudzums() - 1 cilpas atskaite(saraksts[A].vērtība);

EndCycle;

Var izveidot sev kopiju

Vērtību sarakstam ir tikai lieliska iezīme - tas var izveidot sevis kopiju:

ListCopy = List.Copy();

// izveidoja saraksta kopiju // tagad mēs varam droši mainīt saraksta kopiju // kamēr sākotnējais saraksts nemainīs saraksta kopiju. Vērtība = 123456;

Var pārvērsties par masīvu

Visbeidzot, jūs jebkurā laikā varat viegli izmest visus saraksta elementus masīvā:

ArrayNumbers = saraksts. UnloadValues();

// izmests masīvā

Ja A = 0 Pēc masīvaNumura.Daudzums() - 1 cikls

Pārskats(masīvu numuri[A]); // nav jānorāda // opcija Vērtība

EndCycle;

Lai praktizētu un nostiprinātu šīs vienības materiālu, ieteicams veikt šādu uzdevumu.

No lietotāja jāievada 5 skaitļi, jāatrod lielākais un mazākais no tiem un jāparāda lietotājam. Risinājumam jāizmanto vērtību saraksts.

Risinājums

List = New ValueList;

// izveidoja vērtību sarakstu A = 1 līdz 5 cikla numurs = 0;

IevadietNumurs(Numurs); // ievadiet numuru no lietotāja List.Add(Number); // un pievienojiet to sarakstam EndCycle; // un tā 5 reizes

// kārto skaitļu sarakstu

Saraksts. Kārtot pēcVērtības(SortDirection.Age);

// pēc kārtošanas pirmais saraksta elements ir // mazākais elements, bet pēdējais ir lielākais OpenValue ("Mazākais elements" + Saraksts +

", un lielākais " + Saraksts[Saraksts.Daudzums() - 1]);

Pilna sintakse (noklikšķiniet, lai izvērstu)

Vērtību saraksts

Apraksts:

Vērtību saraksts ir objekts, kas netiek saglabāts datu bāzē, kas ļauj izveidot dinamiskas vērtību kopas saskarnes problēmu risināšanai un ar tām manipulēt (pievienot, rediģēt, dzēst elementus, kārtot). To var aizpildīt ar jebkura veida vērtībām, t.i. Vienā sarakstā saglabāto vērtību veidi var būt dažādi. Viens no šī objekta izmantošanas piemēriem ir konkrēta dokumenta atlases organizēšana no iespējamo dokumentu saraksta, kas ģenerēts, izmantojot sarežģītu algoritmu.

Kolekcijas priekšmeti: ValueListElement

Objektam ir iespējams apiet kolekciju, izmantojot operatoru Katram... No... Cikls. Traversālā tiek atlasīti kolekcijas elementi.

Ir iespējams piekļūt kolekcijas elementam, izmantojot [...] operatoru. Elementa indekss tiek nodots kā arguments ( numerācija no 0).

Īpašības:

Metodes:

Ievietot (indekss, vērtība, attēlojums, etiķete, attēls) Ievieto jaunu elementu vērtību sarakstā norādītā indeksa pozīcijā.SelectElement (Header, Element) Atver logu, lai interaktīvi atlasītu vienu no vērtību sarakstā iekļautajiem elementiem. Elements- elements, kuram vērtību saraksts sākotnēji jānovieto interaktīvās atlases laikā. Ja parametra vērtība nav vērtību saraksta elements, kas ir iekļauts dotajā sarakstā, pozicionēšana nenotiks.UnloadValues() Izveido masīvu un iekopē tajā vērtību saraksta elementu vērtības.Pievienot(vērtība, attēlojums, etiķete, attēls) pievieno jaunu elementu vērtību saraksta beigām.LoadValues(ArrayValues) Ielādē vērtību sarakstu ar vērtībām no nodotā ​​masīva. Šajā gadījumā visi iepriekšējie saraksta elementi tiek dzēsti.Aizpildiet Piezīmes(Mark) Iestata atzīmi visiem vērtību saraksta elementiem.Indekss(Elements)Iegūst elementa indeksu vērtību sarakstā. Ja nav atrasts, tiek atgriezts -1.Count() Iegūst elementu skaitu vērtību sarakstā.FindByValue(SearchValue) Meklē elementa vērtību vērtību sarakstā. Ja neviens elements nesaglabā vērtību, kas vienāda ar meklēšanas vērtību, vērtība tiek atgriezta nenoteikts. Atrast pēc ID(Identifier)Izgūst vērtību saraksta elementu pēc identifikatora. Ja elements nav atrasts, tas tiek atgriezts nenoteikts. MarkItems(Galvene) Iestata vai noņem atzīmes (interaktīvi) vērtību saraksta vienumus. Atgriežas Taisnība, ja dialoglodziņā tiek nospiesta poga "OK", Meli- citādi.Clear() Notīra vērtību sarakstu, noņemot visus elementus.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Atver logu, lai interaktīvi atlasītu vienu no vērtību sarakstā iekļautajiem elementiem.ShowMark vienumus(Slēgšanas brīdinājumu apraksts, galvene) Paredzēts interaktīvai atzīmju stāvokļu iestatīšanai vērtību saraksta elementiem.Get(Index)Izgūst vērtību pēc indeksa. Darbojas līdzīgi operatoram.Shift (elements, Offset) Pārbīda vērtību saraksta elementu uz priekšu vai atpakaļ par noteiktu pozīciju skaitu.Copy() Izveido vērtību saraksta kopiju.SortByValue(Virziens) Sakārto vērtību sarakstu elementu saglabāto vērtību augošā vai dilstošā secībā. Skatiet piemēru zemāk.SortByView(Virziens) Sakārto vērtību sarakstu augošā vai dilstošā secībā vērtību sarakstā iekļauto elementu attēlojumu alfabētiskā secībā. Skatiet piemēru zemāk.Noņemt (Elements) Noņem elementu no vērtību saraksta, kur Elements- dzēšamā elementa indekss vai pats elements.

Dizaineri:

Jauns vērtību saraksts
&OnClient procedūras izpildes kods (komanda) /// Kā izveidot vērtību sarakstu 1s 8.3, 8.2 Saraksts = New ValueList; /// Kā pievienot elementu vērtību sarakstam 1s 8.3, 8.2 // pievienot metodes parametrus:// - nozīme // - izpildījums // - atzīme (obligāti) // - attēls (obligāts) Saraksts. Pievienot (1980, // elementa vērtība "Vasjas dzimšanas gads"// izpildījums ) ; Saraksts. Pievienot(1985,) ; "Jūlijas dzimšanas gads"// vērtības var būt dažāda veida Saraksts. Add("Poliņa" , "Bērna vārds" ) ; /// Kā ievietot elementu vērtību sarakstā 1s 8.3, 8.2 // ievietot pozīcijā Nr. 2 (elementi ir numurēti, sākot no 0) // elements ar vērtību 2010 un attēlojumu// "Gads, kad piedzima viņu kopīgā meita" Saraksts. Ievietot(2, 2010,) ; "Gads, kad piedzima viņu kopīgā meita"/// Kā apiet vērtību saraksta elementus 1s 8.3, 8.2 Katram elementam no saraksta cilpas atskaites( Element. Representation + ": " + String(Element. Value) ) ; EndCycle ;/// Kā notīrīt vērtību sarakstu 1s 8.3, 8.2 Saraksts. Clear() ; Saraksts. Pievienot("pirmdiena"); Saraksts. Pievienot("otrdiena"); Saraksts. Pievienot("trešdiena"); /// Kā uzzināt vērtību saraksta elementu skaitu, kā arī /// iegūt saraksta elementu pēc tā indeksa 1s 8.3, 8.2// numerācija no nulles Indeksam = 0 pēc saraksta. Daudzums() - 1 cikla atskaite(saraksts[indekss]) ; EndCycle ;/// Kā atrast saraksta elementu pēc tā vērtības 1s 8.3, 8.2 ValueTuesday = saraksts. FindByValue("otrdiena");/// Kā uzzināt elementa indeksu sarakstā 1s 8.3, 8.2 Report(Saraksts.Indekss(VērtībaOtrdiena)) ; // 1, jo numerācija sākas no nulles /// Kā kārtot sarakstu pēc tā vērtībām 1s 8.3, 8.2// bija: pirmdiena, otrdiena, trešdiena Saraksts. SortByValue(SortDirection.Descending) ; // kļuva: trešdiena, pirmdiena, otrdiena /// Kā noņemt elementu no vērtību saraksta 1s 8.3, 8.2 // noņemt pirmo elementu // parametrs: saraksta elements// vai elementu indekss // jūs varat darīt šo sarakstu. Dzēst(Saraksts[ 0 ]) ; // vai tā // Saraksts.Dzēst(0); /// Kā pārvietot vērtību saraksta elementu 1s 8.3, 8.2 // pārvietot nulles elementu vienu pozīciju uz priekšu// bija: pirmdiena otrdiena Saraksts. Pārvietot(0, 1); // kļuva: otrdiena pirmdiena/// Kā izveidot saraksta kopiju 1s 8 ListCopy = Saraksts. Kopēt () ; Krāsas = NewValueList; Krāsas. Pievienot("Sarkans"); Krāsas. Pievienot("Zaļš"); Krāsas. Pievienot("Zils"); ArrayColors = Krāsas. UnloadValues() ; /// Kā ielādēt saraksta vērtības no masīva 1s 8.3, 8.2 Krāsas. LoadValues(ArrayColors) ; Beigās Procedūra /// Kā veikt bezmodeļu vērtības atlasi no saraksta /// vērtības 1s 8.3, 8.2&Par klientu procedūru Kā izveidot nemodāluValueSelection(Command) Colors = New ValueList; Krāsas. Pievienot("Sarkans"); Krāsas. Pievienot("Zaļš"); Krāsas. Pievienot("Zils"); // procedūra AfterSlectingElement ir definēta tieši zemāk AlertAfterElementSelection = Jauns aprakstsBrīdinājumi( "AfterElementSelection", ThisObject ); Krāsas. ShowElementSelection( NotificationAfterElementSelection, "Izvēlies savu iecienītāko krāsu") ; Procedūras beigas un klienta procedūra pēc elementa atlases (elements, parametri) Eksportēt, ja elements<>Undefined Tad atskaite(Element.Value) ; EndIf ; Beigās Procedūra /// Kā no saraksta izveidot bezmodeļu vērtību atzīmēšanu /// vērtības 1s 8.3, 8.2&Par klientu procedūru Kā izveidot nemodālu vērtību marķēšanu (komandas) krāsas = jauns vērtību saraksts; Krāsas. Pievienot("Sarkans"); Krāsas. Pievienot("Zaļš"); Krāsas. Pievienot("Zils"); // procedūra AfterMarkingElements ir definēta tieši zemāk AlertAfterMarkingItems = Jauns aprakstsBrīdinājumi( "Pēc marķēšanas vienumi", ThisObject ); Krāsas. ShowTagItems( AlertAfterTagItems, "Izvēlies savas iecienītākās krāsas") ; Krāsas. FillNotes(True) ; Procedūras beigas un klienta procedūra pēc elementu (elementu, parametru) marķēšanas. Eksportējiet elementus, ja<>Undefined Tad Katrai Krsai No Elementiem Cikla Ja Krsa. Atzīmēt un pēc tam ziņot(Krāsa.Vērtība); EndIf ; EndCycle ; EndIf ; Beigās Procedūra /// Kā veikt modālu vērtības atlasi no saraksta 1s 8.3, 8.2&Par klientu procedūru Kā izveidot ModalValueSelection(Command) Colors = New ValueList; Krāsas. Pievienot("Sarkans"); Krāsas. Pievienot("Zaļš"); Krāsas. Pievienot("Zils"); SelectColor = krāsas. SelectItem( "Izvēlies savu iecienītāko krāsu") ; Ja SelectColor<>Undefined Tad atskaite(SelectColor.Value) ; EndIf ; Beigās Procedūra /// Kā modāli atzīmēt vērtības no saraksta /// vērtības 1s 8.3, 8.2&Par klientu procedūru Kā izveidot modālu vērtību atzīmi (komandas) krāsas = jauns vērtību saraksts; Krāsas. Pievienot("Sarkans"); Krāsas. Pievienot("Zaļš"); Krāsas. Pievienot("Zils"); Ja Krāsas. MarkItems( "Izvēlies savas iecienītākās krāsas") Tad Katrai Krsai No Krsu Cikla Ja Krsa. Atzīmēt un pēc tam ziņot(Krāsa.Vērtība) ; EndIf ; EndCycle ; EndIf ; // šādi var uzstādīt visas atzīmes uzreiz // sarakstu līdz noteiktai vērtībai Krāsas. FillNotes(True) ; Procedūras beigas /// Lejupielādējiet un palaidiet šos piemērus savā datorā

Par ko ir šis raksts?

Šis raksts turpina rakstu sēriju “Pirmie soļi 1C attīstībā”. Tas aptver principus darbam ar universālajām kolekcijām. Pēc raksta izlasīšanas jūs uzzināsit:

  • Kas ir universālās kolekcijas, un kad un kādos gadījumos tās būtu jāizmanto?
  • Kas kopīgs visām universālajām kolekcijām? Kādas metodes jūs varat izmantot, lai strādātu ar tām visām?
  • Kas ir masīvs, kā un kad to izmantot? Kādas metodes viņam ir?
  • Kāpēc izmantot struktūru? Kā tas atšķiras no masīva?
  • Kad vajadzētu izmantot vērtību sarakstu? Kā to parādīt veidlapā?
  • Atbilstība – kas tas ir un kad to lietot? Kādas ir struktūras priekšrocības?
  • Kam tiek izmantota vērtību tabula? Kā aprakstīt tā struktūru? Kā pievienot/noņemt rindas? Kā to parādīt veidlapā?
  • Vērtību koks – kam to izmanto? Kā aizpildīt un parādīt veidlapu? Kā ar to strādāt?

Piemērojamība

Rakstā ir apskatīta pašreizējā izdevuma platforma 1C: Enterprise 8.3.

Kā strādāt ar universālajām kolekcijām 1C

Vērtību kolekcija ir konteiners, kurā parasti var būt neierobežots skaits elementu. Tomēr bieži vien nav stingru datu veida ierobežojumu.

Varat pievienot vērtības vispārīgai kolekcijai. Visas kolekcijas vērtības var šķērsot. Šīs kolekcijas galvenokārt tiek izmantotas kāda veida apstrādei algoritmos. Tie. Šīs ir dažas dinamiskas struktūras, kas pastāv algoritma darbības laikā.

Ir svarīgi saprast, ka kolekcijas netiek glabātas datu bāzē (mēs nerunājam par Value Store datu tipu, kurā var uzglabāt gandrīz jebkura veida datus).

Ir dažādi universālo kolekciju veidi: masīvs, struktūra, atbilstība, fiksētais masīvs, vērtību tabula, tabulas daļa utt. Taču visām kolekcijām ir līdzīga uzvedība.

Funkcijas darbības rezultātā var izveidot kolekciju (funkcija atgriež universālu kolekciju kā vērtību).

Jaunu kolekciju var iegūt manuāli, izsaucot konstruktoru un izveidojot klases gadījumu.

Piemēram: OurArray = jauns masīvs;

Daudzu vispārīgu kolekciju konstruktori ir parametrizēti.

Tātad, konstruktorā par Atbilstošajos izmēros varat norādīt dalībnieku skaitu. Tie. jūs varat nekavējoties paziņot par daudzdimensionālu .

Atbilstošais konstruktora apraksts ir sintakses palīgā.

Tādējādi, izmantojot konstruktora parametrus, jūs varat nekavējoties iestatīt vēlamo objekta uzvedību.

Bet parametri nav obligāti, izstrādātājs tos nevar iestatīt un tālāk definēt masīva darbību pēc saviem ieskatiem.

Gandrīz jebkuru universālu kolekciju var izveidot, izmantojot konstruktoru (izņēmums ir tabulas daļas, kas darbojas kā konfigurācijas objekti).

Universālajām kolekcijām ir tādi kopīgi jēdzieni kā indekss un numurs. Katram kolekcijas elementam ir rādītājs. Šajā gadījumā indekss sākas no nulles.

Lai piekļūtu elementam Mūsu Array, šim nolūkam varat izmantot indeksa piekļuvi, indekss ir norādīts kvadrātiekavās.

Piemēram, Mūsu Array. Lūdzu, ņemiet vērā, ka šajā gadījumā sistēma atgriež masīva elementu ar indeksu 3, un tas ir ceturtais masīva elements.

Dažām kolekcijām ir arī līnijas numura jēdziens. Rindas numurs sākas ar vienu. Piemēram, tabulas daļai ir tāds rekvizīts kā rindas numurs. Ir svarīgi paturēt prātā, ka, ja mēs zinām rindas numuru un vēlamies tam piekļūt, izmantojot indeksu, mums kā indekss jāizmanto vērtība, kas ir par vienu mazāka par rindas numuru.

Rindas numura jēdziens nepastāv visās kolekcijās, bet galvenokārt tajās, kuras var parādīt lietotāja saskarnē.

Visās kolekcijās tiek izmantota kolekcijas elementu šķērsošana. Apvedceļš ir iespējams divos veidos: cikls Par Un cikls Katram no.

Lielākajai daļai vispārīgo kolekciju tiek izmantotas šādas metodes: skaitīšana, rādītājs, pievienošana, ievietošana, dzēšana un atrašana.

Skaits ir funkcija, kas atgriež kolekcijas elementu skaitu. To var lietot pirms cikla Priekš, kā parādīts attēlā.

Indeksa metode nepastāv visām kolekcijām, bet tikai tām, uz kuru elementiem var atsaukties. Piemērs ir Vērtību tabula.

Vērtību tabula– šī ir noteikta rindu kolekcija, kurā var būt dažādas kolonnas ar dažāda veida vērtībām.

Katra rinda apzīmē neatkarīgu entītiju. Jūs varat iegūt saiti uz to, izmantojot šo rindu, varat piekļūt šīs rindas kolonnu vērtībām.

Indeksa metode ļauj noteikt, kurš indekss atbilst noteiktai rindai (tas ir, rindas pašreizējai pozīcijai tabulā). Indeksa vērtības sākas no nulles.

Gandrīz jebkurai universālai kolekcijai ir metodes, kā konkrētai kolekcijai pievienot jaunas vērtības. Attēlā parādīts, kā divos veidos aizpildīt masīvu ar vērtībām no 0 līdz 10.

Lai masīvam pievienotu elementu, mēs varam izmantot metodi Pievienot, iekavās norādiet pievienojamo vērtību. Šajā gadījumā vērtība tiks pievienota saraksta beigās, t.i. Masīvs pastāvīgi palielināsies pēdējās pozīcijas dēļ.

Vēl viena metode, kas ļauj kolekcijai pievienot vērtības, ir Ievietot. Tas atšķiras no metodes Pievienot kurā varat norādīt, kur ievietot pievienoto elementu.

Sintakse: Ievietot (,)

Pirmais parametrs norāda indeksu, kurā tiks ievietota jaunā vērtība. Tie. piemēram, mēs varam norādīt, ka katra vērtība ir jāievieto saraksta sākumā (otrā metode attēlā iepriekš).

Lai noņemtu elementus no kolekcijas, izmantojiet metodi Dzēst. Dzēšanas metode pēc indeksa norāda, kurš elements tiks dzēsts.

Sintakse: Dzēst()
Lietošanas piemērs: OurArray.Delete(5);

Jāņem vērā, ka tām kolekcijām, kurās virknes apzīmē neatkarīgu entītiju (piemēram, for Vērtību tabulas), varam izmantot arī indeksa iegūšanas metodi, lai vēlāk dzēstu šo rindu.

Gandrīz visās kolekcijās ir metodes, kā meklēt vērtību - Atrast. Vērtība, ko vēlamies atrast, tiek nodota metodei. Dažas kolekcijas ļauj iestatīt dažus ierobežojumus.

Piemēram, iekšā Vērtību tabula varat norādīt rindas un kolonnas, kurās vēlaties meklēt.

Ja vērtība tiek atrasta, šī metode atgriež indeksu vai norādīto virkni. Ja vērtība netiek atrasta, tiek atgriezta tipa vērtība nenoteikts. Saistībā ar masīvu atgriežas Rādītājs, vai vērtību nenoteikts.

Lietošanas piemērs: MūsuMainīgais = OurArray.Find(8);

Universālās kolekcijas var notīrīt ļoti ātri, t.i. noņemiet pilnīgi visus elementus. Šim nolūkam tiek izmantota metode Notīrīt (), kas noņem masīva elementus, rindas Vērtību tabulas vai datus no citām kolekcijām.

Papildu metodes masīvam

Metode BBorder() atgriež elementu skaitu mīnus viens. Tie. ja izmantojam cilpu Priekš, tad kvantitātes metodes vietā uzreiz varam izmantot metodi Robeža ().

Konkrēti, mainīgo QuantityInArray var definēt atšķirīgi:

QuantityInArray = OurArray.InBorder();
Tad, aprakstot pašu ciklu, no šī mainīgā lieluma nevajadzētu atņemt.

Iestatīšanas metode ļauj piešķirt vērtību masīva elementam pēc indeksa.

Sintakse: Uzstādīt(,)

Piemērs: OurArray.Set(2,8);

Alternatīva iespēja: OurArray = 8;

Varat izmantot metodi masīvam gūt, lai nolasītu indeksa vērtību, neizmantojot kvadrātiekavas.

Sintakse: Gūt()

Piemērs: OurVariable = OurArray.Get(2);

Alternatīva iespēja: OurVariable = OurArray;

Universāla kolekcijas struktūra

Struktūrai, tāpat kā masīvam, var būt neierobežots elementu skaits, taču elementa saturs atšķiras no masīva.

Struktūra ir kolekcija, kuras katra vērtība sastāv no pāra. Tiek saukts pirmais pāra elements Atslēga. Otrais pāra elements ir Nozīme.

Atslēga ir strikti virknes datu tips, kas apraksta vērtību. Piemēram, Uz atslēgu"Kods" var atbilst vērtībai 113; Uz atslēgu Vārds, kas nozīmē "Vasja". Uz pašu vērtību neattiecas datu veida ierobežojumi.

Struktūra ir ļoti ērta lietošanai, ja vēlamies izveidot noteiktu parametru sarakstu. Ja šis Struktūra sauca Mūsu struktūra, tad mēs atsauksimies uz divām tā vērtībām šādi: OurStructure.Code un OurStructure.Name.

Šāda veida piekļuve ir daudz ērtāka nekā tad, ja mēs definētu visus parametrus masīvā un piekļūtu tiem, izmantojot indeksu.

Struktūra padara programmas kodu lasāmu (saprotamu). Struktūra tiek izmantota diezgan bieži, daudz biežāk nekā Array.

To izmanto, lai aprakstītu noteiktus parametrus, kuru skaits bieži vien ir diezgan liels visos algoritmos.

Turklāt Struktūra tiek izmantota, ja procedūra un funkcija satur lielu skaitu nodoto parametru.

Tad daudz ērtāk ir ierakstīt visus parametrus Struktūrā un nodot tālāk. Tie. procedūru un funkciju parametri ir “iepakoti”.

Atsevišķi jāatzīmē, ka kā Atslēga Struktūrā nevar parādīties neviena rindiņa. Ir spēkā noteikti ierobežojumi.

Atslēga jādarbojas kā identifikators. Tas nozīmē, ka iekš Klyuche nedrīkst būt atstarpes, un tas nedrīkst sākties ar skaitli.

Pieņemams sākums Atslēga ar burtu vai pasvītrojumu. Tādējādi Atslēga jāatbilst identifikatoru izveides prasībām.

Ļaujiet mums atzīmēt, kā vēl struktūra atšķiras no masīva. Struktūrā ir metode Ievietot, ir divas metodes ievietošanai masīvā: Ievietot(uz noteiktu amatu) un Pievienot(līdz saraksta beigām). Masīvā visi elementi ir sakārtoti.

Struktūra ir sava veida nesakārtots kopums. Tāpēc Struktūrai ir tikai ievietošanas metode.

Vērtība tiek ievietota nevis noteiktā vietā, bet gan norādītajā komplektā. Struktūrai nevar piekļūt, izmantojot indeksu, tāpat kā citām vispārīgām kolekcijām.

Struktūras elementiem var piekļūt tikai pēc atslēgas nosaukuma. Tomēr cilpa Katram darbojas arī struktūrai, taču jums nevajadzētu paļauties uz struktūras elementu secību.

Struktūra tiek veidota tāpat kā citas vispārīgās kolekcijas, izmantojot jauno konstruktoru, norādot datu tipu Struktūra.

Tāpat kā masīvam, struktūras konstruktoram var būt parametri. Tie. ir iespējams aprakstīt pašu Struktūras saturu, izmantojot konstruktoru.

Atšķirībā no masīva, kurā varat vienkārši norādīt elementu skaitu visām dimensijām, struktūrā jūs varat norādīt pašu saturu.

Piemēram: OurStructure = Jauna struktūra (“Kods, Vārds”, 133, “Vasja”);

Atdalot ar komatiem, vispirms tiek uzskaitīti atslēgu nosaukumi un pēc tam attiecīgi tajā pašā secībā parametru vērtības.

Ir metode, kā Struktūrai pievienot jaunu vērtību Ievietot, kas ievieto jaunu pāri (atslēga un vērtība).

Piemēram: OurStructure.Insert(“Ģimenes locekļi”,3);

Struktūru raksturo cita metode, kas tiek izmantota diezgan bieži. Šī ir metode Īpašums.

Izmantojot šo metodi, jūs varat saprast, vai šajā Struktūrā ir elements, kura atslēgai ir šāds un tāds nosaukums.

Ja šāds elements eksistē, sistēma atgriezīs vērtību True, pretējā gadījumā – False.

Piemēram, izteiksme OurStructure.Property (“Ģimenes locekļi”) būs vienāds ar vērtību True. Šo metodi izmanto diezgan bieži, analizējot Struktūru.

Tāpat kā jebkurai universālai kolekcijai, struktūras īpašībām var piekļūt pēc indeksa. Bet struktūras indekss ir virknes vērtība.

Piemēram: Ziņojums (Mūsu struktūra["Ģimenes locekļi"]);

Tomēr nevajadzētu aizmirst, ka struktūra ir nesakārtota objektu kopa, tāpēc piekļuve ar indeksu 0, 1, 2 ir nepieņemama.

Vispārējā kolekcija Vērtību saraksts

Vērtību saraksts ir lineārs jebkura datu tipa elementu saraksts.

Katrs elements sastāv no vairākām vērtībām. Shematiski vērtību sarakstu var attēlot kā sarakstu ar četrām kolonnām.

Pirmā kolonna - Atzīmēt. Tam ir Būla datu tips, un tas ļauj lietotājam atzīmēt izvēles rūtiņas vai noņemt atzīmes.

Otra kolonna ir attēls, kas var kaut kā vizuāli attēlot šo elementu, t.i. savienojiet šo virkni ar attēlu.

Trešā kolonna ir pati saglabātā vērtība, t.i. tie ir jebkura veida dati, un tie var atšķirties dažādās rindās.

Ceturtā kolonna ir prezentācija, t.i. tas ir noteiktas vērtības virknes apraksts. Skats tiks parādīts lietotājam, kad viņš skatīs šo elementu. Šādā gadījumā, ja attēlojums nav norādīts, sistēma mēģinās iegūt attēlojumus šajā pozīcijā ietvertajam elementam.

Vērtību saraksts– tas ir objekts, ar kuru lietotājs var vizuāli strādāt. Tie. Vērtību saraksts var parādīt veidlapā.

Lietotājs ar to var veikt dažas darbības. Turklāt, Vērtību saraksts var secināt neatkarīgi, izmantojot metodes, t.i. parādīt ekrānā kādā algoritma atzarā (izņemot servera kodu), lai lietotājs izvēlētos kādu rindiņu vai atzīmētu dažas izvēles rūtiņas.

Mēs atradīsim Vērtību saraksts Sitaksa palīgā. Konstruktors Vērtību saraksts nav parametrizēts (jūs nevarat iestatīt nekādas noklusējuma vērtības).

Ir tādas metodes kā:

  • Ievietot(,) ;
  • Pievienot(,);
  • Daudzums ();
  • Indekss ().

Ir arī īpašas metodes, piemēram, UnloadValues(). Tādējādi tiek izveidots masīvs, kurā tiek kopēts vērtību saraksts. Piemēram:

Elementu masīvs = PriceTypes saraksts.OutloadValues();

Ir arī apgriezta metode:
ListPriceTypes.LoadValues(ArrayItems);

Ir meklēšanas metodes:
FindByValue(); FindByIdentifier().

Ir kopēšanas metode:
ListCopy = PriceTypeList.Copy();
Šī metode ir paredzēta, lai kopijā veiktu sava veida modifikācijas.

Ir metodes:
SortByValue();
SortByView().

Metodes SelectItem(,) Un MarkItems() izsaukt modālo dialoglodziņu, kas aptur algoritma izpildi, līdz lietotājs aizver logu.

Lai izmantotu šīs metodes konfigurācijas īpašībās Modalitātes izmantošanas veids jāiestata uz Izmantot.

Koda piemērs, kas izsaukts no pārvaldītās lietojumprogrammas moduļa:

Parādiet šo kodu lietotāja režīmā (modālais dialoglodziņš).

Zemāk Vērtību saraksts izmanto kā pieejamo datu tipu formas atribūtiem. Mēs izveidojam jaunu atribūtu apstrādes formai un definējam tā veidu Vērtību saraksts un parādiet to veidlapā.

Jaunas komandas izveide Reģistrēties Dāvanas, pārsūtiet to uz veidlapu un definējiet tai darbību apstrādātāju.

Lietotāja režīmā, apstrādes veidlapā noklikšķinot uz pogas Aizpildīt dāvanas, tiks parādīts pabeigts saraksts.

Ja vēlaties, sarakstu var rediģēt: dažus elementus var pievienot, dažus noņemt.

Daudzpusīga kolekcijas atbilstība

Šī kolekcija ir ļoti līdzīga Struktūra. Tāpat kā struktūra, atbilstība apzīmē vērtību kopas, kas sastāv no atslēgas un pašas vērtības.

Galvenā atšķirība ir tā, ka jebkuru datu tipu var norādīt kā atslēgu, kā arī kā vērtību. Ņemot vērā šo funkciju, ir nepieciešams piekļūt atbilstības vērtībai pēc indeksa, kā indeksa vērtība tiek norādīta atslēgas vērtība.

Atslēga var būt cita veida datu, nevis virkne. Īpašības un metodes darbam ar Compliance ir gandrīz tādas pašas kā struktūrai.

Atbilstības konstruktors, atšķirībā no struktūras, nesatur iespēju norādīt parametrus.

Lietošanas piemērs:

Sarakste ir ērti lietojama, ja nepieciešams savienot jebkuras divas struktūras. Piemēram, katra tabulas sadaļas rinda ir jāsaskaņo ar rindu no vērtību tabulas.
Šajā gadījumā tabulas sadaļas rinda tiek izmantota kā atbilstības atslēga un tiek norādīta atbilstošā vērtība.

Ievietojot elementus kolekcijā Match papildus metodei Ievietot(,) Vēl viens veids, kā ievietot vērtību, ir izmantot parasto piešķiršanas operatoru.

Piemēram: OurMatch = NewMatch;
Atbilstība = 999;

Tie. ja elements nebija kolekcijā, tas tiks pievienots, izmantojot piešķiršanas operatoru, un, ja tas bija, tas tiks atjaunināts.

Tas ir pretstatā struktūrai.

Universālā kolekcijas vērtību tabula

Vērtību tabula ir tabula ar patvaļīgu rindu skaitu un patvaļīgu kolonnu skaitu. Krustpunktā var saglabāt jebkura veida datu vērtības. Ja nepieciešams, kolonnas var drukāt, t.i., var noteikt, kurā kolonnā kāda veida dati tiek glabāti.

Kolonnas var atstāt neierakstītas, tad dažādu veidu vērtības var saglabāt vienā kolonnā dažādās rindās.

Atšķirības Vērtību tabulas no divdimensiju masīva:

  • šis ir objekts, ar kuru lietotājs var strādāt (vērtību tabulu var parādīt ekrānā, lietotājs to var aizpildīt un pēc tam nolasīt ievadītos datus);
  • indeksu veidošana ātrai meklēšanai;
  • klonēšana, visas kolonnas aizpildīšana ar noteiktu vērtību, visu kolonnu izkraušana masīvā.

Vērtību tabula izmanto kā sava veida informācijas uzglabāšanas buferi. Vērtību tabula tiek atgriezts un pieņemts kā parametrs ar daudzām sistēmas metodēm. Ir iespējams izveidot vaicājumu, salīdzinot ar vērtību tabulu.

Tātad, Vērtību tabula sastāv no rindu kopas un kolonnu kopas. Gan rindas, gan kolonnas ir kolekcijas.

Tie. kolekcijas iekšpusē Vērtību tabula ir vēl divas kolekcijas. Pievērsīsimies sintakses palīgam un atrodam Vērtību tabula.

Atbalstītie datu veidi: pats Vērtību tabula, kas sastāv no virknēm. Katra rinda ir attēlota ar datu tipu RowTableValues, kam ir savas īpašības un savas metodes. Pieejams Tabulas kolonnu vērtību kolekcija ir arī noteiktas īpašības.

Svarīgs punkts! Procedūra, kas rada Vērtību tabula, jākompilē &OnServer.

Pirms sākat strādāt ar Vērtību tabula, jums ir jānosaka, kuras kolonnas tajā būs (t.i., tās jāizveido). Sintakse:

Pievienot(,)
(neobligāti)
Veids: virkne.
(neobligāti)
Tips: Apraksts Veidi
(neobligāti)
Veids: virkne.
(neobligāti)
Veids: numurs.

Piemēram:

Lai izsauktu šo procedūru, mēs izmantosim komandu.

Aprakstā Vērtību tabulas kolekcijas elementi ir precīzi RowsTableValues.

Atšķirībā no kolonnām, kas sastāv tikai no rekvizītiem (nosaukums, tips, virsraksts, platums), in RowTableValues Ir gan rekvizīti (piekļuve pēc kolonnas nosaukuma), gan metodes (var iegūt un iestatīt vērtību, strādāt ar īpašniekiem).

Lai tabulai pievienotu jaunu rindu, ir jāizmanto šī metode Pievienot (), vai Ievietot (). Otrajā gadījumā jānorāda, kurā pozīcijā jānovieto vajadzīgā līnija.

Lai kolonnai piešķirtu vērtību, mēs izmantojam punktu, lai piekļūtu kolonnas nosaukumam vai indeksam (izmantojot kvadrātiekavas).

Pildījumam Vērtību tabulas Var izmantot šādas metodes:

Notīrīt ()– lai noņemtu visas rindas no Vērtību tabulas.

FillValues(,)– ļauj aizpildīt visas kolonnas vai atlasītās kolonnas ar vienu vērtību.
Ielādēt kolonnu(,)– ielādē kolonnu no masīva.
UnloadColumn()– izlādē kolonnu masīvā.

Pēdējās divas metodes ir ērti izmantot, ja nepieciešams pārsūtīt kolonnu no vienas vērtību tabulas uz citu.

Kopēt (,)– ļauj izveidot jaunu, pamatojoties uz esošu tabulu Vērtību tabula, un ne visas rindas un visas kolonnas, bet tikai dažas no tām. Atdeves vērtība - Vērtību tabula.

Jūs varat kopēt struktūru Vērtību tabulas. Tam ir atbilstoša metode CopyColumns(). Mēs dabūsim tukšu Vērtību tabula ar nepieciešamo struktūru.

IN Vērtību tabula ir metode Kopā(). Varat norādīt kolonnu, kurā vēlaties summēt skaitliskās vērtības. Saistībā ar iepriekš tabulā parādīto kodu varat aprēķināt vērtību: TZ.Kopā (“Summa”).

IN Vērtību tabula izmantojot metodi, ir iespējams grupēt (sakļaut) skaitliskās vērtības pēc identiskām noteiktu kolonnu vērtībām Sakļaut(,).

Saistībā ar iepriekš tabulā parādīto kodu varat aprēķināt vērtību: TK.Collapse(“Nedēļas diena”, “Summa”).

Vērtību tabula var parādīt lietotāja ekrānā, lai ar to varētu veikt jebkādas darbības. Bet atšķirībā no Vērtību saraksts Jūs nevarat vienkārši izsaukt tabulu ekrānā no programmas koda.

Parādīt Vērtību tabula ekrānā izveidojiet formas atribūtu un piešķiriet tam datu tipu Vērtību tabula.

Pēc tam iegūtā tabula jāparāda veidlapā.

Veidlapas modulī iepriekš sastādītā algoritma beigās (sadaļā Vērtību tabulas izveides procedūra) jāpievieno:
ValueInFormData(TK, tabula);

Universāla kolekcija Vērtību koks

universāla kolekcija, kas ir ļoti līdzīga Vērtību tabula. Atšķirība no tabulas ir tāda, ka koka rindas var būt viena otrai pakārtotas, t.i. var veidoties sava veida hierarhija.

To var atspoguļot arī ekrānā. Vērtību koks nepārprotami sastāv no rindu kolekcijas un kolonnu kolekcijas. Kokā ir divi rekvizīti: rindas un kolonnas.

Tā kā rindas var būt viena otrai pakārtotas, katrai rindai var būt Parent, kā arī tās pakārtotās rindas.

Izveidosim atbilstošo Tree komandu un tās apstrādes procedūru.

Izveidosim kurā ir viena vecāka rinda un divas pakārtotas rindas.

Izveidosim formas atribūtus DerZn(datu tips – Vērtību koks).

Šim atribūtam mēs izveidosim slejas Gads un Mēnesis.

Pārvietojiet atbilstošo elementu DerZn uz veidlapas.

Beigās Procedūras TreeOnServer() pievienosim:

ValueInFormData(TreeZn, DerZn);

Pārbaudīsim, kas notika lietotāja režīmā.

Izmantojot pogu Pievienot varat pievienot jaunas rindas. Tie var arī veidot hierarhiju.

Lai šķērsotu visus vērtību koka elementus, mums būs jāizmanto rekursija, t.i. izsaucot procedūru no sevis. Piemēram, vērtību koka apstrāde var izskatīties šādi:

Ar to noslēdzas mūsu pirmā iepazīšanās ar universālajām kolekcijām.

Nākamajā rakstā mēs apskatīsim, kādu svarīgu mehānismu izstrādātājs var izmantot, lai vienkāršotu piekļuvi direktorijas elementam no programmas koda.



Dalīties