1c iterasjon over listen over verdier. Ytterligere metoder for Array

Hva handler denne artikkelen om

Denne artikkelen fortsetter artikkelserien "Første trinn i utviklingen på 1C". Den diskuterer hvordan man arbeider med generiske samlinger. Etter å ha lest artikkelen vil du finne ut:

  • Hva er generiske samlinger, når og når bør de brukes?
  • Hva har alle universelle samlinger til felles? Hvilke teknikker kan du bruke for å jobbe med dem alle?
  • Hva er en array, hvordan og når skal den brukes? Hvilke metoder har han?
  • Hvorfor bruke en struktur? Hvordan er det forskjellig fra en matrise?
  • Når skal man bruke en verdiliste? Hvordan viser jeg det på skjemaet?
  • Samsvar - hva er det og når skal det brukes? Hva er fordelene fremfor struktur?
  • Hva brukes en verditabell til? Hvordan beskrive dens struktur? Hvordan legger jeg til / fjerner linjer? Hvordan bringe den i form?
  • Verditre – hva brukes det til? Hvordan fylle ut og vise på skjemaet? Hvordan jobbe med ham?

Anvendbarhet

Artikkelen diskuterer 1C: Enterprise 8.3-plattformen til den nåværende utgaven.

Hvordan jobbe med universelle samlinger i 1C

En samling av verdier er en slags beholder, som vanligvis kan inneholde et hvilket som helst antall elementer. Samtidig er det ofte ingen strenge begrensninger på datatypen.

Du kan legge til verdier til en generisk samling. Alle verdier i samlingen kan krysses. Disse samlingene brukes hovedsakelig til en eller annen form for behandling i algoritmer. De. dette er en slags dynamiske strukturer som eksisterer under varigheten av algoritmen.

Det er viktig å forstå at samlinger ikke lagres i databasen (vi snakker ikke om datatypen verdilager, som kan lagre nesten hvilken som helst datatype).

Det finnes forskjellige typer generiske samlinger: Array, Structure, Correspondence, Fixed Array, Table of Values, Tabellar, etc. Men alle samlinger har lignende oppførsel.

En samling kan opprettes som et resultat av en funksjon (funksjonen returnerer en generisk samling som en verdi).

Du kan få en ny samling manuelt ved å gå til konstruktøren og instansiere klassen.

For eksempel: OurArray = New Array;

Konstruktørene for mange generiske samlinger er parameterisert.

Så, i konstruktøren for du kan spesifisere antall varer i de tilsvarende dimensjonene. De. du kan umiddelbart erklære multidimensjonal .

Den tilsvarende beskrivelsen av konstruktøren er i syntakshjelperen.

Dermed, ved å bruke parametrene til konstruktøren, kan du umiddelbart angi ønsket oppførsel til dette objektet.

Men parametrene er valgfrie, utvikleren kan ikke angi dem og videre definere oppførselen til Arrayen slik han finner det passende.

Nesten alle generiske samlinger kan opprettes ved å bruke konstruktøren (med unntak av tabellseksjoner, som fungerer som konfigurasjonsobjekter).

For generiske samlinger er det generelle begreper som indeks og tall. Hvert element i samlingen har en indeks. I dette tilfellet starter indeksen på null.

Å referere til et element Vårt utvalg, kan du bruke indeksreferanse; for dette er indeksen angitt i hakeparenteser.

For eksempel, Vårt utvalg... Merk at i dette tilfellet returnerer systemet Array-elementet med indeks 3, og i rekkefølge er dette det fjerde Array-elementet.

For noen samlinger er det også konseptet med et linjenummer. Linjenummeret begynner med en. For en tabelldel er det for eksempel en egenskap som et radnummer. Det er viktig å huske på at dersom vi kjenner linjenummeret og ønsker å referere til indeksen, så skal verdien en mindre enn linjenummeret brukes som indeks.

Konseptet med et linjenummer finnes ikke for alle samlinger, men hovedsakelig for de som kan vises i brukergrensesnittet.

For alle samlinger benyttes samlingstraversering. Det er to måter å omgå det på: syklus for og syklus For hver av.

For de fleste generiske samlinger gjelder følgende metoder: Tell, Indeks, Legg til, Sett inn, Slett og Finn.

Count er en funksjon som returnerer antall elementer i en samling. Den kan brukes før en løkke Til som vist på figuren.

Indeksmetoden finnes ikke for alle samlinger, men bare for de som kan referere til elementene. Et eksempel er Verditabell.

Verditabell Er en spesifikk samling av strenger, kan strenger inneholde forskjellige kolonner med forskjellige typer verdier.

Hver linje er en uavhengig enhet. Du kan få en lenke til den, gjennom denne linjen kan du referere til verdiene til kolonnene i denne linjen.

Indeksmetoden lar deg bestemme hvilken indeks som tilsvarer en gitt rad (det vil si gjeldende plassering av raden i tabellen). Indeksverdier starter på null.

Nesten enhver generisk samling har metoder for å legge til nye verdier til en gitt samling. Figuren viser hvordan du fyller en Array med verdier fra 0 til 10 på to måter.

For å legge til et element i Arrayet, kan vi bruke metoden Legge til, angi merverdien i parentes. I dette tilfellet vil verdien legges til på slutten av listen, dvs. Arrayen vil stadig vokse på grunn av den siste posisjonen.

En annen metode som lar deg legge til verdier til en samling er metoden Sett inn... Det skiller seg fra metoden Legge til slik at du kan spesifisere hvor du skal sette inn elementet som er lagt til.

Syntaks: Sett inn (,)

Den første parameteren er indeksen der den nye verdien skal settes inn. De. vi kan for eksempel spesifisere at hver verdi skal settes inn i begynnelsen av listen (den andre måten i bildet ovenfor).

For å fjerne gjenstander fra samlingen, bruk metoden Slett... I Slettmetoden indikeres det med indeksen hvilket element vi skal slette.

Syntaks: Slett()
Brukseksempel: OurArray.Remove (5);

Det skal bemerkes at for de samlingene der strenger representerer en uavhengig enhet (for eksempel for Verditabeller), kan vi også bruke metoden for å hente indeksen for deretter å slette den gitte raden.

Nesten alle samlinger har en verdioppslagsmetode - Finne... Verdien vi ønsker å finne sendes til metoden. I noen samlinger kan du sette noen begrensninger.

For eksempel i Verditabell du kan spesifisere disse linjene, de kolonnene du vil søke i.

Hvis verdien blir funnet, returnerer denne metoden indeksen eller en bestemt streng. Hvis ingen verdi blir funnet, returneres en verdi av typen Udefinert... Brukt på Array, returnerer Indeks, eller verdien Udefinert.

Brukseksempel: OurVariable = OurArray.Find (8);

Generiske samlinger kan rengjøres veldig raskt, dvs. fjerne absolutt alle elementer. For å gjøre dette, bruk metoden Fjern () som fjerner elementene i Array, linjer Verditabeller, eller data fra andre samlinger.

Ytterligere metoder for Array

Metode InBoundary () returnerer antall varer minus én. De. hvis vi bruker en løkke Til, så i stedet for Kvantitet-metoden, kan vi umiddelbart bruke metoden Grensen().

Spesielt kan variabelen NumberInArray defineres annerledes:

CountInArray = OurArray.Boundary ();
Når man skal beskrive selve syklusen, bør man ikke trekkes fra denne variabelen.

Sett-metoden lar deg tilordne en verdi til et Array-element etter indeks.

Syntaks: Installere(,)

Eksempel: OurArray.Set (2.8);

Alternativt alternativ: OurArray = 8;

Du kan bruke metoden for Array Motta, for å lese verdien etter indeks uten å bruke hakeparenteser.

Syntaks: Motta()

Eksempel: OurVariable = OurArray.Get (2);

Alternativt alternativ: OurVariable = OurArray;

Universell samlingsstruktur

En struktur, som en Array, kan ha et ubegrenset antall elementer, men innholdet i et element er forskjellig fra en Array.

En struktur er en samling, der hver verdi består av et par. Det første elementet i paret kalles Nøkkel... Det andre elementet i paret er Betydning.

Nøkkel Er en streng datatype som beskriver en verdi. For eksempel, Nøkkel"Kode" kan tilsvare verdien 113; Nøkkel"Navn" betyr "Vasya". Det er ingen datatypebegrensning på selve verdien.

Strukturen er veldig praktisk å bruke hvis vi ønsker å lage en bestemt liste med parametere. Hvis dette Struktur kalt Vår struktur, så vil vi referere til de to verdiene som følger: OurStructure.Code og OurStructure.Name.

Et slikt anrop er mye mer praktisk enn om vi definerte alle parameterne i en Array og fikk tilgang til dem med indeks.

Strukturen gjør programkoden lesbar (forståelig). Struktur brukes ganske ofte, mye oftere enn Array.

Den brukes til å beskrive noen parametere, som ofte finnes i et stort antall i alle algoritmer.

I tillegg brukes strukturen hvis prosedyren og funksjonen inneholder et stort antall beståtte parametere.

Da er det mye mer praktisk å skrive alle parameterne inn i strukturen og overføre den nøyaktig. De. det er en "pakke" av parametere for prosedyrer og funksjoner.

Separat bør det bemerkes at as Nøkkel absolutt ingen linje kan vises i strukturen. Visse restriksjoner er pålagt.

Nøkkel skal fungere som en identifikator. Dette betyr at i Nøkkel det må ikke være mellomrom og det kan ikke begynne med et siffer.

Tillatt start Nøkkel med en bokstav eller understrek. Og dermed, Nøkkel må oppfylle kravene for å opprette identifikatorer.

Legg merke til hvordan strukturen ellers skiller seg fra Arrayen. Strukturen har en metode Sett inn, er det to metoder for innsetting i Array: Sett inn(til en bestemt stilling) og Legge til(på slutten av listen). I en matrise er alle elementene ordnet.

En struktur er et uordnet sett. Det er derfor det bare er en innsettingsmetode for en struktur.

Verdien settes ikke inn i en bestemt posisjon, men i det angitte settet. Indeks er ikke tilgjengelig for strukturer, som for andre generiske samlinger.

Elementer i strukturen er kun tilgjengelig med navnet på nøkkelen. For hver løkke fungerer likevel for strukturen også, men du bør ikke stole på rekkefølgen til strukturens elementer.

Strukturen opprettes på samme måte som andre generiske samlinger ved å bruke New constructor, som spesifiserer datatypen Structure.

I likhet med Array kan Struct-konstruktøren ta parametere. De. det er mulig å beskrive innholdet i selve strukturen ved hjelp av konstruktøren.

I motsetning til Array, hvor du ganske enkelt kan spesifisere antall elementer for alle dimensjoner, er det i strukturen mulig å spesifisere selve innholdet.

For eksempel: OurStructure = Ny struktur ("Kode, Navn", 133, "Vasya");

Først er navnene på tastene oppført, atskilt med komma, og deretter, henholdsvis, i samme sekvens, verdiene til parameterne.

For å legge til en ny verdi til strukturen, finnes det en metode Sett inn som setter inn et nytt par (nøkkel og verdi).

For eksempel: OurStructure.Insert ("Familiemedlemmer", 3);

En annen metode er karakteristisk for strukturen, som brukes ganske ofte. Dette er metoden Eiendom.

Ved å bruke denne metoden kan du forstå om det er et slikt element i denne strukturen som har en nøkkel som og et slikt navn.

Hvis det er et slikt element, vil systemet returnere verdien True, ellers - False.

For eksempel uttrykket OurStructure.Property ("familiemedlemmer") vil være lik True. Denne metoden brukes ganske ofte i analysen av strukturen.

Som med alle generiske samlinger, kan du få tilgang til egenskapene til strukturen etter indeks. Men indeksen for en struktur er en strengverdi.

For eksempel: Rapport (OurStructure [“Familiemedlemmer”]);

Man bør imidlertid ikke glemme at en struktur er et uordnet sett med objekter, og derfor er referanse ved indeks 0, 1, 2 ikke tillatt.

Generisk samling Verdiliste

Liste over verdier er en lineær liste over elementer av enhver datatype.

Hvert element består av flere verdier. Listen over verdier kan skjematisk representeres som en liste med fire kolonner.

Den første kolonnen er merke... Den har en boolsk datatype og lar brukeren enten merke av eller fjerne merket for boksene.

En annen kolonne er et bilde som visuelt kan representere dette elementet på en eller annen måte, dvs. match denne linjen med et hvilket som helst bilde.

Den tredje kolonnen er selve den lagrede verdien, dvs. det er en hvilken som helst datatype, og den kan være forskjellig på forskjellige linjer.

Den fjerde kolonnen er utsikten, dvs. dette er en slags strengbeskrivelse av den gitte verdien. Visningen vil vises for brukeren når han ser på det gitte elementet. I dette tilfellet, hvis representasjonen ikke er spesifisert, vil systemet prøve å skaffe representasjoner for elementet i denne posisjonen selv.

Liste over verdier- dette er objektet som brukeren visuelt kan arbeide med. De. Liste over verdier kan vises på skjemaet.

Brukeren kan utføre noen handlinger med ham. I tillegg, Liste over verdier kan utledes uavhengig ved hjelp av metoder, dvs. vises på skjermen i en eller annen gren av algoritmen (med unntak av serverkoden) slik at brukeren velger en linje eller krysser av for eventuelle avmerkingsbokser.

Finne Liste over verdier i sitax-assistenten. Konstruktør Liste over verdier ikke parameterisert (ingen standardverdier kan angis).

Det finnes metoder som:

  • Sett inn(,) ;
  • Legge til(,);
  • Mengde();
  • Indeks().

Det finnes også spesielle metoder, f.eks. Unload Values ​​()... Dette oppretter en matrise som listen over verdier kopieres til. For eksempel:

ArrayElements = ListPriceTypes.LoadValues ​​​​();

Det er også en omvendt metode:
PriceTypeList.LoadValues ​​(ElementArray);

Det finnes søkemetoder:
FinnByValue (); FindById ().

Det er en kopieringsmetode:
ListCopy = PriceTypeList.Copy ();
Denne metoden er ment å gjøre en form for modifikasjon med en kopi.

Det finnes metoder:
SortByValue ();
Sorter etter presentasjon ().

Metoder SelectElement (,) og Sjekk elementer () kall opp en modal dialogboks som stopper utførelsen av algoritmen til brukeren lukker det gitte vinduet.

For å bruke disse metodene i konfigurasjonsegenskaper Måte å bruke modalitet på skal settes til verdi Bruk.

Eksempelkode kalt fra en administrert applikasjonsmodul:

Vis den gitte koden i brukermodus (modal dialog).

Under Liste over verdier brukes som en tilgjengelig datatype for skjemarekvisittene. Lag en ny rekvisita for behandlingsskjemaet, definer typen for det Liste over verdier og vis den på skjemaet.

Opprett et nytt team Gaver, overfør til skjemaet og definer en handlingsbehandler for det.

I tilpasset modus, når du klikker på Fyll gaver-knappen i behandlingsskjemaet, vil en fylt liste vises.

Om ønskelig kan listen redigeres: noen elementer kan legges til, noen kan slettes.

Allsidig samling Samsvar

Denne samlingen er veldig lik Strukturen... Akkurat som struktur er korrespondanse et sett med verdier som består av en nøkkel og selve verdien.

Hovedforskjellen er at enhver datatype kan spesifiseres som en nøkkel, så vel som for en verdi. I lys av denne særegenheten er det nødvendig å referere til matchverdien etter indeks; nøkkelverdien er spesifisert som indeksverdien.

Nøkkelen kan være en annen datatype enn en streng. Egenskaper og metoder for å jobbe med korrespondanse er praktisk talt de samme som for en struktur.

Konformitetskonstruktøren, i motsetning til strukturen, inneholder ikke muligheten til å spesifisere parametere.

Brukseksempel:

Korrespondanse er nyttig når du trenger å koble sammen to strukturer. For eksempel må hver rad i tabelldelen knyttes til en rad fra verditabellen.
I dette tilfellet brukes raden i den tabellformede delen som Match-tasten og den tilsvarende verdien er indikert.

Når du setter inn elementer i Match-samlingen ved siden av metoden Sett inn(,) det er en annen måte å sette inn en verdi på - dette er å bruke den vanlige tilordningsoperatøren.

For eksempel: Vår kamp = Ny kamp;
Match = 999

De. hvis et element ikke var til stede i samlingen, vil det bli lagt til ved hjelp av oppdragsoperatøren, og hvis det var til stede, vil det bli oppdatert.

Dette er forskjellig fra struktur.

Generisk samling Verditabell

Verditabell er en tabell med et vilkårlig antall rader og et vilkårlig antall kolonner. Krysset kan lagre verdier av enhver datatype. Ved behov kan kolonnene skrives inn, det vil si at du kan definere i hvilken kolonne hvilken type data som er lagret.

Du kan la kolonnene være utype, deretter kan verdier av forskjellige typer lagres i én kolonne i forskjellige rader.

Forskjeller Verditabeller fra 2D Array:

  • det er et objekt som brukeren kan arbeide med (verditabellen kan vises, brukeren kan fylle den ut, senere kan de innlagte dataene leses);
  • bygge indekser for raskt søk;
  • kloning, fylle hele kolonnen med en viss verdi, losse alle kolonner inn i en matrise.

Verditabell brukes som en slags buffer for lagring av informasjon. Verditabell returnert og akseptert som en parameter av mange av systemmetodene. Det er mulig å bygge en spørring til verditabellen.

Så, Verditabell består av et sett med rader og et sett med kolonner. Både rader og kolonner er samlinger.

De. inne i samlingen Verditabell det er to samlinger til. La oss gå til syntakshjelperen og finne Verditabell.

Støttede datatyper: seg selv Verditabell som består av linjer. Hver rad er representert av en datatype StringTableValues, som har sine egne egenskaper og sine egne metoder. Det er SamlingKolonnerTablerVerdier har også visse egenskaper.

Et viktig poeng! En prosedyre som former Verditabell, bør kompilere & AtServer.

Før du begynner å jobbe med Verditabell, er det nødvendig å bestemme hvilke kolonner som vil være inneholdt i den (dvs. opprette dem). Syntaks:

Legge til(,)
(valgfri)
Type: String.
(valgfri)
Type: BeskrivelseTyper
(valgfri)
Type: String.
(valgfri)
Type: Antall.

For eksempel:

For å kalle denne prosedyren, bruker vi kommandoen.

I beskrivelsen Verditabeller samlingselementene er nøyaktig RowsTablesValues.

I motsetning til kolonner, som kun består av egenskaper (navn, type, overskrift, bredde), i Radtabellverdier det er både egenskaper (referanse ved kolonnenavn) og metoder (du kan få og angi en verdi, arbeid med eiere).

For å legge til en ny rad i tabellen, må du heller bruke metoden Legge til() eller Sett inn()... I det andre tilfellet bør du angi hvilken posisjon den nødvendige linjen skal plasseres i.

For å tilordne en verdi til en kolonne, refererer vi til kolonnenavnet eller indeksen (ved hjelp av firkantede parenteser) gjennom en periode.

Til fylling Verditabeller følgende metoder kan brukes:

Fjern ()- for å fjerne alle linjer fra Verditabeller.

Fyllverdier (,)- lar deg fylle alle kolonner, eller valgte kolonner med én verdi.
Last inn kolonne (,)- laster en kolonne fra en matrise.
Last ut kolonne ()- laster ut en kolonne inn i en matrise.

De to siste metodene er praktiske å bruke når du trenger å overføre en kolonne fra en verditabell til en annen.

Kopier (,)- lar deg lage en ny basert på en eksisterende tabell Verditabell, mens det ikke angir alle linjer og alle kolonner, men bare noen av dem. Returverdien er - Verditabell.

Du kan kopiere strukturen Verditabeller... Det finnes en tilsvarende metode for dette. CopyColumns ()... Vi blir tomme Verditabell med nødvendig struktur.

V Verditabell det finnes en metode Total ()... Du kan spesifisere kolonnen der du vil summere de numeriske verdiene. I forhold til den tidligere viste koden i resultattavlen, kan du beregne verdien: TK.Total ("Beløp").

V Verditabell det er mulig å gruppere (skjule) numeriske verdier med de samme verdiene til visse kolonner ved å bruke metoden Skjul (,).

I forhold til den tidligere viste koden i resultattavlen, kan du beregne verdien: TK.Collapse ("Ukedag", "Beløp").

Verditabell kan vises på en egendefinert skjerm slik at du kan utføre alle handlinger med den. Men i motsetning til Liste over verdier du kan ikke bare kalle opp bordet til skjermen fra programkoden.

Å vise Verditabell på skjermen, opprett et skjemaattributt og tilordne en datatype til det Verditabell.

Etter det skal den resulterende tabellen vises på skjemaet.

I skjemamodulen, på slutten av den tidligere sammensatte algoritmen (i prosedyren for å lage en verditabell), legg til:
ValueVDataForm (TK, Tabell);

Generisk samling Verditre

en allsidig kolleksjon som er veldig lik Verditabell... Forskjellen fra tabellen er at radene i treet kan være underordnet hverandre, dvs. et slags hierarki kan dannes.

Kan også vises på skjermen. Et verditre er eksplisitt sammensatt av en samling strenger og en samling kolonner. Det er to egenskaper i treet, rader og kolonner.

Siden linjene kan være underordnet hverandre, kan foreldre spesifiseres for hver linje, så vel som de underordnede linjene.

La oss lage den tilsvarende kommandotreet og dens behandlingsprosedyre.

La oss skape der en overordnet rad og to underordnede.

La oss lage formrekvisittene DerZn(datatype - ValueTree).

La oss lage år og måned for denne egenskapen.

Flytt det tilsvarende elementet DerZn på skjemaet.

På slutten Prosedyrer TreeOnServer () legge til:

ValueVDataForm (TreeZn, DerZn);

La oss sjekke hva som skjedde i brukermodus.

Ved hjelp av knappen Legge til nye linjer kan legges til. De kan også danne et hierarki.

For å krysse alle elementene i verditreet, må vi bruke rekursjon, dvs. kaller en prosedyre fra seg selv. For eksempel kan behandling av et verditre se slik ut:

Dette avslutter vårt første bekjentskap med universelle samlinger.

I den neste artikkelen skal vi se på en viktig mekanisme som en utvikler kan bruke for å forenkle tilgangen til et referanseelement fra kode.

I denne enheten vil vi bli kjent med en ny datatype av 1C-språket, som kalles Liste over verdier.

Liste over verdier er en rekke, men med store muligheter. Og i så fall er det også en samling av data og et sett med tall kan plasseres i den:

// opprettet en liste over verdier

Liste Legg til (23);

Så langt ser alt mye ut som en array, ikke sant? Men la oss gå videre. For å vise disse tallene til brukeren, skriv:

// gå gjennom hvert element i listen For hvert element fra listesyklusrapporten (Element.Value);

// vis verdien til EndCycle-elementet;

Og det er også den første forskjellen. Elementene i en vanlig matrise er tallene i seg selv. Og tilgang til den nåværende verdien av elementet Liste vi får med alternativet Betydning bruke konstruksjonen Element. Betydning.

La oss vurdere noen tilleggsfunksjoner Verdier.

Vet hvordan man sorterer

For eksempel kan vi enkelt sortere en liste med verdier. Listen kan gjøre det selv:

List.Sort by Value (Sort Direction.Azr); Når det gjelder en vanlig matrise, må vi implementere en av sorteringsalgoritmene (for eksempel en boble).

Vet hvordan du søker

Listen over verdier er i stand til å søke etter elementene selv. La oss si at vi ønsker å finne ut om nummeret som er angitt av brukeren er på listen vår:

Skriv inn nummer (nummer); // skrev inn et tall fra brukeren FoundItem = List. FinnByValue (Tall);

Hvis FoundElement = Undefined Then OpenValue ("Tall" + Tall + "finnes ikke i listen!"); Ellers

OpenValue ("Number" + Number + "er i listen. Her er det:" + FoundElement.Value);

Slutt om; Liste over verdier

Støtter innsetting og sletting

En liste over verdier, som en matrise, støtter innsetting og sletting av elementer:

Liste. Sett inn (0, 1000);

// sett inn tusen helt i begynnelsen av listen Liste Slett (О); // og fjern den umiddelbart fra listen. Sett inn (List.Number (), 13);

// sett inn 13 på slutten av listen Rapport (List [List.Quantity () - 1]);

// vis det siste elementet i listen (13)

Støtter firkantede braketter

Som du allerede har forstått, starter nummereringen av elementene i listen også fra null, og vi kan referere til ethvert element ved å bruke indeksen ved hjelp av firkantede parenteser:

Rapport (Liste.Verdi); // hentet frem det andre elementet i listen. Dermed kan vi gå over alle elementene i listen slik:

For A = 0 Etter Liste.Tall () - 1 syklusrapport (Liste [A]. Verdi);

Slutt på syklus;

Vet hvordan man lager sin egen kopi

En liste over verdier har en veldig kul funksjon - den kan lage sin egen kopi selv:

CopyList = List.Copy ();

// laget en kopi av listen // nå kan vi trygt endre CopyList // mens den originale listen ikke vil endre CopyList. Verdi = 123456;

Vet hvordan man blir til en array

Og til slutt kan du enkelt laste ut alle elementene i listen til en matrise når som helst:

ArrayNumbers = Liste. UnloadValues ​​();

// lastet ut i en matrise

For A = 0 etter matrisenummer () - 1 syklus

Rapport (ArrayNumbers [A]); // trenger ikke å spesifisere // alternativ Verdi

Slutt på syklus;

For å utarbeide og konsolidere materialet til denne enheten, anbefales det å fullføre følgende oppgave.

Det er nødvendig å legge inn 5 tall fra brukeren, finne de største og minste av dem og vise dem til brukeren. Løsningen må bruke en verdiliste.

Løsning

Liste = Ny liste over verdier;

// opprettet en liste med verdier for A = 1 x 5 løkkenummer = 0;

Skriv inn nummer (nummer); // skriv inn et tall fra brukerlisten. Legg til (nummer); // og legg den til i End of Loop-listen; // og så videre 5 ganger

// sortere listen over tall

Liste. Sorter etter verdi (Sorteringsretning. Stigende);

// etter sortering er det første elementet i listen // det minste elementet, og det siste er det største OpenValue ("Minste element" + List +

", og den største" + Liste [List.Number () - 1]);

Full syntaks (klikk for å utvide)

Liste over verdier

Beskrivelse:

En liste over verdier er et objekt som ikke er lagret i databasen, som lar deg bygge dynamiske sett med verdier for å løse grensesnittproblemer og manipulere dem (legge til, redigere, slette elementer, sortere). Den kan fylles med verdier av enhver type, dvs. typene lagrede verdier i samme liste kan være forskjellige. Et av eksemplene på bruk av dette objektet kan være organiseringen av valget av et spesifikt dokument fra listen over mulige dokumenter, generert av en kompleks algoritme.

Samlingsartikler: Varelisteverdier

For et objekt er en samlingsgjennomgang tilgjengelig ved å bruke operatøren For alle ... Fra ... Syklus... Traverseringen velger elementene i samlingen.

Det er mulig å referere til et samlingselement ved å bruke [...]-operatøren. Indeksen til elementet sendes som et argument ( nummerering fra 0).

Egenskaper:

Metoder:

Sett inn (Indeks, Verdi, Vis, Markup, Bilde) Setter inn et nytt element i listen over verdier ved den angitte indeksposisjonen.SelectElement (Tittel, Element) Henter opp et vindu for interaktivt valg av ett av elementene som er inkludert i listen over verdier. Element- elementet som verdilisten først skal plasseres til under interaktivt valg. Hvis parameterverdien ikke er et element i listen over verdier som er inkludert i denne listen, vil ikke posisjonering forekomme.Last ned verdier() Oppretter en matrise og kopierer verdiene til elementene i verdilisten inn i den.Legg til (Verdi, Vis, Markup, Bilde) Legger til et nytt element på slutten av listen over verdier.Lastverdier(ArrayValues) Laster inn en liste over verdier med verdier fra den beståtte matrisen. I dette tilfellet slettes alle tidligere elementer i listen.Fyll inn(Flagg) Markerer alle elementer i en verdiliste.Indeks (element) Henter indeksen til elementet i listen over verdier. Hvis ikke funnet, returneres -1.Count () Henter antall elementer i listen over verdier.FinnByValue(LookupValue) Søker etter verdien til et element i en liste med verdier. Hvis ingen elementer lagrer en verdi som er lik den ønskede, returneres verdien Udefinert. Finn etter ID(ID) Får en liste over verdier etter ID. Hvis elementet ikke blir funnet, returnerer det Udefinert. Sjekk elementer(Tittel) Merker eller fjerner merket (interaktivt) i listen over verdier. Returnerer ekte hvis "OK"-knappen trykkes i dialogboksen, Å ligge- ellers.Slett () Tømmer listen over verdier ved å fjerne alle elementer fra den.ShowSelectItem(DescriptionClose Alerts, Title, Element) Kaller opp et vindu for interaktivt valg av ett av elementene som er inkludert i listen over verdier.VisTelementerLabel(DescriptionClose Alerts, Title) Den er beregnet for interaktiv innstilling av tilstandene til markeringer for elementene i listen over verdier.Hent (indeks) Henter verdien ved indeksen. Fungerer på samme måte som operatøren.Shift (Element, Offset) Flytter elementet i verdilisten fremover eller bakover med det angitte antallet posisjoner.Kopier () Oppretter en kopi av listen over verdier.Sorter etter verdi(Retning) Sorterer listen over verdier i stigende eller synkende rekkefølge av verdiene lagret av elementene. Se eksempel nedenfor.Sorter etter visning(Retning) Sorterer listen over verdier i stigende eller synkende alfabetisk rekkefølge av representasjonene av elementene i listen over verdier. Se eksempel nedenfor.Remove (Item) Fjerner et element fra listen over verdier, hvor Element- indeksen til elementet som skal fjernes, eller selve elementet.

Konstruktører:

Ny liste over verdier
& OnClient-prosedyre ExecuteCode (kommando) /// Hvordan lage en liste over verdier i 1c 8.3, 8.2 Liste = Ny liste over verdier; /// Hvordan legge til et element i listen over verdier i 1s 8.3, 8.2 // legg til metodeparametere:// - betydning // - opptreden // - merke (valgfritt) // - bilde (valgfritt) Liste. Legg til (1980, // elementverdi "Vasyas fødselsår"// opptreden ) ; Liste. Legg til (1985, "Yulias fødselsår") ; // verdier kan være av forskjellige typer Liste. Legg til ("Polina", "Barnets navn"); /// Hvordan sette inn et element i en liste med verdier i 1s 8.3, 8.2 // sett inn ved posisjon # 2 (elementer er nummerert fra 0) // element med verdi 2010 og visning // "Fødselsår for deres felles datter" Liste. Lim inn (2, 2010, "Året for deres felles datters fødsel") ; /// Hvordan omgå elementer i en liste over verdier i 1c 8.3, 8.2 For hvert element fra listesyklusrapporten (Element. Representasjon + ":" + String (Element. Verdi)); Slutt på syklus; /// Slik sletter du listen over verdier i 1s 8.3, 8.2 Liste. Fjern (); Liste. Legg til ("mandag"); Liste. Legg til ("tirsdag"); Liste. Legg til ("onsdag"); /// Hvordan finne ut antall elementer i en liste med verdier også /// få elementet i listen etter indeksen i 1s 8.3, 8.2 // nummerering fra null For indeks = 0 etter liste. Antall () - 1 syklusrapport (liste [indeks]); Slutt på syklus; /// Hvordan finne et listeelement etter verdien i 1c 8.3, 8.2 ValueTuesday = Liste. FindByValue ("tirsdag"); /// Hvordan finne ut indeksen til et element i en liste i 1s 8.3, 8.2 Rapport (List. Indeks (Betydende tirsdag)); // 1, siden nummerering er fra null /// Hvordan sortere listen etter verdiene i 1c 8.3, 8.2 // var: mandag, tirsdag, onsdag Liste. Sorter etter verdi (Sorteringsretning. Synkende); // nå: onsdag, mandag, tirsdag /// Hvordan fjerne et element fra en liste over verdier i 1c 8.3, 8.2 // fjern det første elementet // parameter: listeelement // eller elementindeks// du kan gjøre denne listen. Slett (Liste [0]); // eller noe // Liste Slett (0); /// Hvordan flytte et element i en liste med verdier i 1s 8.3, 8.2 // flytt nullelementet én posisjon fremover // var: mandag tirsdag Liste. Skift (0, 1); // ble: tirsdag mandag /// Hvordan lage en kopi av listen i 1s 8 Kopi av liste = Liste. Kopier (); Farger = Ny liste over verdier; Farger. Legg til ("Rød"); Farger. Legg til ("Grønn"); Farger. Legg til ("Blå"); /// Hvordan laste ut verdiene til en liste inn i en matrise i 1c 8.3, 8.2 Array of Colors = Farger. UnloadValues ​​(); /// Slik laster du listeverdier fra en matrise i 1c 8.3, 8.2 Farger. LoadValues ​​(ArrayColors); Slutt på prosedyre /// Hvordan lage et modellløst valg av en verdi fra en liste /// verdier i 1s 8.3, 8.2& OnClient-prosedyre How toMakeNonmodal ValueSelection (Command) Colors = New List of Values; Farger. Legg til ("Rød"); Farger. Legg til ("Grønn"); Farger. Legg til ("Blå"); // prosedyre AfterSelectionElement er definert rett nedenfor AlertAfterItemSelection = Ny varselbeskrivelse ( "AfterItemSelection", ThisObject); Farger. ShowItemSelect (AlertAfterItemSelection, "Velg din favorittfarge"); Sluttprosedyre og OnClient-prosedyre EtterElementSelection (element, parametere) Eksporter hvis element<>Udefinert Deretter Rapporter (Element. Verdi); Slutt om; Slutt på prosedyre /// Hvordan merke verdier fra en liste uten modeller /// verdier i 1s 8.3, 8.2& OnClient-prosedyre Hvordan lage ikke-ModalValuesClicker (kommando) farger = NewList; Farger. Legg til ("Rød"); Farger. Legg til ("Grønn"); Farger. Legg til ("Blå"); // prosedyre AfterDemarkElements er definert rett nedenfor AlertAfterElementsClicker = Ny varselbeskrivelse ( "AfterCelementElements", ThisObject); Farger. ShowElementClick "Velg favorittfargene dine"); Farger. FyllRemarks (True); Sluttprosedyre og OnClient-prosedyre etter kontroll av varer (varer, parametre) Eksporter hvis varer<>Udefinert deretter for hver farge fra elementer Loop If Color. Hake av og deretter rapportere (farge. verdi); Slutt om; Slutt på syklus; Slutt om; Slutt på prosedyre /// Hvordan gjøre et modalt utvalg av en verdi fra en liste i 1c 8.3, 8.2& OnClient-prosedyre How toModalValueSelection (Command) Colors = New List of Values; Farger. Legg til ("Rød"); Farger. Legg til ("Grønn"); Farger. Legg til ("Blå"); SelectColor = Farger. Velg en ( "Velg din favorittfarge"); Hvis VybColor<>Udefinert Deretter rapporter (SelectColor. Verdi); Slutt om; Slutt på prosedyre /// Hvordan lage et modalt merke av verdier fra en liste /// verdier i 1s 8.3, 8.2& OnClient-prosedyre Hvordan lageModalValuesList (Kommando) Colors = NewList of Values; Farger. Legg til ("Rød"); Farger. Legg til ("Grønn"); Farger. Legg til ("Blå"); Hvis farger. Sjekk elementer ( "Velg favorittfargene dine") Deretter For hver farge Fra Color Loop If Color. Hake av og deretter rapportere (farge. verdi); Slutt om; Slutt på syklus; Slutt om; // men dette er hvordan du kan sette alle merkene på en gang // liste til en bestemt verdi Farger. FyllRemarks (True); Slutt på prosedyre /// Last ned og kjør disse eksemplene på datamaskinen din