1c ko'p o'lchovli massivda qiymat toping. Massivlar bilan ishlash funksiyalari

1C massivi oddiy qiymatlar to'plamidir. Bitta 1C massiviga har xil turdagi qiymatlarni qo'shishingiz mumkin. Qo'shgandan so'ng, 1C massivida qiymatlar mavjudligini o'rnatilgan qidiruv yordamida tekshirish mumkin.

1C massivi tez-tez ishlatiladi:
A) Tanlovlar uchun
B) Qiymatlar ro'yxatini undan keyingi foydalanish uchun saqlash uchun, masalan, uni funksiya/protseduraga parametr sifatida o'tkazing.

1C massivlari bilan ishlash

Keling, 2 ta qiymatdan iborat 1C massivini yarataylik:
Massiv = Yangi massiv(); //belgilangan qiymatlar sonisiz massiv

Array.Add(RNG.RandomNumber(0, 1000));
Array.Add(RNG.RandomNumber(0, 1000));

//1C massivining har bir qiymati bo'ylab, qancha bo'lishidan qat'i nazar, aylanish

Hisobot (qiymat);
EndCycle;

Keling, 10 ta qiymatdan iborat 1C massivini yarataylik:
Massiv = Yangi massiv (10); //belgilangan qiymatlar soniga ega massiv
RNG = NewRandomNumberGenerator(); // biz tasodifiy raqamlar bilan to'ldiramiz

//massiv indeksi bir emas, noldan boshlanadi
//10 dona 0 dan 9 gacha
Sch = 0 dan 9 gacha bo'lgan davr uchun
//arrayArrayName[Index] ga kirish
Massiv[RNG] = RNG.RandomNumber(0, 1000); // tasodifiy raqam 0 dan 1000 gacha
EndCycle;

// qancha bo'lishidan qat'i nazar, har bir massiv qiymati bo'ylab aylanish
Massiv siklidagi har bir qiymat uchun
Hisobot (qiymat);
EndCycle;

//eslatma - massivning 10 ta qiymati bor, demak, ularning 10 tasi sukut bo'yicha va biz boshqasini o'rnatmagunimizcha har bir qiymat UNFINED bo'ladi.
//bu biz ArrayName.Add() dan foydalanib boshqa qiymat 11e qo'sha olmaymiz degani emas.

Ko'p o'lchovli massiv

Keling, ko'p o'lchovli 1C 2x2 massivni yarataylik. Ko'p o'lchovli massiv 1C, ya'ni 1C massivining har bir yacheykasi qiymat emas, balki 1C massivini ham o'z ichiga oladi.

1C ko'p o'lchovli massivni tuzatish shart emas. Qattiq qiymatlar sonini ko'rsatmasdan ko'p o'lchovli 1C 2x2 massivini yarataylik:

1C massivini noldan yaratish

Ma'lumotlarni olish vaqt va resurslarni talab qiluvchi jarayondir. Shuning uchun, agar siz olingan ma'lumotlar bilan bir necha marta ishlashingiz kerak bo'lsa, allaqachon olingan va saqlangan ma'lumotlar bilan ishlash uchun uni bir marta qabul qilish va 1C massivida saqlash mantiqan to'g'ri keladi.

Masalan, dastur versiyasi qatori quyidagicha ko'rinadi: "11.0.9.5" - nuqta bilan ajratilgan to'rtta raqam. Biz versiyani "kompyuter" formatiga - to'rtta raqamli qiymatlar qatoriga o'zgartirishimiz mumkin. Keyin biz versiyalarni bir-biri bilan taqqoslashimiz mumkin:

Ma'lumotlar bilan tayyor 1C massivini olish

1C massivini spList.UnloadValues() usuli yordamida qiymatlar ro‘yxatidan va tableTable.UnloadColumn() usuli yordamida qiymatlar jadvalidan olish mumkin.

Quyidagi misolda biz so'rov qilamiz - ma'lumotlar bazasidan barcha hujjat havolalarini tanlaymiz.

  • RequestResult = Request.Execute() //so'rovni bajaradi
  • tzResult = Query Result Upload() // natijani qiymatlar jadvaliga yuklaydi
  • mArray of Links = tzResult.UnloadColumn("ColumnName") //jadval ustunini massivga tushiradi

Boshqa ob'ektlardan 1C massivini olish va uni so'rovda tanlov sifatida ishlatish

Shaklda hujjatlar ro'yxati (yoki qiymatlar jadvali) joylashganida, foydalanuvchi kursor bilan bitta qatorni tanlashi mumkin. Bundan tashqari, bir vaqtning o'zida bir nechta qatorlarni tanlashga ruxsat berishingiz mumkin. Bir nechta qatorlarni tanlash uchun (agar forma bunga ruxsat bermasa), CTRL yoki SHIFT tugmachalarini bosib ushlab turish kerak.

Qalin mijoz shakliga qiymatlar jadvalini qo'shing va uning turi sifatida DocumentList.DocumentName ni tanlang. Uning xususiyatlarida tanlash rejimini tanlang - bir nechta.

Biz tanlangan satrlar ro'yxatini dasturiy ravishda olishimiz mumkin:

Agar foydalanayotgan bo'lsangiz boshqariladigan shakl, keyin siz avval DynamicList turiga ega bo'lgan forma atributini qo'shishingiz kerak va uning xususiyatlarida asosiy jadval - kerakli hujjatni tanlang. Proplarni shaklga torting. Shakl elementining xususiyatlarida (!), Shuningdek, - tanlash rejimi - ko'p ni tanlang (sukut bo'yicha shu tarzda o'rnating).

Tanlangan satrlarning 1C massiviga kirish quyidagicha bo'ladi:
Elements.FormAttributeName. Tanlangan qatorlar

1C dagi massiv ba'zi qiymatlar to'plamidir. Bitta massivdagi qiymatlar bo'lishi mumkin har xil turlari.

Massivni turli funktsiyalarni bajarish orqali olish mumkin, masalan, Unload Column() qiymatlar jadvali; tanlangan qatorlarni massiv sifatida olishingiz mumkin dinamik ro'yxat va hokazo. Massivni qo'lda ham yaratishingiz mumkin.

Massiv yaratish

1. Kerakli o'lchamdagi massiv qanday yaratiladi

pArray = new Array(4); //4 ta elementdan iborat massiv yaratildi

PMarray[ 0 ] = "Biz" ;
pArray[ 1 ] = "yaratilgan" ;
pArray[ 2 ] = "yangi" ;
pArray[ 3 ] = "massiv" ;

2. Bo'sh massivni yaratish va unga elementlar qo'shish

pArray = yangi massiv; //bo'sh massiv yaratildi

//Masiv elementlarining qiymatlarini kiriting

PMassiv. Qo'shish ("Biz");


3. Ko'p o'lchovli massiv qanday yaratiladi.

Keling, bu masalani ikki o'lchovli massiv misolida ko'rib chiqaylik, chunki katta o'lchamli massivlar kamroq qo'llaniladi va ularning ishlash mexanizmi ikki o'lchovlidan farq qilmaydi.

pArray = yangi massiv(4, 2); //4x2 massiv yaratildi

//Har bir so'zni raqamlagan holda massiv elementlarining qiymatlarini kiriting

PMarray[ 0 ] [ 0 ] = "1."
pArray[ 0 ] [ 1 ] = "Biz" ;
pArray[ 1 ] [ 0 ] = "2."
pArray[ 1 ] [ 1 ] = "yaratilgan" ;
pArray[ 2 ] [ 0 ] = "3."
pArray[ 2 ] [ 1 ] = "ko'p o'lchovli" ;
pArray[ 3 ] [ 0 ] = "4."
pArray[ 3 ] [ 1 ] = "massiv" ;

4. Ruxsat etilgan massiv qanday yaratiladi

Ruxsat etilgan massiv oddiy massivdan farq qiladi, chunki uni o'zgartirib bo'lmaydi. Siz bunday massiv elementlarining qiymatlarini qo'sha olmaysiz, o'chira olmaysiz yoki o'zgartira olmaysiz.

Ruxsat etilgan massivni oddiy qatordan olish mumkin:

pArray = yangi massiv;

PMassiv. Qo'shish ("Biz");
pArray. Qo'shish ("yaratilgan");
pArray. Qo'shish ("yangi");
pArray. Qo'shish ("massiv");

FArray = new FixedArray(pArray) ; // belgilangan massiv yaratildi

Massivlar bilan ishlash funksiyalari

Bir o'lchovli massiv misolida funksiyalarning ishlashini ko'rib chiqamiz pArray, yuqorida yaratilgan va 4 ta elementdan iborat:

  1. "yaratilgan"
  2. "yangi"
  3. "massiv".
VBorder() funktsiyasi

Massiv elementining eng yuqori indeksini oladi. U har doim massiv elementlari sonidan bitta kam bo'ladi.

Indeks = pArray. BBorder() // 3;

Insert() funktsiyasi

Belgilangan indeksdagi massiv elementiga qiymat kiritadi. Keyingi elementlar massiv siljiydi

pArray. Insert(3, "yangi qiymat") //Endi massiv 5 ta elementdan iborat

Funktsiyani qo'shish()

yaratadi yangi element massiv oxirida va u yerga belgilangan qiymatni kiritadi

pArray. Qo'shish ("." ) // massivning beshinchi elementiga nuqta qo'shildi;

Funktsiya miqdori()

Massiv elementlari sonini qaytaradi.

pArray. Miqdor();

// 4

Find() funktsiyasi Berilgan element uchun massivni qidiradi. Agar topilsa, uning indeksini qaytaradi. Agar topilmasa, qaytadi.

Aniqlanmagan
Indeks = pArray. Find ("massiv"); // 3 Indeks = pArray. toping("mavjud bo'lmagan chiziq"

); // Aniqlanmagan

Clear() funktsiyasi

Massivdan barcha qiymatlarni olib tashlaydi.

pArray. Clear();

Get() funktsiyasi

Indeks bo'yicha massiv qiymatini oladi. Xuddi shu muammoni yordamida hal qilish mumkin.
Qiymat = pArray. Get (3) // "massiv"

Qiymat= pArray[ 3 ]; // "massiv"

Delete() funktsiyasi

Massiv elementini indeks bo'yicha olib tashlaydi

pArray. O'chirish(3);

Funktsiyalar to'plami()

Massiv elementining qiymatini indeks bo‘yicha o‘rnatadi. Xuddi shu tarzda ishlaydi.
pArray. Set(3, “massiv!”);

pArray[ 3 ] = "massiv!" ;

Massivni qanday aylanib o'tish kerak

Siz indeksni ko'rsatmasdan massivning barcha elementlarini takrorlashingiz mumkin:
pArray Loop-dan massivning har bir elementi uchun
Hisobot (ArrayElement);

EndCycle;

Index= 0 uchun pArray bo'yicha. BBorder() tsikli
Hisobot (pArray[Index]);
Hisobot (ArrayElement);

Ko'p o'lchovli massivdan qanday o'tish kerak

Ko'p o'lchovli massiv bir xil tsikllar yordamida o'tkaziladi (yuqoriga qarang), lekin bir tsikl boshqasiga joylashtirilishi kerak.

mArray Cycle ning har bir Element1 uchun
Element1 tsiklining har bir elementi2 uchun
Hisobot (1-element);
Hisobot (ArrayElement);
Hisobot (ArrayElement);

Yoki indekslardan foydalanish.

mArray= yangi massiv(3, 4);

mArray bo'yicha Index1 = 0 uchun. BBorder() tsikli
mArray[ Index1 ] bo'yicha Index2 uchun. BBorder() tsikli
Hisobot(mArray[ Index1 ] [ Index2 ] );
Hisobot (ArrayElement);
Hisobot (ArrayElement);

Massivni tartiblash

Massivni saralash uchun bizga turiga ega yordamchi obyekt kerak ListValues.

ValueList = yangi ValueList; // qiymatlar ro'yxatini yarating
ListValue. LoadValues ​​(pArray) ; // qiymatlarni massivdan ro'yxatga yuklang
ListValue. SortByValue(SortDirection.Age) ; // o'sish tartibida tartiblash
ListValue. SortByValue(SortDirection.Descending) ; // yoki pasayish
pArray = ListValue. Unload(); // saralangan qiymatlarni massivga qaytaring

Ikki massivni solishtirish

Taqqoslash funksiyasining tavsifiga o'tishdan oldin, agar massivlar bir xil elementlarga ega bo'lsa va massivlarning mos keladigan elementlari teng bo'lsa, ular bir xil deb hisoblanishiga rozi bo'laylik. Keyin taqqoslash uchun siz quyidagi funktsiyadan foydalanishingiz mumkin (aytmoqchi, bunday funktsiya ba'zi standart konfiguratsiyalarda allaqachon mavjud):

Funktsiya CompareArrays(Array1, Array2)

Agar massiv 1. Miqdor()<>Massiv 2. Quantity() Keyin
FALSE qaytarish; // Massivlar teng emas, elementlarni solishtirishdan ma'no yo'q.
EndIf;

Indeks uchun= 0 massiv 1 bo'yicha. BBorder() tsikli
Agar massiv1[Indeks]<>Massiv2[Indeks] Keyin
False ni qaytaring; //bu elementlar teng emas, demak massivlar teng emas
EndIf;
Hisobot (ArrayElement);

Haqiqatni qaytarish; // Agar siz bu erga kelgan bo'lsangiz, unda massivlar teng bo'ladi
EndFunction

Funktsiya bilan solishtirish uchun 2 ta massivdan o'tishingiz kerak. Funktsiya qiymatni qaytaradi To'g'ri, agar massivlar teng bo'lsa, va Yolg'on, agar teng bo'lmasa.

"Masiv" tushunchasi dasturlashda uzoq vaqtdan beri qo'llanilgan va ko'pincha u elementlar ketma-ketligidan iborat xotiradagi ma'lum bir tuzilma sifatida tushuniladi. 1C dagi massiv universal qiymatlar to'plamining eng oddiyidir. Massivga qo'shimcha ravishda universal to'plamlarga quyidagilar kiradi:

  1. Qiymatlar ro'yxati (massivdan farqli o'laroq, ro'yxatdagi qiymatlar taqdimotga ega, to'plamni interfeysda saralash va ko'rsatish imkoniyati amalga oshiriladi);
  2. Qiymatlar jadvali - bu qiymatning kengaytirilgan tavsifi uchun ustunlarga ega bo'lgan to'plam, so'rovni bajarish orqali shunga o'xshash tuzilmani olish mumkin;
  3. Daraxt stolga juda o'xshash, bo'ysunish tuzilishi bilan to'liq;
  4. Tuzilishi - dinamik to'plam o'zgaruvchilar nomlari va qiymatlari;
  5. Moslash - strukturaga o'xshash, faqat o'zgaruvchilar qator ko'rinishlariga emas, balki bir-biriga mos keladi.

Massiv usullari

Dasturiy ta'minot yaratish Massiv misoli New() operatori yordamida yaratiladi (1-rasm).

Yuqoridagi misoldan ko'rinib turibdiki, massivlar qat'iy elementlar soni bilan yoki bu cheklovsiz yaratilishi mumkin.

Massiv bilan ishlash usullarini muhokama qilishni boshlashdan oldin ikkita tushunchani aniqlaymiz:

  • Element indeksi - bitta qiymatning seriya raqami sifatida ko'rsatilishi mumkin;
  • Elementlar soni - to'plamdagi elementlarning sonini Quantity() usuli yordamida aniqlash mumkin;

Bilish muhim: 1C da har qanday to'plam qiymatlari sonini hisoblash 1 dan boshlanadi va indekslarni taqsimlash 0 dan boshlanadi, ya'ni massivning birinchi elementi indeks 0 ga ega. iterator 0 dan boshlanishi va elementlar soni minus 1 bilan tugashi kerak, aks holda tizim sizni oyna yordamida istisnoning paydo bo'lishi haqida xabardor qiladi (2-rasm).

2-rasm

Har qanday konfiguratsiya ob'ektining o'ziga xos ishlash usullari mavjud, massiv bundan mustasno emas, keling, ularni tushuntirish bilan sanab o'tamiz:

  • InBorder() – metoddan foydalanib, bo'sh massiv uchun elementning maksimal indeksini olishingiz mumkin (-1) qiymati;
  • Insert() – bu usul ikkita parametrga ega: indeks va qiymat, indeks massivga yangi elementni qaerga kiritish kerakligini ko‘rsatadi, qo‘shilgan qiymat bo‘sh bo‘lishi mumkin;
  • Add() – qiymat kiritishning bu usuli elementni joylashtirish ahamiyatsiz bo‘lganda foydalanish mumkin, uning yordamida yangi ma’lumotlar mavjud massivning oxiriga yoziladi;
  • Find() - agar muvaffaqiyatli bo'lsa, qavs ichida ko'rsatilgan qiymat indeksini qaytaradi, aks holda "Aniqlanmagan" ni qaytaradi;
  • Clear() - to'plamni tozalaydi;
  • Get() – belgilangan indeksdagi massivda joylashgan ma’lumotlarni o‘qiydi, kvadrat qavslar bilan almashtirilishi mumkin;
  • Delete() – ko‘rsatilgan indeksli elementni o‘chiradi;
  • Set() – belgilangan massiv yacheykasidagi ma’lumotlarni almashtiradi.

Bir o'lchovli va ko'p o'lchovli massivlar

Eng oddiy holatda, bir o'lchovli massiv har xil turdagi qiymatlarni o'z ichiga olishi mumkin (3-rasm)

3-rasm.

Yuqoridagi kodni bajarish natijasi 4-rasmda ko'rsatilgan

4-rasm

Shunday qilib, biz satr qiymati, katalog elementiga havola va sanadan iborat bir o'lchovli massivni oldik. Bundan tashqari, elementlarni qo'shishda biz Add() va Insert(); agar sana qo'shganda Add() usulidan foydalanganimizda, natijamiz biroz boshqacha ko'rinishga ega bo'lar edi.

O'rta maktabda ikki o'lchovli matritsa tushunchasi kiritiladi. Bu ma'lumotlar to'plami bo'lib, ularning har bir elementi ikkita indeksga ega (eng oddiy holatda vertikal va gorizontal seriya raqami), bu ikki o'lchovli massiv tushunchasini eng yaxshi ko'rsatadi.

Bunday matritsani yaratishda siz foydalaniladigan qator va ustunlar sonini belgilashingiz mumkin.

Aytaylik, oldimizda ikkita xodimning familiyasi, ismi va otasining ismi massivini yaratish vazifasi turibdi. Koddan foydalanib (5-rasm) biz ustunlar va satrlarning qat'iy soni bilan mos keladigan massivni yaratamiz.

5-rasm

Uni kesib o'tish uchun bizga ikkita halqa kerak bo'ladi, birinchi tsiklda massivni satr bo'ylab o'tkazamiz, ikkinchisida chiziqni elementlarga ajratamiz. Buni "Har bir uchun ..." tsikli yordamida amalga oshirish mumkin. Kimdan" (6-rasm)

6-rasm

Yoki “For ... by” iteratori bilan halqadan foydalanish (7-rasm)

7-rasm

Asosan, ma'lum bir massivning o'lchamlari soni har qanday bo'lishi mumkin, boshqa narsa shundaki, ko'p miqdordagi tafsilotlar bo'lsa, ma'lumotlarni o'qish uchun quruvchi yaratish juda qiyin.

Massivdan foydalanish

1C dagi massivlar ko'pincha quyidagilar uchun ishlatiladi:

  1. So'rovlar va boshqa qiymatlar to'plamlari bilan ishlashda foydalaniladigan turli tanlovlarni yaratish;
  2. Ro'yxatlarni protseduralar va funktsiyalar o'rtasida parametr sifatida o'tkazish;
  3. COM texnologiyasidan foydalangan holda ulangan tashqi komponentlar bilan ma'lumotlarni almashish.

Albatta, bu "Array" ob'ektidan foydalanish mumkin bo'lgan maqsadlarning to'liq ro'yxatidan uzoqdir.

1C da massivlardan foydalanish ishda ishlatiladigan elementlarni tartibga solishga yordam beradi.

Bu dasturiy ta'minot elementlari to'plami. U quyidagilarga xizmat qiladi:

  • Qiymatlarni tanlash.
  • Tartiblash. Massivdagi har bir pozitsiyaga indeks beriladi. Bu qidiruvni osonlashtiradi. Va siz uning raqamini yozish orqali ob'ektga murojaat qilishingiz mumkin.
  • Yozuvlarni birlashtirish va saqlash.
  • Guruhlarni ajratish, pastki qatorlarni yaratish.
  • Massiv o'z-o'zidan ob'ektdir. Unga o'zgaruvchi biriktiriladi. Siz uning alohida qismlariga murojaat qilishingiz yoki uni protseduralarda to'liq ishlatishingiz mumkin. Masalan, siz "N bo'limi xodimlari" qiymat guruhini birlashtirib, u erda xodimlarning ism va familiyalarini kiritishingiz mumkin.

Keling, o'xshashlik qilaylik. Kitob javonini tasavvur qiling. Undagi kitoblar turli "hujayralarda" joylashtirilgan. Agar siz yozuvlarni saqlasangiz, har bir ob'ekt qaerda joylashganligini bilib olasiz. Va siz uni hech qanday qiyinchiliksiz olishingiz mumkin. Ammo kitoblar, jurnallar va gazetalar stol ustida tartibsiz tarzda sochilgan bo'lsa, to'g'ri narsani izlash uzoq vaqt talab etadi. Garchi bu noyob to'plamlarning barcha imkoniyatlarini aks ettirmasa ham.

Yaratilish

1C massivlari bilan ishlash ularni yaratishdan boshlanadi. Sizga "joylashuv" kerak - kodni kiritadigan maydon.

  1. "Konfigurator" ni oching ("Konfiguratsiya").
  2. "Qayta ishlash" ni o'ng tugmasini bosing.
  3. "Qo'shish" ni tanlang.
  4. Processing1 pastki menyusi paydo bo'ladi. Uni tanlang. Bu haqda ma'lumot ish maydonida ko'rsatiladi.
  5. Asosiy yorlig'ida Ismni kiriting. Keling, "TestArray" deylik.
  6. "Formalar" bo'limini oching.
  7. Kattalashtiruvchi oyna belgisini bosing.
  8. "Shaklni qayta ishlash" variantini belgilang.
  9. "Bajarildi" tugmasini bosing.
  10. Uchta ramkali oyna ochiladi. Yuqori o'ng burchakda "Jamoalar" yorlig'iga o'ting.
  11. Joy qo'shish uchun Plus belgisi.
  12. "Team1" elementi paydo bo'ladi. Uni tanlang.
  13. "Ism" maydoniga ism kiriting. Masalan, "TestValues". Uni "Sarlavha" ga nusxalash.
  14. "Harakat" qatorida kattalashtiruvchi oynani bosing.
  15. "Mijozda yaratish" va "OK" bandi.
  16. Mana kodni kiritishingiz mumkin bo'lgan modul.

Oraliq natijani ko'rsatish uchun "tugma" yarating. Nima uchun massivda kerak - biroz keyinroq tushunasiz.

  1. "Formalar" yorlig'iga o'ting. U pastda.
  2. "Buyruqlar paneli" ni o'ng tugmasini bosing.
  3. "Qo'shish - tugmasi".
  4. Har qanday nom bering. Yoki siz standartni qoldirishingiz mumkin.
  5. "Jamoa nomi" maydonida ellips belgisini bosing.
  6. "TestValues" ni tanlang. Agar jamoa boshqacha nomlangan bo'lsa, boshqa sarlavha bo'ladi.

Endi siz to'plamlar bilan ishlashni boshlashingiz mumkin. Ammo 1Cda siz darhol satrni massivga ajratishingiz mumkin deb o'ylamang. Eng oson narsadan boshlash yaxshidir. Garchi barcha funktsiyalar faqat eslab qolishingiz kerak bo'lgan operatorlar to'plamidir.

  1. "Modul" yorlig'ini oching.
  2. Ikki qiyshiq chiziqdan keyin keladigan matnni (ikki qiyshiq chiziq - “//”) o'chirib tashlash mumkin. Bu shunday ko'rinadi "//Ishlovchi tarkibini kiritish". Bu tushuntirishlar. Ular kodda adashmaslik uchun dasturchilar tomonidan yozilgan.
  3. Matningizni “Protsedura” va “Protseduraning oxiri” operatorlari orasiga yozing.
  4. Endi qiymatlar to'plamini yarating. Uni shartli ravishda bildiradigan o'zgaruvchini o'ylab toping. Keling, "Birinchi qator" deb aytaylik.
  5. U ob'ekt bilan bog'langan bo'lishi kerak. Buning uchun "FirstArray = New Array()" buyrug'ini kiriting. Bu cheksiz miqdordagi elementlarni o'z ichiga olishi mumkin bo'lgan to'plam. Agar sizda qat'iy o'lcham bo'lsa, uni qavslar ichidagi "Yangi massiv (5)" buyrug'idan keyin belgilang. Shunga ko'ra, ikki o'lchovli to'plam "Yangi massiv (7, 5)" kabi ko'rinadi. Ko'p o'lchovli to'plamlarni yaratishingiz mumkin.
  6. Siz kiritganingizda, mos operatorlarni taklif qiladigan takliflar paydo bo'lishi mumkin.
  7. So'zlarning rangi har xil. O'zgaruvchilar bitta rangga ega, funktsiyalar boshqa rangga ega.
  8. Har bir buyruqdan so'ng nuqtali vergul ";" qo'ying. Va qulaylik uchun yangi xatboshidan boshlang.
  9. Bo'sh to'plam bilan hech narsa qila olmaysiz. Satrni 1C da massivga ajratmang, chiqarmang va ajratmang. Shuning uchun biz unga elementlarni kiritishimiz kerak.
  10. "FirstArray.Add(Value1);" kiriting. Keyin “FirstArray.Add(Value2);” va hokazo.
  11. Ob'ektlar noldan boshlab raqamlangan. Ya'ni, "Value1" o'zgaruvchisiga "0" indeksi beriladi. Siz chalkashmaslik uchun to'plamni o'zingiz "Value0" bilan to'ldirishingiz mumkin.

Bularning barchasi nima uchun? Va nima uchun bu sirli "tugma"? Keling, oddiy funktsiyani bajarishga harakat qilaylik.

  1. To'plam ostida "Hisobot (FirstArray);" buyrug'ini yozing. Elementning indeksi kvadrat qavs ichida ko'rsatilgan. Ya'ni, bizning "Value0" manzili.
  2. Modulni formatlash. Bu xatolarni tekshirish. Katta bloklarda siz e'tiborsizlik tufayli biror narsani tugatmagan holda qoldirishingiz mumkin: nuqta-vergul qo'ymaslik, qavsni yopmaslik yoki o'zgaruvchini noto'g'ri yozish. Kompilyator buni ta'kidlaydi.
  3. Siz yozgan dasturni ishga tushirish uchun "O'yin" belgisi (aylanadagi uchburchak) ko'rinishidagi tugmani bosing.
  4. "Xizmat" ni bosing va tugmani tanlang.
  5. Uni bosing.
  6. "Value0" xabari paydo bo'ladi. Bu funktsiyaning bajarilishi natijasidir.

Massivlar qanday ishlashini tushunishingiz uchun eng oddiy operatsiya ko'rsatilgan. Ular bilan murakkab va ko'p darajali dasturlarni yaratishingiz mumkin. Ob'ektlarni ko'rsatish, tartiblash, takrorlashlarni olib tashlash, pastki qatorlar to'plamiga bo'lish, birlashtirish, ajratish, ma'lumot qidirish. Siz faqat operatorlarni bilishingiz kerak.

Funksiyalar

Barcha mavjud funktsiyalar dastur ma'lumotnomasida mavjud. Prinsipni ko'rsatish uchun bir nechtasini sanab o'tamiz.

1C massivini qanday qilib satrga aylantirish mumkin:

TestArray = Yangi massiv(4);
TestArray = Bu;
TestArray = Bajarildi;
TestArray = Shunday;
RowTest = ValueInRowInt(TestArray);
Hisobot (StringTest);

Uni "tugma" ga chiqaring va iborani oling. Bu kattaroq modulning bir qismi bo'lishi mumkin - bu holda Hisobot bayonoti kerak emas.

1C da satrni pastki qatorlar qatoriga ajratish uchun sizga ajratuvchi kerak bo'ladi. Shartli belgi, shundan so'ng matn bo'linadi. Aytaylik, "Protokol" so'zi bor. Va biz "O" ajratgichni qo'yamiz. “TestArray = ExpandStringInArray(Protokol, “O”)” buyrug‘ini kiriting; Siz "Pr", "T", "K" va "L" ni alohida olasiz. Ajratuvchi o'chiriladi. Va so'z bir nechta pastki qatorlarga bo'linadi.

Buni amalda qanday qo'llash mumkinligi quyida keltirilgan. Sizda xodimlarning to'liq ismlari bo'lgan massiv mavjud. Va siz lavozimni tanlashda avtomatik ravishda to'ldirilishi uchun "Familiya", "Ism" va "Otasining ismi" maydonlari kerak. Buning uchun to'liq ism uchta komponentga bo'linishi kerak. Ajratuvchi sifatida "bo'sh joy" dan foydalaning.

Odatda, buning uchun murakkab modul ishlatiladi: ko'p sonli bayonotlarga ega bo'lgan tsikl. Shartli siklik bloklar "Agar (shart), keyin (1-harakat), aks holda (harakat2)" tamoyiliga muvofiq qurilgan. Birinchidan, dastur shartning to'g'ri yoki yo'qligini tekshiradi. Ha bo'lsa, u birinchi funktsiyani ishga tushiradi. Agar yo'q bo'lsa, ikkinchisi.

Loop satrdagi har bir belgini tekshiradi. Agar u erda ajratuvchi bo'lmasa, u davom etadi. Agar chegaralovchi mavjud bo'lsa, u qiymatni pastki qatorlar to'plamiga qo'shadi. U erda boshqa operatorlardan foydalanish mumkin: masalan, "AbcrLP" - bu qatorning o'ng va chap tomonidagi ma'lum belgilarning qisqartmasi.

Har bir modul "tugatilgan" bo'lishi kerak, shunda yordamchi dastur protsedurani bajarishni to'xtatadi. "Agar" bilan tsiklda bu bayonot "EndIf" bo'ladi. Shartlarsiz tsiklda - "Tsiklning oxiri". Har bir funktsiya alohida bajarilishi kerak.

Qidirish va saralash

To'plamlar katta hajmdagi ma'lumotlarni o'z ichiga olishi mumkin. Biz ularni qidirishni va saralashni o'rganishimiz kerak.

1C-da massivda qidiruvni amalga oshirish uchun "Topish" operatoridan foydalaning. Bundan tashqari, kerakli qiymatni vizual tarzda topishingiz mumkin. Ammo yuzlab elementlar mavjud bo'lsa, qo'shimcha modul yaratish va pastki dasturni ishga tushirish yaxshiroqdir. Keling, buni oddiy funktsiyadan foydalanib ko'rsatamiz. Lekin bu har qanday bloklar uchun javob beradi.

ArrayTest = Yangi massiv(3);
ArrayTest = "Telefon";
ArrayTest = "Noutbuk";
ArrayTest = "Kompyuter";
Indeks = ArrayTest.Find("Telefon");
Agar indeks ‹› Belgilanmagan bo'lsa
Hisobot("Qidiruv tugallandi" + ArrayTest[Index]);

Va "tugatish bayonoti" ni qo'yishni unutmang.

To'plam misol sifatida keltirilgan. Biz uchta qiymat to'plamini yaratdik. Va biz qisqa tsikl qildik. Agar yordamchi dastur mos keladigan elementni topmasa, u "Aniqlanmagan" xabarini ko'rsatadi. Agar topsa, natijani ko'rsatadi.

1C massivini saralash katta hajmdagi ma'lumotlar bilan ishlashda o'zgarmasdir. Siz ularni qandaydir tarzda boshqarishingiz kerak. Ularni joylashtirish yaxshiroqdir ma'lum bir tartibda. Aytaylik, sizda "YourArray" deb nomlangan to'plamingiz bor. Uni tartibga solish uchun

TestList = Yangi qiymatlar ro'yxati;
TestList.LoadValues(YourArray);
TestList.SortByValue(SortDirection.Age);
YourArray = TestList.UnloadValues();

"Osscending" o'rniga "pasayish" ni qo'yishingiz mumkin. Natijani qiymatlar jadvaliga ham yuklash mumkin:

TestTable = Yangi qiymatlar jadvali;
TestTable.Columns.Add("Ustun");
TestTable.LoadColumn(YourArray, “Ustun”);
TestTable.Sort("Ustun kamayib borayotgan");
YourArray = TestTable.UnloadColumn("Ustun")

Bundan tashqari, murakkab saralash usullari mavjud: "Bubble", "Tezkor", "Shaker", "Rekursiya". Ular ko'p darajali va uzoq algoritmlarga ega.

Jadvallar va ro'yxatlar

Ma'lumotlar o'rtasida yuborilishi mumkin turli xil turlari to'plamlar. Massivni 1C-dagi qiymatlar jadvaliga o'tkazish uchun:

ArrayTelephone = Yangi massiv;
ArrayPhone.Add("Smartfon");
ArrayPhone.Add("Planshet");
ArrayPhone.Add("Telefon");
TableTest = Yangi qiymatlar jadvali;
TableTest.Columns.Add("Mobil telefonlar");
TableTest.Add();
TableTest.Add();
TableTest.Add();
TableTest.LoadColumn(ArrayTelephone, “Mobil telefonlar”);
TableTest tsiklidan har bir qator uchun
Hisobot (String.Mobile);

Oxirida tsiklni tugatish bayonotini qo'shishni unutmang.

Massivni 1C-da qiymatlar ro'yxatiga aylantirish juda oddiy. Siz faqat bitta to'plamdan boshqasiga ma'lumotlarni yuklashingiz kerak.

NewList = NewValueList();
NewList.LoadValues(YourArray);

Dasturlashda bitta muammoni hal qilish mumkin turli yo'llar bilan. Va 1C bundan mustasno emas. Chiziqli algoritmlar, halqalar, shartli sikllar, hisoblagichlar. Ko'p variantlar mavjud. Massivda harakat qilish uchun sizga 1C ko'nikmalari kerak.

Ushbu maqola nima haqida?

Ushbu maqola "1C rivojlanishidagi birinchi qadamlar" turkumini davom ettiradi. U universal kolleksiyalar bilan ishlash tamoyillarini qamrab oladi. Maqolani o'qib bo'lgach, siz quyidagilarni bilib olasiz:

  • Umumjahon kollektsiyalar nima, ular qachon va qanday hollarda ishlatilishi kerak?
  • Barcha universal kollektsiyalarda qanday umumiylik bor? Ularning barchasi bilan ishlash uchun qanday usullardan foydalanishingiz mumkin?
  • Massiv nima, uni qanday va qachon ishlatish kerak? Uning qanday usullari bor?
  • Nima uchun strukturadan foydalanish kerak? U massivdan qanday farq qiladi?
  • Qachon qiymatlar ro'yxatidan foydalanish kerak? Uni shaklda qanday ko'rsatish mumkin?
  • Muvofiqlik - bu nima va uni qachon ishlatish kerak? Strukturaning afzalliklari qanday?
  • Qiymatlar jadvali nima uchun ishlatiladi? Uning tuzilishini qanday tasvirlash mumkin? Qanday qilib qatorlarni qo'shish/o'chirish mumkin? Uni shaklda qanday ko'rsatish mumkin?
  • Qadriyatlar daraxti - u nima uchun ishlatiladi? Shaklni qanday to'ldirish va ko'rsatish kerak? U bilan qanday ishlash kerak?

Qo'llanilishi

Maqolada joriy nashrning 1C: Enterprise 8.3 platformasi muhokama qilinadi.

1C da universal to'plamlar bilan qanday ishlash kerak

Qiymatlar to'plami odatda har qanday elementlarni o'z ichiga olishi mumkin bo'lgan konteynerdir. Biroq, ko'pincha ma'lumotlar turiga nisbatan qat'iy cheklovlar yo'q.

Siz umumiy to'plamga qiymatlarni qo'shishingiz mumkin. To'plamdagi barcha qiymatlarni kesib o'tish mumkin. Ushbu to'plamlar asosan algoritmlarda qandaydir ishlov berish uchun ishlatiladi. Bular. Bu algoritm ishlayotgan vaqtda mavjud bo'lgan ba'zi dinamik tuzilmalar.

To'plamlar ma'lumotlar bazasida saqlanmasligini tushunish muhimdir (biz deyarli har qanday turdagi ma'lumotlarni saqlashi mumkin bo'lgan Value Store ma'lumotlar turi haqida gapirmayapmiz).

Mavjud har xil turlari universal to'plamlar: massiv, tuzilma, moslik, qattiq massiv, qiymatlar jadvali, Jadval qismi va hokazo. Ammo barcha to'plamlar o'xshash xatti-harakatlarga ega.

To'plam funktsiyaning ishlashi natijasida yaratilishi mumkin (funktsiya universal to'plamni qiymat sifatida qaytaradi).

Konstruktorga qo'ng'iroq qilish va sinfning namunasini yaratish orqali yangi to'plamni qo'lda olishingiz mumkin.

Masalan: OurArray = Yangi massiv;

Ko'pgina umumiy to'plamlar uchun konstruktorlar parametrlangan.

Shunday qilib, uchun konstruktorda Tegishli o'lchamlarda a'zolar sonini belgilashingiz mumkin. Bular. darhol ko'p o'lchovli deb e'lon qilishingiz mumkin .

Konstruktorning tegishli tavsifi sintaksis yordamchisida.

Shunday qilib, konstruktor parametrlaridan foydalanib, siz darhol berilgan ob'ektning kerakli harakatini o'rnatishingiz mumkin.

Ammo parametrlar ixtiyoriydir, ishlab chiquvchi ularni o'rnatolmaydi va o'zi xohlagancha massivning harakatini aniqlay olmaydi.

Deyarli har qanday universal to'plamni konstruktor yordamida yaratish mumkin (istisno - konfiguratsiya ob'ektlari sifatida ishlaydigan jadval qismlari).

Umumjahon kollektsiyalar uchun bundaylar mavjud umumiy tushunchalar, indeks va raqam kabi. To'plamning har bir elementi indeksga ega. Bunday holda, indeks noldan boshlanadi.

Elementga kirish uchun BizningArray, buning uchun indeksga kirishdan foydalanishingiz mumkin, indeks kvadrat qavs ichida ko'rsatilgan.

Masalan, BizningArray. E'tibor bering, bu holda tizim 3 indeksli Array elementini qaytaradi va tartibda bu Massivning to'rtinchi elementidir.

Ba'zi to'plamlar uchun qator raqami tushunchasi ham mavjud. Qator raqami bittadan boshlanadi. Masalan, jadval qismi uchun qator raqami kabi xususiyat mavjud. Shuni yodda tutish kerakki, agar biz satr raqamini bilsak va unga indeks bo'yicha kirishni istasak, unda indeks sifatida satr raqamidan bir kichik qiymatdan foydalanishimiz kerak.

Satr raqami tushunchasi barcha to'plamlarda mavjud emas, lekin asosan foydalanuvchi interfeysida ko'rsatilishi mumkin bo'lgan to'plamlarda mavjud.

Barcha kollektsiyalar yig'ish elementi o'tish usulidan foydalanadi. Bypass ikki yo'l bilan amalga oshiriladi: uchun tsikl Va sikl Har biri uchun.

Ko'pgina umumiy to'plamlar uchun hisoblash, indeks, qo'shish, qo'shish, o'chirish va topish usullari qo'llaniladi.

Count - bu to'plamdagi elementlar sonini qaytaruvchi funksiya. Uni tsikldan oldin ishlatish mumkin Uchun, rasmda ko'rsatilganidek.

Index usuli barcha to'plamlar uchun mavjud emas, faqat elementlariga havola qilish mumkin bo'lganlar uchun mavjud. Bunga misol qilib keltirish mumkin Qadriyatlar jadvali.

Qadriyatlar jadvali- bu qatorlarning ma'lum bir to'plami, qatorlar turli xil ustunlarni o'z ichiga olishi mumkin turli xil turlari qiymatlar.

Har bir satr mustaqil ob'ektni ifodalaydi. Siz unga havolani ushbu satr orqali olishingiz mumkin;

Index usuli berilgan qatorga qaysi indeks mos kelishini aniqlash imkonini beradi (ya’ni jadvaldagi qatorning joriy holati). Indeks qiymatlari noldan boshlanadi.

Deyarli har qanday universal to'plamda ma'lum to'plamga yangi qiymatlarni qo'shish usullari mavjud. Rasmda 0 dan 10 gacha bo'lgan qiymatlar bilan massivni ikki usulda qanday to'ldirish ko'rsatilgan.

Massivga element qo'shish uchun biz usuldan foydalanishimiz mumkin Qo'shish, qavs ichida qo'shiladigan qiymatni ko'rsating. Bunday holda, qiymat ro'yxatning oxiriga qo'shiladi, ya'ni. Massiv oxirgi joylashuv tufayli doimiy ravishda oshib boradi.

To'plamga qiymat qo'shishga imkon beradigan yana bir usul Kiritmoq. U usuldan farq qiladi Qo'shish unda qo'shilgan elementni qaerga qo'yish kerakligini belgilashingiz mumkin.

Sintaksis: Kiritmoq (,)

Birinchi parametr yangi qiymat kiritiladigan indeksni belgilaydi. Bular. masalan, har bir qiymat ro'yxatning boshiga kiritilishi kerakligini belgilashimiz mumkin (yuqoridagi rasmdagi ikkinchi usul).

To'plamdan elementlarni olib tashlash uchun usuldan foydalaning Oʻchirish. Delete usuli indeks bo'yicha qaysi elementni o'chirishimizni belgilaydi.

Sintaksis: O'chirish()
Foydalanish misoli: OurArray.Delete(5);

Shuni ta'kidlash kerakki, satrlar mustaqil ob'ektni ifodalovchi to'plamlar uchun (masalan, uchun Qiymatlar jadvali), biz ushbu qatorni keyinchalik o'chirish uchun indeksni olish usulidan ham foydalanishimiz mumkin.

Deyarli barcha to'plamlarda qiymatni qidirish usuli mavjud - Toping. Biz topmoqchi bo'lgan qiymat usulga o'tkaziladi. Ba'zi to'plamlar ba'zi cheklovlarni o'rnatishga imkon beradi.

Masalan, in Qiymat jadvali siz qidirmoqchi bo'lgan satr va ustunlarni belgilashingiz mumkin.

Agar qiymat topilsa, bu usul indeks yoki belgilangan qatorni qaytaradi. Agar qiymat topilmasa, turdagi qiymat qaytariladi Berilgan element uchun massivni qidiradi. Agar topilsa, uning indeksini qaytaradi. Agar topilmasa, qaytadi. Massivga nisbatan, qaytaradi Indeks, yoki qiymat Berilgan element uchun massivni qidiradi. Agar topilsa, uning indeksini qaytaradi. Agar topilmasa, qaytadi.

Foydalanish misoli: OurVariable = OurArray.Find(8);

Universal to'plamlar juda tez tozalanishi mumkin, ya'ni. mutlaqo barcha elementlarni olib tashlang. Buning uchun usul qo'llaniladi Tozalash(), bu Massiv elementlarini, qatorlarini olib tashlaydi Qiymatlar jadvali, yoki boshqa to'plamlardan olingan ma'lumotlar.

Massiv uchun qo'shimcha usullar

Usul BBorder() elementlar sonini minus bittani qaytaradi. Bular. agar biz tsikldan foydalansak Uchun, keyin Miqdor usuli o'rniga biz darhol usuldan foydalanishimiz mumkin Chegara().

Xususan, QuantityInArray o'zgaruvchisi boshqacha ta'riflanishi mumkin:

QuantityInArray = OurArray.InBorder();
Keyin, tsiklning o'zini tavsiflashda, bu o'zgaruvchidan olib tashlanmaslik kerak.

Set usuli indeks bo'yicha Massiv elementiga qiymat berish imkonini beradi.

Sintaksis: O'rnatish(,)

Misol: OurArray.Set(2,8);

Muqobil variant: OurArray = 8;

Massiv uchun usuldan foydalanishingiz mumkin Oling, kvadrat qavslardan foydalanmasdan indeksdagi qiymatni o'qish uchun.

Sintaksis: Get()

Misol: OurVariable = OurArray.Get(2);

Muqobil variant: OurVariable = OurArray;

Universal to'plam tuzilishi

Struktura, massiv kabi, cheksiz miqdordagi elementlarga ega bo'lishi mumkin, lekin elementning mazmuni Massivdan farq qiladi.

Struktura to'plam bo'lib, uning har bir qiymati juftlikdan iborat. Juftlikning birinchi elementi deyiladi Kalit. Juftlikning ikkinchi elementi Ma'nosi.

Kalit qiymatni tavsiflovchi qat'iy qatorli ma'lumotlar turidir. Masalan, Kalitga"Kod" 113 qiymatiga mos kelishi mumkin; Kalitga"Ism" "Vasya" degan ma'noni anglatadi. Qiymatning o'zi ma'lumotlar turiga cheklov qo'yilmaydi.

Agar biz ma'lum parametrlar ro'yxatini yaratmoqchi bo'lsak, strukturadan foydalanish juda qulay. Agar bu Tuzilishi chaqirdi Bizning tuzilmamiz, keyin biz uning ikkita qiymatiga quyidagicha murojaat qilamiz: OurStructure.Code va OurStructure.Name.

Ushbu turdagi kirish biz massivdagi barcha parametrlarni aniqlab, ularga indeks bo'yicha kirishimizdan ko'ra ancha qulayroqdir.

Struktura dastur kodini o'qish mumkin (tushunadigan) qiladi. Struktura massivga qaraganda ancha tez-tez ishlatiladi.

U ko'pincha etarli bo'lgan ba'zi parametrlarni tavsiflash uchun ishlatiladi katta miqdorda barcha algoritmlarda.

Bundan tashqari, agar protsedura va funktsiyada ko'p sonli o'tkazilgan parametrlar mavjud bo'lsa, Strukturadan foydalaniladi.

Keyin barcha parametrlarni Strukturaga yozish va uni uzatish ancha qulayroq. Bular. protseduralar va funktsiyalarning parametrlari "qadoqlangan".

Alohida-alohida, shuni ta'kidlash kerakki, sifatida Kalit Strukturada mutlaqo hech qanday chiziq paydo bo'lishi mumkin emas. Muayyan cheklovlar qo'llaniladi.

Kalit identifikator vazifasini bajarishi kerak. Bu shuni anglatadiki, ichida Klyuche bo'sh joy bo'lmasligi kerak va u raqam bilan boshlanmaydi.

Qabul qilinadigan boshlanish Kalit harf yoki pastki chiziq bilan. Shunday qilib, Kalit identifikatorlarni yaratish talablariga javob berishi kerak.

Keling, Struktura massivdan yana qanday farq qilishini ko'rib chiqaylik. Strukturada usul mavjud Kiritmoq, Massivga kiritishning ikkita usuli mavjud: Kiritmoq(ma'lum bir pozitsiyaga) va Qo'shish(ro'yxatning oxirigacha). Massivda barcha elementlar tartiblangan.

Tuzilish tartibsiz to'plamning bir turi. Shuning uchun Struktura uchun faqat kiritish usuli mavjud.

Qiymat ma'lum bir pozitsiyaga emas, balki belgilangan to'plamga kiritiladi. Strukturaga boshqa umumiy toʻplamlar kabi indeks boʻyicha kirish mumkin emas.

Struktura elementlariga faqat Kalit nomi orqali kirish mumkin. Biroq, For Every tsikli Structure uchun ham ishlaydi, lekin siz Struktura elementlarining tartibiga tayanmasligingiz kerak.

Struktura boshqa umumiy to'plamlar kabi tuzilma ma'lumotlar turini ko'rsatgan holda Yangi konstruktor yordamida yaratiladi.

Massiv singari, Struktura konstruktori ham parametrlarga ega bo'lishi mumkin. Bular. konstruktor yordamida Strukturaning mazmunini tasvirlash mumkin.

Barcha o'lchamlar uchun elementlar sonini ko'rsatishingiz mumkin bo'lgan massivdan farqli o'laroq, Strukturada siz tarkibning o'zini belgilashingiz mumkin.

Masalan: Bizning tuzilmamiz = Yangi tuzilma ("Kod, ism", 133, "Vasya");

Vergul bilan ajratilgan holda, avval kalitlarning nomlari, so'ngra shunga mos ravishda, parametrlarning qiymatlari bir xil ketma-ketlikda ko'rsatiladi.

Strukturaga yangi qiymat qo'shish usuli mavjud Kiritmoq, bu yangi juftlik kiritadi (Kalit va qiymat).

Masalan: OurStructure.Insert("OilaA'zolari",3);

Struktura tez-tez ishlatiladigan boshqa usul bilan tavsiflanadi. Bu usul Mulk.

Ushbu usuldan foydalanib, siz ushbu Strukturada kaliti falon nomga ega bo'lgan element mavjudligini tushunishingiz mumkin.

Agar bunday element mavjud bo'lsa, tizim True qiymatini qaytaradi, aks holda - False.

Masalan, ifoda OurStructure.Property (“Oila aʼzolari”) True qiymatiga teng bo'ladi. Ushbu usul Strukturani tahlil qilishda juda tez-tez ishlatiladi.

Har qanday universal to'plamda bo'lgani kabi, Strukturaning xususiyatlariga indeks bo'yicha kirish mumkin. Lekin Struktura indeksi satr qiymatidir.

Masalan: Hisobot(Bizning tuzilmamiz[“Oila aʼzolari”]);

Ammo shuni unutmasligimiz kerakki, Struktura tartibsiz ob'ektlar to'plamidir, shuning uchun 0, 1, 2 indekslari bo'yicha kirish mumkin emas.

Umumiy to'plam Qadriyatlar ro'yxati

ListValues har qanday turdagi ma'lumotlar elementlarining chiziqli ro'yxati.

Har bir element bir nechta qiymatlardan iborat. Sxematik ravishda, qiymatlar ro'yxati to'rtta ustunli ro'yxat sifatida taqdim etilishi mumkin.

Birinchi ustun - Mark. U mantiqiy ma'lumotlar turiga ega va foydalanuvchiga qutilarni belgilash yoki olib tashlash imkonini beradi.

Boshqa ustun bu elementni qandaydir tarzda vizual tarzda ifodalashi mumkin bo'lgan rasmdir, ya'ni. ushbu qatorni rasm bilan moslang.

Uchinchi ustun - saqlangan qiymatning o'zi, ya'ni. bu har qanday turdagi ma'lumotlar va u turli satrlarda har xil bo'lishi mumkin.

To'rtinchi ustun - taqdimot, ya'ni. bu berilgan qiymatning qator tavsifining bir turi. Ko'rinish foydalanuvchi ushbu elementni ko'rganida ko'rsatiladi. Bunday holda, agar vakillik ko'rsatilmagan bo'lsa, tizim ushbu pozitsiyada joylashgan element uchun taqdimotlarni olishga harakat qiladi.

ListValues- bu foydalanuvchi vizual tarzda ishlashi mumkin bo'lgan ob'ekt. Bular. ListValues shaklda ko'rsatilishi mumkin.

Foydalanuvchi u bilan ba'zi amallarni bajarishi mumkin. Bundan tashqari, ListValues usullar yordamida mustaqil ravishda xulosa chiqarish mumkin, ya'ni. ekranda algoritmning ba'zi bo'limlarida (server kodidan tashqari) ko'rsating, shunda foydalanuvchi biron bir qatorni tanlaydi yoki ba'zi katakchalarni tekshiradi.

Biz topamiz ListValues sitaks yordamchisida. Konstruktor ListValues parametrlashtirilmagan (siz hech qanday standart qiymatlarni o'rnatolmaysiz).

Quyidagi kabi usullar mavjud:

  • Kiritmoq(,) ;
  • Qo'shish(,);
  • Miqdor();
  • Indeks().

Bundan tashqari, maxsus usullar mavjud, masalan, UnloadValues(). Bu qiymatlar ro'yxati nusxalanadigan massivni yaratadi. Masalan:

Elementlar massivi = PriceTypes ro'yxati.OutloadValues();

Bundan tashqari, teskari usul mavjud:
ListPriceTypes.LoadValues(ArrayItems);

Qidiruv usullari mavjud:
FindByValue(); FindByIdentifier().

Nusxa olish usuli mavjud:
ListCopy = PriceTypeList.Copy();
Bu usul nusxaga qandaydir o'zgartirish kiritish uchun mo'ljallangan.

Usullari bor:
SortByValue();
SortByView().

Usullari SelectItem(,) Va MarkItems() foydalanuvchi oynani yopmaguncha algoritmning bajarilishini to'xtatadigan modal dialog oynasini chaqiring.

Ushbu usullarni konfiguratsiya xususiyatlarida ishlatish uchun Modallikdan foydalanish tartibi ga sozlanishi kerak Foydalanish.

Boshqariladigan ilova modulidan chaqirilgan kod misoli:

Ushbu kodni foydalanuvchi rejimida ko'rsatish (modal dialog).

Quyida ListValues shakl atributlari uchun mavjud ma'lumotlar turi sifatida ishlatiladi. Qayta ishlash uchun shakl yarating yangi rekvizitlar, uning turini belgilang ListValues va uni formada ko'rsating.

Biz yaratamiz yangi jamoa Ro'yxatdan o'ting Sovg'alar, uni shaklga o'tkazing va uning uchun harakat ishlov beruvchisini belgilang.

Foydalanuvchi rejimida, ishlov berish shaklidagi "Sovg'alarni to'ldirish" tugmasini bosganingizda, to'ldirilgan ro'yxat paydo bo'ladi.

Agar so'ralsa, ro'yxatni tahrirlash mumkin: ba'zi elementlarni qo'shish, ba'zilarini olib tashlash mumkin.

Ko'p qirrali yig'ish muvofiqligi

Ushbu to'plam juda o'xshash Tuzilishi. Xuddi Struktura singari, Xaritalar ham kalit va qiymatning o'zidan iborat qiymatlar to'plamidir.

Asosiy farq shundaki, har qanday ma'lumot turi kalit sifatida ham, qiymat uchun ham ko'rsatilishi mumkin. Ushbu xususiyatni hisobga olgan holda, indeks qiymati sifatida mos keladigan qiymatga kirish kerak;

Kalit qatordan boshqa ma'lumotlar turi bo'lishi mumkin. Muvofiqlik bilan ishlashning xususiyatlari va usullari Structure bilan deyarli bir xil.

Muvofiqlik konstruktori, Strukturadan farqli o'laroq, parametrlarni belgilash qobiliyatini o'z ichiga olmaydi.

Foydalanish misoli:

Har qanday ikkita tuzilmani ulash kerak bo'lganda yozishmalardan foydalanish qulay. Masalan, jadval bo'limidagi har bir satr qiymatlar jadvalidagi qator bilan mos kelishi kerak.
Bunda Match tugmasi sifatida jadval bo'limi qatoridan foydalaniladi va unga mos qiymat ko'rsatiladi.

To'plamga elementlarni kiritishda usulga qo'shimcha ravishda Match Kiritmoq(,) Qiymat qo'shishning yana bir usuli - oddiy tayinlash operatoridan foydalanish.

Masalan: OurMatch = NewMatch;
Moslik = 999;

Bular. agar to'plamda element mavjud bo'lmasa, u tayinlash operatori yordamida qo'shiladi va agar mavjud bo'lsa, u yangilanadi.

Bu Strukturadan farq qiladi.

Umumjahon yig'ish qiymatlari jadvali

Qadriyatlar jadvali ixtiyoriy qatorlar soni va ustunlar soni ixtiyoriy bo'lgan jadvaldir. Kesishma har qanday turdagi ma'lumotlarning qiymatlarini saqlashi mumkin. Agar kerak bo'lsa, ustunlar yozilishi mumkin, ya'ni qaysi ustunda qanday turdagi ma'lumotlar saqlanganligini aniqlashingiz mumkin.

Ustunlarni yozilmagan holda qoldirishingiz mumkin, keyin har xil turdagi qiymatlar bir ustunda turli satrlarda saqlanishi mumkin.

Farqlar Qiymatlar jadvali ikki o'lchovli massivdan:

  • bu foydalanuvchi ishlashi mumkin bo'lgan ob'ekt (qiymatlar jadvali ekranda ko'rsatilishi mumkin, foydalanuvchi uni to'ldirishi va kiritilgan ma'lumotlarni o'qishi mumkin);
  • tez qidirish uchun indekslarni yaratish;
  • klonlash, butun ustunni ma'lum bir qiymat bilan to'ldirish, barcha ustunlarni massivga yuklash.

Qadriyatlar jadvali axborotni saqlash buferining bir turi sifatida ishlatiladi. Qadriyatlar jadvali qaytariladi va ko'plab tizim usullari bilan parametr sifatida qabul qilinadi. Qiymatlar jadvaliga qarshi so'rov qurish mumkin.

Shunday qilib, Qadriyatlar jadvali qatorlar va ustunlar to'plamidan iborat. Har ikkala satr va ustunlar to'plamdir.

Bular. kollektsiya ichida Qadriyatlar jadvali yana ikkita to'plam mavjud. Keling, sintaksis yordamchisiga murojaat qilaylik va topamiz Qadriyatlar jadvali.

Qo'llab-quvvatlanadigan ma'lumotlar turlari: o'zi Qadriyatlar jadvali, u satrlardan iborat. Har bir qator ma'lumotlar turi bilan ifodalanadi RowTableValues, bu o'ziga xos xususiyatlarga va o'z usullariga ega. Mavjud Jadval ustunlari qiymatlari to'plami ma'lum xususiyatlarga ham ega.

Muhim nuqta! Yaratuvchi protsedura Qadriyatlar jadvali, &OnServer kompilyatsiya qilish kerak.

Ishni boshlashdan oldin Qadriyatlar jadvali, unda qanday ustunlar bo'lishini aniqlashingiz kerak (ya'ni ularni yaratish). Sintaksis:

Qo'shish(,)
(ixtiyoriy)
Turi: String.
(ixtiyoriy)
Turi: Tavsif turlari
(ixtiyoriy)
Turi: String.
(ixtiyoriy)
Turi: raqam.

Masalan:

Ushbu protsedurani chaqirish uchun biz buyruqdan foydalanamiz.

Tavsifda Qiymatlar jadvali to'plamning elementlari aniq RowsTableValues.

Faqat xossalardan (Ism, Tur, Sarlavha, Kenglik) iborat ustunlardan farqli o'laroq, ichida RowTableValues ikkala xususiyatlar (ustun nomi bo'yicha kirish) va usullar mavjud (siz qiymatni olishingiz va belgilashingiz, egalari bilan ishlashingiz mumkin).

Qo'shmoq yangi qator jadvalga siz ham usuldan foydalanishingiz kerak Qo'shish(), yoki Kiritmoq(). Ikkinchi holda, kerakli chiziqni qaysi joyga qo'yish kerakligini ko'rsatishingiz kerak.

Ustunga qiymat berish uchun ustun nomi yoki indeksiga kirish uchun nuqtadan foydalanamiz (kvadrat qavslar yordamida).

To'ldirish uchun Qiymatlar jadvali Quyidagi usullardan foydalanish mumkin:

Tozalash()– barcha qatorlarni olib tashlash uchun Qiymatlar jadvali.

FillValues(,)– barcha ustunlarni yoki tanlangan ustunlarni bitta qiymat bilan toʻldirish imkonini beradi.
LoadColumn(,)– massivdan ustunni yuklaydi.
Unload Column()– ustunni massivga tushiradi.

Oxirgi ikkita usul ustunni bir qiymat jadvalidan boshqasiga o'tkazish kerak bo'lganda foydalanish uchun qulaydir.

Nusxalash(,)– mavjud jadval asosida yangisini yaratish imkonini beradi Qadriyatlar jadvali, va barcha satrlar va barcha ustunlar emas, balki faqat ba'zilari. Qaytish qiymati - Qadriyatlar jadvali.

Siz strukturani nusxalashingiz mumkin Qiymatlar jadvali. Buning uchun mos keladigan usul mavjud Ustunlarni nusxalash(). Biz bo'sh birini olamiz Qadriyatlar jadvali kerakli tuzilishga ega.

IN Qiymat jadvali usuli bor Jami(). Raqamli qiymatlarni jamlamoqchi bo'lgan ustunni belgilashingiz mumkin. Jadvalda ilgari ko'rsatilgan kodga nisbatan siz qiymatni hisoblashingiz mumkin: TZ.Jami (“Miqdor”).

IN Qiymat jadvali usuli yordamida raqamli qiymatlarni ma'lum ustunlarning bir xil qiymatlari bo'yicha guruhlash (yiqtirish) mumkin Yig'ish(,).

Jadvalda ilgari ko'rsatilgan kodga nisbatan siz qiymatni hisoblashingiz mumkin: TK.Collapse("Hafta kuni", "Miqdor").

Qadriyatlar jadvali foydalanuvchi ekranida ko'rsatilishi mumkin, shunda siz u bilan har qanday amallarni bajarishingiz mumkin. Ammo farqli o'laroq ListValues dan dastur kodi Siz shunchaki stolni ekranga keltira olmaysiz.

Ko'rsatish uchun Qadriyatlar jadvali ekranda forma atributini yarating va unga ma'lumotlar turini belgilang Qadriyatlar jadvali.

Shundan so'ng, natijada olingan jadval shaklda ko'rsatilishi kerak.

Oldindan tuzilgan algoritm oxiridagi shakl modulida (qiymatlar jadvalini yaratish tartibida) quyidagilarni qo'shishingiz kerak:
ValueInFormData(TK, Jadval);

Umumjahon kolleksiyasi Qadriyatlar daraxti

ga juda o'xshash universal to'plam Qadriyatlar jadvali. Jadvaldan farqi shundaki, daraxtning qatorlari bir-biriga bo'ysunishi mumkin, ya'ni. qandaydir ierarxiya shakllanishi mumkin.

Buni ekranda ham aks ettirish mumkin. Qiymatlar daraxti aniq qatorlar va ustunlar to'plamidan iborat. Daraxtda ikkita xususiyat mavjud: qatorlar va ustunlar.

Qatorlar bir-biriga bo'ysunishi mumkinligi sababli, har bir satr Ota-onaga, shuningdek, unga bo'ysunuvchi qatorlarga ega bo'lishi mumkin.

Tegishli Tree buyrug'ini va uni qayta ishlash protsedurasini yaratamiz.

Keling, yarataylik bunda bitta asosiy qator va ikkita tobe qator mavjud.

Keling, shakl atributlarini yarataylik DerZn(ma'lumotlar turi - Qadriyatlar daraxti).

Ushbu atribut uchun biz Yil va Oy ustunlarini yaratamiz.

Tegishli elementni siljiting DerZn formada.

Oxirida TreeOnServer() protseduralari qo'shamiz:

ValueInFormData(TreeZn, DerZn);

Keling, foydalanuvchi rejimida nima bo'lganini tekshiramiz.

Tugma yordamida Qo'shish yangi qatorlarni qo'shishingiz mumkin. Ular ierarxiyani ham tashkil qilishi mumkin.

Qiymat daraxtining barcha elementlarini aylanib o'tish uchun biz rekursiyadan foydalanishimiz kerak, ya'ni. protsedurani o'zidan chaqirish. Misol uchun, qiymat daraxtini qayta ishlash quyidagicha ko'rinishi mumkin:

Bu universal to'plamlar bilan birinchi tanishuvimizni yakunlaydi.

Keyingi maqolada dastur kodidan katalog elementiga kirishni soddalashtirish uchun ishlab chiquvchi qanday muhim mexanizmdan foydalanishi mumkinligini ko'rib chiqamiz.

Bluetooth