1c kako dobiti vrijednost iz niza. Kako stvoriti fiksni niz

Niz u 1C je skup nekih vrijednosti. Vrijednosti u jednom nizu mogu biti različiti tipovi.

Niz se može dobiti izvođenjem različitih funkcija, npr. Učitaj stupac () tablice vrijednosti; u obliku niza, možete dobiti odabrane retke dinamičkog popisa itd. Također možete kreirati niz "ručno".

Kreiranje niza

1. Kako stvoriti niz željene veličine

nArray = novi niz (4); // stvorio niz od 4 elementa

PArray [0] = "Mi";
nArray [1] = "stvoreno";
nArray [2] = "novo";
nArray [3] = "niz";

2. Kako stvoriti prazan niz i dodati elemente u njega

nArray = novi niz; // stvorio prazan niz

// Umetnite vrijednosti elemenata niza

PARray. Dodaj ("Mi");


3. Kako stvoriti višedimenzionalni niz.

Razmotrimo ovo pitanje na primjeru dvodimenzionalnog niza, budući da se nizovi velikih razmjera koriste mnogo rjeđe, a mehanizam njihovog rada ne razlikuje se od dvodimenzionalnog.

nArray = novi niz (4, 2); // stvorio niz 4x2

// Umetnite vrijednosti elemenata niza, numerirajući svaku riječ

PArray [0] [0] = "1.";
nArray [0] [1] = "Mi";
pArray [1] [0] = "2.";
nArray [1] [1] = "stvoreno";
pArray [2] [0] = "3.";
nArray [2] [1] = "višedimenzionalni";
pArray [3] [0] = "4.";
nArray [3] [1] = "niz";

4. Kako stvoriti fiksni niz

Fiksni niz razlikuje se od običnog niza po tome što se ne može mijenjati. Ne možete dodavati, uklanjati ili mijenjati vrijednosti elemenata takvog niza.

Fiksni niz se može dobiti iz običnog:

nArray = novi niz;

PARray. Dodaj ("Mi");
pArray. Dodaj ("stvoreno");
pArray. Dodaj novi");
pArray. Dodaj ("niz");

FArray = novi fiksni niz (nArray); // stvorio fiksni niz

Funkcije niza

Razmotrit ćemo rad funkcija na primjeru jednodimenzionalnog niza pArray kreiran iznad i sastoji se od 4 elementa:

  1. "Stvoren"
  2. "novi"
  3. "Niz".
Funkcija VBoundary ()

Dobiva najviši indeks elementa u nizu. Uvijek je jedan manji od broja elemenata u nizu.

Indeks = nArray. BBorder () // 3;

Funkcija Umetni ().

Umeće neku vrijednost u element niza na navedenom indeksu. Naredni elementi niza su pomaknuti

pArray. Umetni (3, "nova vrijednost") // Sada se niz sastoji od 5 elemenata

Dodaj () funkciju

Stvara novi element na kraju niza i tamo umeće zadanu vrijednost

pArray. Dodati("." ) // dodana točka kao peti element niza;

Funkcija Količina ()

Vraća broj elemenata u nizu.

pArray. Količina() ; // 4

Funkcija Find ().

Pretražuje niz za navedeni element. Ako ga pronađe, vraća njegov indeks. Ako se ne pronađe, vraća se Nedefiniran.

Indeks = nArray. Pronađite ("niz"); // 3
Indeks = nArray. Pronaći( "niz koji nije postojao"); // Nedefiniran

Funkcija brisanja ().

Uklanja sve vrijednosti iz niza.

pArray. Čisto ();

Funkcija Get ().

Dobiva vrijednost niza u njegovom indeksu. Isti zadatak se može riješiti kroz.

Vrijednost = nArray. Dobiti (3) // "niz"
Vrijednost = nArray [3]; // "niz"

Izbriši ().

Uklanja element niza po indeksu

pArray. Izbriši (3);

Postavite () funkciju

Postavlja vrijednost elementa niza po indeksu. Djeluje na isti način.

pArray. Skup (3, "niz!");
nArray [3] = "niz!" ;

Kako prijeći niz

Možete prijeći sve elemente niza bez navođenja indeksa:

Za svaki element niza iz n niza petlje
Izvješće (element niza);
Kraj ciklusa;

Indeks možete koristiti prilikom indeksiranja:

Za Indeks = 0 po nArray. B Granica () Ciklus
Izvješće (pArray [Indeks]);
Kraj ciklusa;

Kako prijeći višedimenzionalni niz

Višedimenzionalni niz prelazi se pomoću istih petlji (vidi gore), ali jedna petlja mora biti ugniježđena u drugu.

Za svaki Element1 iz petlje mArray
Za svaki Element2 iz petlje Element1
Izvješće (stavka 1);
Kraj ciklusa;
Kraj ciklusa;

Ili pomoću indeksa.

mArray = novi niz (3, 4);

Za Index1 = 0 po mArray. B Granica () Ciklus
Za indeks2 po nizu [Indeks1]. U graničnom () ciklusu
Izvješće (mArray [Indeks1] [Indeks2]);
Kraj ciklusa;
Kraj ciklusa;

Razvrstavanje niza

Za sortiranje niza potreban nam je pomoćni objekt tipa Popis vrijednosti.

ListValue = nova ListValue; // kreirati popis vrijednosti
ListValue LoadValues ​​(pArray); // učitava vrijednosti iz niza u listu
ListValue Poredaj po vrijednosti (Smjer sortiranja. Uzlazno); // sortiraj uzlaznim redoslijedom
ListValue Sort By Value (Smjer sortiranja. Silazno); // ili silazno
pArray = Popisna vrijednost Istovar (); // izbaci sortirane vrijednosti natrag u niz

Usporedba dva niza

Prije nego što prijeđemo na opis funkcije za usporedbu, dogovorimo se da se nizovi smatraju identičnim ako imaju isti broj elemenata i ako su odgovarajući elementi nizova jednaki. Zatim se za usporedbu može koristiti sljedeća funkcija (usput rečeno, takva je funkcija već prisutna u nekim tipičnim konfiguracijama):

Funkcija Usporedi nizove (Niz1, Niz2)

Ako je niz 1. Količina()<>Niz2. Količina () Zatim
Vrati FALSE; // Nizovi nisu jednaki, nema smisla uspoređivati ​​elemente.
Završi ako;

Za indeks = 0 po nizu1. B Granica () Ciklus
Ako niz1 [Indeks]<>Niz2 [Indeks] Zatim
Vrati netočno; // ti elementi nisu jednaki, pa ni nizovi nisu jednaki
Završi ako;
Kraj ciklusa;

Vrati True; // Ako smo došli ovdje, tada su nizovi jednaki
EndFunction

Funkciji morate proslijediti 2 uspoređena niza. Funkcija vraća vrijednost Pravi ako su nizovi jednaki, i Laž ako ne i jednaki.

Koncept "niza" dugo se koristi u programiranju i najčešće se shvaća kao neka struktura u memoriji koja se sastoji od niza elemenata. Niz u 1C je najjednostavniji od univerzalnih kolekcija vrijednosti. Osim niza, generičke zbirke uključuju:

  1. Popis vrijednosti (za razliku od niza, vrijednosti s popisa imaju pogled, implementirana je mogućnost sortiranja i sučelja zbirke);
  2. Tablica vrijednosti je zbirka koja ima stupce za prošireni opis vrijednosti; slična struktura se može dobiti pokretanjem upita;
  3. Stablo je vrlo slično tablici, dopunjeno strukturom podređenosti;
  4. Struktura - dinamički skup imena i vrijednosti varijabli;
  5. Podudaranje je slično strukturi, osim što se varijable ne uparuju s prikazima nizova, već jedna s drugom.

Metode niza

Programsko kreiranje instance polja izvodi se pomoću New operatora () (slika 1).

Kao što možete vidjeti iz danog primjera, nizovi se mogu kreirati s fiksnim brojem elemenata ili bez ovog ograničenja.

Prije nego počnemo raspravljati o metodama rada s nizom, definirajmo dva koncepta:

  • Indeks elementa - može se predstaviti kao redni broj jedne vrijednosti;
  • Broj elemenata - broj elemenata u kolekciji, njegova definicija dostupna je pomoću metode Count ().

Važno je znati: u 1C, brojanje vrijednosti bilo koje zbirke počinje od 1, a distribucija indeksa od 0, odnosno prvi element u nizu ima indeks 0. Dakle, prelazeći zbirku pomoću petlja s iteratorom mora početi od 0 i završiti s brojem elemenata minus 1, inače će sustav koji koristi prozor (slika 2) obavijestiti o pojavi iznimne situacije.

sl. 2

Svaki konfiguracijski objekt ima svoje metode za rad, niz nije iznimka, nabrojimo ih s nekim dekodiranjem:

  • VBoundary () - pomoću metode možete dobiti maksimalni indeks elementa; za prazan niz bit će vraćena vrijednost (-1);
  • Insert () - ova metoda ima dva parametra: indeks i vrijednost, indeks označava gdje treba umetnuti novi element u niz, dodana vrijednost može biti prazna;
  • Dodaj () - ova metoda umetanja vrijednosti može se koristiti kada mjesto elementa nije bitno, uz njegovu pomoć novi podaci će biti upisani na kraj postojećeg niza;
  • Pronađite () - u slučaju uspješna implementacija vraća indeks vrijednosti navedene u zagradama, inače vraća "Nedefinirano";
  • Clear () - briše kolekciju;
  • Get () - čita podatke koji se nalaze u nizu na navedenom indeksu, može se zamijeniti uglate zagrade ;
  • Izbriši () - briše element s navedenim indeksom;
  • Set () - zamjenjuje podatke u navedenoj ćeliji niza.

Jednodimenzionalni i višedimenzionalni nizovi

U najjednostavnijem slučaju, jednodimenzionalni niz može sadržavati vrijednosti različitih tipova (slika 3)

Slika 3.

Rezultat izvršavanja gornjeg koda prikazan je na slici 4

Slika 4

Dakle, dobili smo jednodimenzionalni niz koji se sastoji od vrijednosti niza, reference na referentni element i datuma. Istodobno, prilikom dodavanja elemenata koristili smo dvije različite metode Add () i Insert (), ako bismo prilikom dodavanja datuma koristili metodu Add (), naš bi rezultat imao nešto drugačiji izgled.

U srednjoj školi se uvodi koncept dvodimenzionalne matrice. Ovo je skup podataka, čiji svaki element ima dva indeksa (u najjednostavnijem slučaju, serijski broj okomito i vodoravno), ona je ta koja najbolje ilustrira koncept dvodimenzionalnog niza.

Izradom takve matrice možete odrediti broj redaka i stupaca koji će se koristiti.

Recimo da smo suočeni sa zadatkom kreiranja niza od prezimena, imena i patronima dvoje zaposlenika. Pomoću koda (slika 5.) kreiramo odgovarajući niz s fiksnim brojem stupaca i redaka.

Slika 5

Da bismo ga prešli, potrebne su nam dvije petlje, u prvoj petlji prelazimo niz red po redak, u drugoj raščlanimo redak na elemente. To se može učiniti ili uz pomoć ciklusa „Za svakoga…. Od "(Sl.6)

Slika 6

Ili pomoću petlje s iteratorom "For ... by" (slika 7)

Slika 7

U principu, broj dimenzija određenog niza može biti bilo što, druga stvar je to u slučaju veliki broj Razine detalja dovoljno je teško stvoriti alat za čitanje podataka.

Korištenje niza

Nizovi u 1C najčešće se koriste za:

  1. Izrada raznih filtara koji se koriste pri radu s upitima i drugim zbirkama vrijednosti;
  2. Prijenos popisa kao parametara između procedura i funkcija;
  3. Razmjena podataka s vanjskim komponentama povezanim pomoću COM tehnologije.

Naravno, ovo je daleko od potpunog popisa svrha za koje se objekt "Niz" može koristiti.

1C niz je jednostavan skup vrijednosti. Možete dodati vrijednosti različitih vrsta u jedan 1C niz. Nakon dodavanja, prisutnost vrijednosti u nizu 1C može se provjeriti pomoću ugrađenog pretraživanja.

Niz 1C se često koristi:
A) Za borbe
B) Za spremanje popisa vrijednosti za daljnju upotrebu, na primjer, proslijedite ga kao parametar funkciji/proceduri.

Rad s 1C nizovima

Kreirajmo niz 1C od 2 vrijednosti:
Niz = Novi niz (); // niz bez fiksnog broja vrijednosti

Niz.Dodaj (RNG.Nasumični broj (0, 1000));
Niz.Dodaj (RNG.Nasumični broj (0, 1000));

// petlja kroz svaku vrijednost 1C niza, bez obzira koliko

Izvješće (Znch);
Kraj ciklusa;

Kreirajmo niz 1C od 10 vrijednosti:
Niz = Novi niz (10); // niz s fiksnim brojem vrijednosti
RNG = Novi generator slučajnih brojeva (); // ispunit će se slučajnim brojevima

// indeks polja počinje od nule, a ne od jedinice
// 10 komada su od 0 do 9
Za MF = 0 do 9 ciklusa
// pristup nizu Ime polja [Index]
Niz [Nr] = RNG.Nasumični broj (0, 1000); // slučajni broj od 0 do 1000
Kraj ciklusa;

// petlja kroz svaku vrijednost niza, bez obzira koliko
Za svaki Znch iz niza petlje
Izvješće (Znch);
Kraj ciklusa;

// obratite pažnju - 10 vrijednosti polja, to znači da ih ima 10 prema zadanim postavkama i svaka vrijednost je NEDEFINIRANA dok ne postavimo drugu
// to ne znači da ne možemo dodati drugu vrijednost, 11e, s ArrayName. Add ();

Višedimenzionalni niz

Napravimo višedimenzionalni niz 1C 2x2. Višedimenzionalni niz 1C, što znači da svaka ćelija 1C polja ne sadrži vrijednost, već i 1C niz.

Višedimenzionalni 1C niz ne mora biti fiksiran. Napravimo višedimenzionalni 1C 2x2 niz bez navođenja fiksnog broja vrijednosti:

Izrada 1C polja od nule

Dohvaćanje podataka je dugotrajan i resursno intenzivan postupak. Stoga, ako trebate više puta raditi s primljenim podacima, ima smisla dobiti ih jednom i spremiti u 1C niz, kako biste dalje radili s već primljenim i spremljenim podacima.

Na primjer - redak verzije programa izgleda ovako "11.0.9.5" - četiri broja, odvojena točkama. Verziju možemo prevesti u "računalni" format - niz od četiri numeričke vrijednosti. Zatim možemo dalje međusobno usporediti verzije:

Dobivanje gotovog 1C niza s podacima

1C niz može se dobiti iz popisa vrijednosti pomoću metode List.UploadValues ​​() i iz tablice vrijednosti pomoću metode tTable.UploadColumn ().

U donjem primjeru postavljamo zahtjev - odabiremo sve poveznice dokumenata iz baze podataka.

  • QueryResult = Query.Run () // izvršava upit
  • mzResult = QueryResult.Dump () // izbacuje rezultat u tablicu vrijednosti
  • mRefsArray = tzResult.UploadColumn ("ColumnName") // učitava stupac tablice u niz

Primanje 1C polja od drugih objekata i korištenje kao odabir u zahtjevu

Kada se na obrascu nalazi popis dokumenata (ili tablica vrijednosti), korisnik može odabrati jedan redak kursorom. Također možete dopustiti odabir više redaka u isto vrijeme. Za odabir nekoliko redaka (ako to nije dopušteno na obrascu), trebate držati pritisnutu tipku CTRL ili SHIFT.

Dodajte tablicu vrijednosti u obrazac debelog klijenta i odaberite DocumentList.DocumentName kao njegovu vrstu. U svojim svojstvima odaberite način odabira - višestruki.

Programski možemo dobiti popis odabranih linija:

Ako koristite kontrolirani oblik, tada prvo morate dodati atribut obrasca s tipom DynamicList i u njegovim svojstvima odabrati glavnu tablicu - potrebni dokument... Povucite rekvizite na obrazac. U svojstvima elementa obrasca (!) Odaberite također - način odabira - višestruko (ovo je postavljeno prema zadanim postavkama).

Pozivanje na 1C niz odabranih linija izgledat će ovako:
Elements.FormAttributeName. Odabrani redovi

Bilo je potrebno (ne pitajte zašto) pronaći i analizirati sve moguće kombinacije elemenata niza proizvoljne duljine. Ovo je problem udžbenika. Budući da se broj mogućih elemenata i duljina kombinacije ne određuju u fazi postavljanja problema, nameće se rekurzivno rješenje. I što nalazim na temu? Ništa za 1C, ali mnogo različitih implementacija u Syakh, Delphi, pa čak i VBA.

Pa, mislim da moramo prevesti. Prevedeno na 1C. Ali bilo je potrebno da bez ponavljanja istog elementa dobivene kombinacije budu. Počeo je dodavati i uređivati. Kao rezultat toga, od izvornog algoritma nije ostalo ništa, a sama implementacija postala je kraća od predloženog u C-u, pa čak i s dodatnom opcijom bez ponavljanja elemenata u mogućim kombinacijama.

Sama funkcija:

// mElements - niz proizvoljnih elemenata koji tvore kombinacije. Samovoljno. // PermutationLength je broj elemenata u kombinaciji. Cijeli. // NoRepeats - znak potrebe za primanjem kao rezultat kombinacije u kojoj bi se isti element elementa pojavio ne više od 1 puta. Boolean. Zadana vrijednost je False. Funkcija permutacije (mElements, PermutationLength, NoRepeat = False, Base = Undefined, mResult = Undefined, TekLevel = 0) Izvezi Ako je Base = Undefined Onda Base = New Array EndIf; Ako je mResult = Undefined Tada je mResult = Novi niz EndIf; Ako TekLevel< ДлинаПерестановки - 1 Тогда Для Каждого Элемент Из мЭлементов Цикл Если БезПовторов И НЕ Основание.Найти(Элемент) = Неопределено Тогда Иначе Основание.Добавить(Элемент); мРезультата = Перестановки(мЭлементов, ДлинаПерестановки, БезПовторов, Основание, мРезультата, ТекУровень + 1); Основание.Удалить(Основание.Количество() - 1); КонецЕсли; КонецЦикла; Иначе Для Каждого Элемент Из мЭлементов Цикл Если БезПовторов И НЕ Основание.Найти(Элемент) = Неопределено Тогда Иначе Основание.Добавить(Элемент); мРезультата.Добавить(Новый ФиксированныйМассив(Основание)); Основание.Удалить(Основание.Количество()-1); КонецЕсли; КонецЦикла; КонецЕсли; Возврат мРезультата; КонецФункции

Što se argumenata tiče, nadam se da je sve jasno iz opisa. Na temelju rezultata: na izlazu dobivamo niz fiksnih nizova. Fiksni niz je moguća kombinacija, a broj elemenata rezultirajućeg niza je broj pronađenih (mogućih) kombinacija. Svaki fiksni niz sastoji se od PermutationLength niza mElements - to jest, nekog skupa elemenata izvornog skupa vrijednosti. Ili jedna od mogućih kombinacija.

Očigledna stvar, ali svejedno ću vas upozoriti. Ako je PermutationLength u argumentima veći od broja elemenata u nizu mElements, a uvjet jedinstvenosti je True, rezultat će biti prekrasan, ali prazan niz rezultata. Zašto? Da, jer je nemoguće prikupiti kombinaciju duljine Y od X mogućih elemenata bez ponavljanja ako X

Korištenje nizova u 1C pomaže organizirati elemente koji se koriste u radu.

To je softverski skup elemenata. Služi za:

  • Odabir vrijednosti.
  • Sortiranje. Svakoj poziciji u nizu je dodijeljen indeks. To olakšava pronalaženje. I možete se pozvati na objekt tako što ćete napisati njegov broj.
  • Kombiniranje i spremanje zapisa.
  • Razdvajanje grupa, stvaranje podnizova.
  • Niz je sam po sebi objekt. Na njega će biti vezana varijabla. Možete se pozivati ​​na pojedine njegove dijelove ili ga u cijelosti koristiti u postupcima. Na primjer, možete kombinirati grupu vrijednosti "Zaposlenici u odjelu N" i tamo dodati imena i prezimena zaposlenika.

Povucimo analogiju. Zamislite policu za knjige. U njemu su knjige poredane u različite "ćelije". Ako vodite evidenciju, znat ćete gdje se svaki objekt nalazi. I lako ga možete dobiti. Ali ako su knjige, časopisi i novine nasumično razbacane po stolu, potraga za pravom stvari će biti odgođena. Iako to ne odražava sve mogućnosti jedinstvenih kolekcija.

Stvaranje

Rad s 1C nizovima počinje njihovim stvaranjem. Trebate "mjesto radnje" - polje u koje ćete unijeti kod.

  1. Otvorite "Konfigurator" ("Konfiguracija").
  2. Desnom tipkom miša kliknite stavku "Obrada".
  3. Odaberite "Dodaj".
  4. Pojavljuje se podizbornik Processing1. Istaknite ga. Informacije o njemu bit će prikazane u radnom području.
  5. Na kartici Općenito unesite Ime. Recimo "TestArray".
  6. Otvorite odjeljak "Obrasci".
  7. Kliknite na ikonu povećala.
  8. Označite opciju "Obrada obrasca".
  9. Kliknite na "Završi".
  10. Otvorit će se prozor s tri okvira. U gornjem desnom kutu idite na karticu "Naredbe".
  11. Ikona plus za dodavanje pozicije.
  12. Pojavit će se stavka "Command1". Istaknite ga.
  13. U polje Ime unesite naziv. Na primjer, "TestValues". Kopirajte ga u zaglavlje.
  14. U retku "Akcija" kliknite na povećalo.
  15. Stavka "Kreiraj na klijentu" i "U redu".
  16. Ovdje je modul u koji možete unijeti kod.

Za prikaz srednjeg rezultata stvorite "gumb". Zašto je to potrebno u nizu - shvatit ćete malo kasnije.

  1. Idite na karticu "Obrasci". Ona je dolje.
  2. Desnom tipkom miša kliknite "Naredbena ploča".
  3. "Dodaj - Gumb".
  4. Dajte joj bilo koje ime. Ili možete ostaviti zadani.
  5. U polju Naziv naredbe kliknite na ikonu elipse.
  6. Odaberite Testne vrijednosti. Ako ste naredbu nazvali drugačije, bit će drugačiji naslov.

Sada možete početi raditi s zbirkama. Ali nemojte misliti da u 1C možete odmah rastaviti niz u niz. Bolje je početi s nečim lakšim. Iako su sve funkcije skup operatora koje samo trebate zapamtiti.

  1. Otvorite karticu "Modul".
  2. Tekst koji dolazi nakon dvije kose crte naprijed (dvije kose crte - "//") može se obrisati. Izgleda nešto poput "// Umetanje sadržaja rukovatelja". Ovo su objašnjenja. Piše ih programeri kako se ne bi zbunili u kodu.
  3. Napišite svoj tekst između operatora "Procedure" i "EndProcedure".
  4. Sada kreirajte skup vrijednosti. Smislite varijablu koja će je konvencionalno označavati. Recimo "FirstArray".
  5. Treba ga povezati s objektom. Da biste to učinili, unesite naredbu "FirstArray = New Array ()". Ovo je zbirka koja može sadržavati neograničen broj stavki. Ako imate fiksnu veličinu, navedite je nakon naredbe u zagradama "Novi niz (5)". Sukladno tome, dvodimenzionalna kolekcija će izgledati kao "Novi niz (7, 5)". Možete stvoriti višedimenzionalne skupove.
  6. Dok tipkate, mogu se pojaviti savjeti koji predlažu prikladne operatore.
  7. Riječi se razlikuju po boji. Varijable imaju jednu boju, funkcije imaju drugu boju.
  8. Stavite točku i zarez ";" nakon svake naredbe. A radi praktičnosti, počnite s novim odlomkom.
  9. Ništa se ne može učiniti s praznim skupom. Niti poredak, niti izlaz, niti rastavlja niz u niz u 1C. Stoga u njega morate umetnuti elemente.
  10. Unesite "FirstArray.Add (Value1);". Zatim "FirstArray.Add (Value2);" itd.
  11. Objekti se numeriraju od nule. Odnosno, varijabli "Vrijednost1" bit će dodijeljen indeks "0". Možete sami popuniti zbirku s "Vrijednost0", da ne bude zabune.

Čemu sve ovo? A zašto je taj tajanstveni "gumb"? Pokušajmo pokrenuti jednostavnu funkciju.

  1. Ispod zbirke upišite naredbu "Izvještaj (FirstArray);" Indeks elementa je naveden u uglastim zagradama. To jest, adresa naše "Vrijednosti0".
  2. Formatirajte modul. Ovo je provjera grešaka. U velikim blokovima nešto može ostati nedovršeno zbog nepažnje: ne stavljajte točku-zarez, ne zatvarajte zagradu, neispravno upišite varijablu. Prevoditelj će to naznačiti.
  3. Kliknite na gumb u obliku znaka "Igraj" (trokut u krugu) za pokretanje programa koji ste napisali.
  4. Kliknite na "Usluga" i odaberite svoj gumb.
  5. Kliknite ga.
  6. Pojavit će se "Vrijednost0". Ovo je rezultat izvršavanja funkcije.

Prikazana je najjednostavnija operacija kako biste razumjeli kako nizovi općenito rade. S njima možete kreirati složene programe na više razina. Prikažite objekte, sortirajte, uklonite duplikate, podijelite u skup podnizova, kombinirajte, podijelite, tražite informacije. Samo trebate poznavati operatere.

Funkcije

Sve dostupne funkcije nalaze se u referenci programa. Nabrojimo nekoliko da pokažemo princip.

Kako pretvoriti 1C niz u niz:

TestArray = Novi niz (4);
TestArray = Ovo;
TestArray = Gotovo;
TestArray = Dakle;
StringTest = ValueVSStringInter (TestArray);
Izvješće (StringTest);

Izlaz na "Button" i dobit ćete frazu. Ovo može biti dio većeg modula - u tom slučaju operator "Izvješće" nije potreban.

Da biste rastavili niz u niz podnizova u 1C, potreban vam je separator. Uvjetna oznaka nakon koje će se tekst podijeliti. Recimo da postoji riječ "Protokol". I stavit ćemo razdjelnik "O". Unesite naredbu "TestArray = ExpandStringInArray (Protocol," O ");" Ispada odvojeno "Pr", "T", "K" i "L". Razdjelnik se briše. I riječ je podijeljena u nekoliko podnizova.

Evo kako se to može provesti u praksi. Imate niz s imenima zaposlenika. I morate automatski popuniti polja "Prezime", "Ime" i "Patronim" prilikom odabira pozicije. Za to se puno ime mora podijeliti u tri komponente. Koristite "razmak" kao separator.

Obično se za to koristi složeni modul: petlja s velikim brojem izjava. Ciklični blokovi s uvjetom grade se prema principu "Ako (uvjet), onda (akcija1), inače (akcija2)". Prvo, program provjerava je li uvjet ispunjen. Ako je tako, onda pokreće prvu funkciju. Ako ne, drugi.

Petlja će provjeriti svaki znak u nizu. Ako nema separatora, nastavlja se dalje. Ako postoji graničnik, on dodaje vrijednost skupu podnizova. Tu se mogu koristiti i drugi operatori: na primjer, "SokrLP" - skraćenica određenih znakova desno i lijevo od niza.

Svaki modul mora biti "završen" da bi uslužni program prekinuo proceduru. U petlji s “If”, ovaj operator je “EndIf”. Na ciklus bez uvjeta - "Kraj ciklusa". Svaka funkcija se mora izvršiti zasebno.

Traži i sortiraj

Zbirke mogu sadržavati ogromnu količinu podataka. Moramo ih naučiti tražiti i sortirati.

Da biste započeli pretraživanje u nizu u 1C, koristite operator "Pronađi". Željenu vrijednost možete pronaći i vizualno. Ali ako postoje stotine elemenata, bolje je stvoriti dodatni modul i pokrenuti potprogram. Pokažimo to koristeći jednostavnu funkciju kao primjer. Ali to će raditi za bilo koji blok.

ArrayTest = Novi niz (3);
ArrayTest = "Telefon";
ArrayTest = "Laptop";
ArrayTest = "Računalo";
Indeks = ArrayTest.Pronađi ("Telefon");
Ako je Indeks ‹› Nedefinirano Onda
Izvješće ("Traženje dovršeno" + ArrayTest [Index]);

I ne zaboravite staviti "završnu izjavu".

Zbirka je prikazana kao primjer. Stvorili smo skup od tri vrijednosti. I napravili su mali ciklus. Ako uslužni program ne pronađe odgovarajuću stavku, prikazat će se poruka "Nedefinirano". Ako se pronađe, prikazat će rezultat.

Razvrstavanje 1C niza jednostavno je nezamjenjivo kada radite s velikom količinom podataka. U njima se morate nekako kretati. Bolje ih je rasporediti određenim redoslijedom. Recimo da imate kolekciju "YourArray". Da to dovedem u red

TestList = Novi popis vrijednosti;
TestList.ListValues ​​(VašArray);
TestList. Poredaj po vrijednosti (smjer sortiranja. dob);
VašArray = TestList.UploadValues ​​();

Umjesto "Ascending" možete staviti "Descending". Također, rezultat se može prenijeti u tablicu vrijednosti:

TestTable = NewValuesTable;
TestTable.Columns.Add ("Stupac");
TestTable.LoadColumn (VašArray, "Stupac");
TestTable.Sort ("Silazni stupac");
VašArray = TestTable.UploadColumn ("Stupac")

Postoje i složene metode sortiranja: "Mjehurić", "Brzo", "Shaker", "Rekurzija". Imaju višerazinske i dugačke algoritme.

Tablice i popisi

Informacije se mogu prosljeđivati ​​između različitih vrsta zbirki. Za prijenos niza u 1C u tablicu vrijednosti:

ArrayTelef = Novi niz;
ArrayPhone.Add ("Pametni telefon");
ArrayPhone.Add ("Tablet");
ArrayPhone.Add ("Telefon");
TableTest = Nova tablica vrijednosti;
TableTest.Columns.Add ("Mobilni");
TableTest.Add ();
TableTest.Add ();
TableTest.Add ();
TableTest.LoadColumn (ArrayTele, "Mobilni");
Za svaki redak iz tablice test petlje
Izvješće (String.Mobile);

Ne zaboravite staviti naredbu za završetak petlje na kraju.

Vrlo je jednostavno pretvoriti niz u popis vrijednosti u 1C. Vi samo trebate prenijeti podatke iz jedne zbirke u drugu.

Novi popis = Novi popis vrijednosti ();
NewList.LoadValues ​​(VašArray);

U programiranju se jedan problem može riješiti na različite načine. I 1C nije iznimka. Linearni algoritmi, petlje, uvjetne petlje, protupetlje. Postoji mnogo opcija. Da biste se kretali nizom, potrebne su vam neke vještine u 1C.