1s 8 ro'yxatdagi qiymatlar ro'yxati

Ushbu bo'limda biz 1C tilining yangi ma'lumotlar turi bilan tanishamiz ListValues.

Qadriyatlar ro'yxati massivdir, lekin katta imkoniyatlarga ega. Agar shunday bo'lsa, u ham ma'lumotlar to'plamidir va siz unga raqamlar to'plamini qo'yishingiz mumkin:

// qiymatlar ro'yxatini yaratdi

List.Add(23);

Hozircha hamma narsa massivga o'xshaydi, shunday emasmi? Ammo davom etaylik. Endi ushbu raqamlarni foydalanuvchiga ko'rsatish uchun biz yozamiz:

// ro'yxatning har bir elementi bo'ylab aylanish. Ro'yxatdagi har bir element uchun tsikl hisoboti (Element.Value);

// EndCycle elementining qiymatini ko'rsatish;

Va bu erda birinchi farq. Muntazam massivning elementlari raqamlarning o'zidir. Va elementning joriy qiymatiga kirish Roʻyxat variantidan foydalanamiz Ma'nosi, konstruksiyadan foydalanish Element. Ma'nosi.

Keling, ba'zi qo'shimcha funktsiyalarni ko'rib chiqaylik Qiymatlar.

Saralash mumkin

Misol uchun, biz qiymatlar ro'yxatini osongina saralashimiz mumkin. Ro'yxat buni o'zi bajarishi mumkin:

List.SortByValue(SortDirection.Age); Oddiy massiv bo'lsa, biz tartiblash algoritmlaridan birini (masalan, "qabariq") amalga oshirishimiz kerak bo'ladi.

Qidirish mumkin

Qiymatlar ro'yxati o'z elementlarini mustaqil ravishda qidirishi mumkin. Aytaylik, biz foydalanuvchi kiritgan raqam bizning ro'yxatimizda bor yoki yo'qligini bilmoqchimiz:

Raqamni kiriting (raqam); // foydalanuvchidan raqam kiritildi FoundElement = List. FindByValue(Raqam);

FoundItem = Aniqlanmagan bo'lsa OpenValue("Raqam " + Raqam + " ro'yxatda topilmadi!"); Aks holda

OpenValue("Raqam " + Raqam + " ro'yxatda. Mana:" + FoundElement.Value);

endIf; ListValues

Qo'shish va o'chirishni qo'llab-quvvatlaydi

Massiv kabi qiymatlar ro'yxati elementlarni qo'shish va olib tashlashni qo'llab-quvvatlaydi:

Roʻyxat. Insert (0, 1000);

// ro'yxatning eng boshida mingni qo'ying List.Delete(O); // va darhol uni Ro'yxat ro'yxatidan olib tashlang. Insert(List.Quantity(), 13);

// ro'yxat oxiriga 13 qo'ying Hisobot(Ro'yxat[Ro'yxat.Miqdor() - 1]);

// ro'yxatning oxirgi elementini ko'rsatish (13)

Kvadrat qavslarni qo'llab-quvvatlaydi

Siz allaqachon tushunganingizdek, ro'yxat elementlarini raqamlash ham noldan boshlanadi va biz kvadrat qavslar yordamida har qanday elementga indeksi bo'yicha kirishimiz mumkin:

Hisobot (Ro'yxat. Qiymat); // ro'yxatning ikkinchi elementini ko'rsatish Shunday qilib, biz ro'yxatning barcha elementlarini quyidagicha ko'rib chiqishimiz mumkin:

A = 0 uchun List.Quantity() bo'yicha - 1 Loop Report(List[A].Value);

EndCycle;

O'z nusxasini yaratishi mumkin

Qadriyatlar ro'yxati shunchaki ajoyib xususiyatga ega - u o'z nusxasini yaratishi mumkin:

ListCopy = List.Copy();

// ro'yxatning nusxasini yaratdik // endi biz Ro'yxatning nusxasini xavfsiz o'zgartirishimiz mumkin // asl ro'yxat esa Ro'yxatning nusxasini o'zgartirmaydi. Qiymat = 123456;

Massivga aylanishi mumkin

Va nihoyat, ro'yxatning barcha elementlarini istalgan vaqtda osongina massivga tashlashingiz mumkin:

ArrayNumbers = Ro'yxat. UnloadValues();

// massivga tashlandi

A = 0 uchun ArrayNumber.Quantity() bo'yicha - 1 sikl

Hisobot (ArrayNumbers[A]); // belgilash shart emas // variant Qiymati

EndCycle;

Ushbu bo'limning materialini mashq qilish va mustahkamlash uchun quyidagi vazifani bajarish tavsiya etiladi.

Foydalanuvchidan 5 ta raqamni kiritish, ularning eng kattasi va eng kichigini topib, foydalanuvchiga ko'rsatish kerak. Yechim qiymatlar ro'yxatidan foydalanishi kerak.

Yechim

Ro'yxat = Yangi qiymatlar ro'yxati;

// A = 1 dan 5 gacha bo'lgan davr uchun qiymatlar ro'yxatini yaratdi = 0;

Raqamni kiriting (raqam); // foydalanuvchidan raqam kiriting List.Add(Number); // va uni EndCycle ro'yxatiga qo'shing; // va hokazo 5 marta

// raqamlar ro'yxatini tartiblash

Roʻyxat. Qiymat bo‘yicha saralash(SortDirection.Age);

// saralashdan so'ng, ro'yxatning birinchi elementi // eng kichik element, oxirgisi esa eng katta OpenValue ("Eng kichik element" + List +

", va eng katta " + List[List.Quantity() - 1]);

Ushbu maqola nima haqida?

Ushbu maqola "1C rivojlanishidagi birinchi qadamlar" turkumini davom ettiradi. U universal to'plamlar 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 qadriyatlar 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.

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).

Umumiy to'plamlarning har xil turlari mavjud: 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 kerakli xatti-harakatni o'rnatishingiz mumkin ushbu ob'ektdan.

Ammo parametrlar ixtiyoriy; ishlab chiquvchi ularni o'rnatolmaydi va Massivning harakatini o'zi xohlagancha aniqlay olmaydi.

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

Umumjahon kollektsiyalari 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, indeksga kirishdan foydalanishingiz mumkin, buning uchun 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'plamlarga qo'llaniladigan usullar: Hisoblash, Indekslash, Qo'shish, Qo'shish, O'chirish va Topish.

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 keltirish mumkin Qadriyatlar jadvali.

Qadriyatlar jadvali- bu satrlarning o'ziga xos to'plami; satrlarda har xil turdagi qiymatlarga ega turli ustunlar bo'lishi mumkin.

Har bir satr mustaqil ob'ektni ifodalaydi. Siz unga havolani olishingiz mumkin, bu qator orqali siz ushbu satrdagi ustunlar qiymatlariga kirishingiz mumkin.

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

Ushbu to'plamga yangi qiymatlarni qo'shish usullari deyarli har birida mavjud universal to'plam. 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. Bu 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 Aniqlanmagan. Massivga nisbatan, qaytaradi Indeks, yoki qiymat Aniqlanmagan.

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- bu qat'iy string turi qiymatini tavsiflovchi ma'lumotlar. 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 ma'lum parametrlarni tavsiflash uchun ishlatiladi, ularning ko'pincha barcha algoritmlarda juda ko'p soni mavjud.

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 bir xil ketma-ketlikda parametrlarning qiymatlari ro'yxatga olinadi.

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. bu 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 qandaydir qator tavsifi berilgan qiymat. Ko'rinish foydalanuvchi ushbu elementni ko'rganida ko'rsatiladi. Bunday holda, agar vakillik ko'rsatilmagan bo'lsa, tizim ushbu pozitsiyadagi 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 sifatida ishlatiladi mavjud turi shakl tafsilotlari uchun ma'lumotlar. Biz ishlov berish shakli uchun yangi atribut yaratamiz va uning turini aniqlaymiz ListValues va uni formada ko'rsating.

Yangi jamoa yaratish Sovg'alarni to'ldiring, 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, mos keladigan qiymatga indeks bo'yicha kirish kerak, kalit qiymat indeks qiymati sifatida ko'rsatilgan.

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 farqli o'laroq.

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 qiymatlar turli qatorlarda bitta ustunda saqlanishi mumkin turli xil turlari.

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 qilishi 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 ulardan 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: TK.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-ga, 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 - Qiymat 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.

To'liq sintaksis (kengaytirish uchun bosing)

ListValues

Tavsif:

Qiymatlar ro'yxati - bu ma'lumotlar bazasida saqlanmaydigan ob'ekt bo'lib, u interfeys muammolarini hal qilish uchun dinamik qiymatlar to'plamini yaratish va ularni boshqarish (qo'shish, tahrirlash, elementlarni o'chirish, saralash) imkonini beradi. U har qanday turdagi qiymatlar bilan to'ldirilishi mumkin, ya'ni. Bitta ro'yxatda saqlangan qiymatlarning turlari har xil bo'lishi mumkin. Ushbu ob'ektdan foydalanishning bir misoli - murakkab algoritm yordamida yaratilgan mumkin bo'lgan hujjatlar ro'yxatidan ma'lum bir hujjatni tanlashni tashkil qilish.

To'plam elementlari: ValueListElement

Ob'ekt operator yordamida to'plamni chetlab o'tishi mumkin Har biri uchun... From... Velosiped. O'tish to'plamning elementlarini tanlaydi.

Kolleksiya elementiga [...] operatori yordamida kirish mumkin. Element indeksi argument sifatida uzatiladi ( 0 dan boshlab raqamlash).

Xususiyatlari:

Usullari:

Insert (Indeks, Value, Representation, Label, Image) Inserts yangi element belgilangan indeksga ega pozitsiyadagi qiymatlar ro'yxatiga.SelectElement (Sarlavha, Element) Qiymatlar ro'yxatiga kiritilgan elementlardan birini interaktiv tanlash uchun oynani chaqiradi. Element- interaktiv tanlashda dastlab qiymatlar ro'yxati joylashtirilishi kerak bo'lgan element. Agar parametr qiymati kiritilgan qiymatlar ro'yxati elementi bo'lmasa bu ro'yxat, joylashishni aniqlash sodir bo'lmaydi.O'chirish qiymatlari() Massiv yaratadi va unga qiymatlar elementlari ro'yxatining qiymatlarini ko'chiradi.Qo'shish(Qiymat, Representation, Label, Image)Qiymatlar ro'yxatining oxiriga yangi element qo'shadi.LoadValues(ArrayValues) O'tkazilgan massivdagi qiymatlar bilan qiymatlar ro'yxatini yuklaydi. Bunday holda, ro'yxatning barcha oldingi elementlari o'chiriladi.Eslatmalarni to'ldiring(Mark) Qiymatlar ro'yxatining barcha elementlari uchun belgi o'rnatadi.Index(Element)Qiymatlar ro'yxatidagi element indeksini oladi. Agar topilmasa, -1 qaytariladi.Count() qiymatlar ro'yxatidagi elementlar sonini oladi.FindByValue(SearchValue) Qiymatlar roʻyxatidagi element qiymatini qidiradi. Hech bir element qidiruv qiymatiga teng qiymatni saqlamasa, qiymat qaytariladi Aniqlanmagan. ID orqali toping(Identifikator) Identifikator bo'yicha qiymatlar elementi ro'yxatini oladi. Agar element topilmasa, u qaytariladi Aniqlanmagan. Belgilar(Sarlavha) Qiymatlar ro'yxatidagi elementlarni o'rnatadi yoki olib tashlaydi (interaktiv). Qaytadi To'g'ri, agar muloqot oynasida "OK" tugmasi bosilsa, Yolg'on- aks holda.Clear() Qiymatlar ro'yxatini tozalaydi, undan barcha elementlarni olib tashlaydi.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) Qiymatlar ro'yxatiga kiritilgan elementlardan birini interaktiv tanlash uchun oynani chaqiradi.Belgilarni ko'rsatish(Yopish ogohlantirishlarining tavsifi, sarlavha) Qiymatlar ro'yxati elementlari uchun belgi holatini interaktiv tarzda o'rnatish uchun mo'ljallangan.Get(Index)Qiymatni indeks bo'yicha oladi. Operatorga o'xshash ishlaydi.Shift (Element, Ofset) Qiymatlar ro'yxati elementini belgilangan pozitsiyalar soni bo'yicha oldinga yoki orqaga siljitadi.Copy() qiymatlar roʻyxatining nusxasini yaratadi.SortByValue(Yo'nalish) qiymatlar ro'yxatini elementlar tomonidan saqlangan qiymatlarning o'sish yoki kamayish tartibida tartiblaydi. Quyidagi misolga qarang.SortByView(Yo'nalish) Qiymatlar ro'yxatini o'sish yoki kamayish tartibida tartiblaydi alifbo tartibida element qiymatlari ro'yxatiga kiritilgan tasvirlar. Quyidagi misolga qarang.O'chirish (Element) Elementni qiymatlar ro'yxatidan olib tashlaydi, bu erda Element- o'chiriladigan element indeksi yoki elementning o'zi.

Dizaynerlar:

Yangi qiymatlar ro'yxati
&OnClient Procedure ExecuteCode(Buyruq) /// 1s 8.3, 8.2 da qiymatlar ro'yxatini qanday yaratish mumkin Ro'yxat = Yangi qiymatlar ro'yxati; /// 1s 8.3, 8.2.dagi qiymatlar ro'yxatiga elementni qanday qo'shish kerak // usul parametrlarini qo'shish:// - ma'nosi // - ishlash // - belgilash (majburiy) // - rasm (majburiy) Roʻyxat. Qo'shish (1980, // element qiymati "Vasyaning tug'ilgan yili"// ishlash); Roʻyxat. Qo'shish (1985, "Yuliyaning tug'ilgan yili") ; // qiymatlar har xil bo'lishi mumkin Roʻyxat. Qo'shish ("Polina" , "Bolaning ismi" ); /// 1s 8.3, 8.2.dagi qiymatlar ro'yxatiga elementni qanday kiritish kerak // №2 pozitsiyaga kiriting (elementlar 0 dan boshlab raqamlangan) // qiymati 2010 va tasvirga ega element // "Ularning qo'shma qizi tug'ilgan yili" Roʻyxat. Insert(2, 2010, "Ularning qo'shma qizi tug'ilgan yili") ; /// 1s 8.3, 8.2 qiymatlari ro'yxati elementlarini qanday chetlab o'tish mumkin Har bir element uchun roʻyxat tsikli hisoboti ( Element. Representation + ": " + String(Element. Value) ); EndCycle; /// 1s 8.3, 8.2.dagi qiymatlar ro'yxatini qanday tozalash kerak Roʻyxat. Clear(); Roʻyxat. Qo'shish ("Dushanba"); Roʻyxat. Qo'shish ("Seshanba"); Roʻyxat. Qo'shish ("chorshanba"); /// Qadriyatlar ro'yxatining elementlari sonini, shuningdek, qanday topish mumkin /// 1s 8.3, 8.2 da indeksi bo'yicha ro'yxat elementini oling // noldan raqamlash Indeks uchun = 0 Ro'yxat bo'yicha. Quantity() - 1 sikl hisoboti(Ro'yxat[Indeks]) ; EndCycle; /// Ro'yxat elementini 1s 8.3, 8.2 da qiymati bo'yicha qanday topish mumkin ValueTuesday = Ro'yxat. FindByValue("Seshanba"); /// Ro'yxatdagi element indeksini 1s 8.3, 8.2 da qanday topish mumkin Hisobot (List.Index(ValueTuesday)); // 1, chunki raqamlash noldan boshlanadi /// Ro'yxatni qiymatlari bo'yicha 1s 8.3, 8.2 // edi: dushanba, seshanba, chorshanba Roʻyxat. SortByValue(SortDirection.Descending) ; // bo'ldi: chorshanba, dushanba, seshanba /// 1s 8.3, 8.2.dagi qiymatlar roʻyxatidan elementni qanday olib tashlash mumkin // birinchi elementni olib tashlang // parametr: ro'yxat elementi // yoki element indeksi// siz ushbu ro'yxatni qilishingiz mumkin. O'chirish(Ro'yxat[ 0 ]); // yoki shunday // List.Delete(0); /// 1s 8.3, 8.2.dagi qiymatlar roʻyxati elementini qanday oʻzgartirish mumkin // nol elementni bir pozitsiya oldinga siljitish // edi: dushanba seshanba Roʻyxat. Harakat (0, 1); // bo'ldi: seshanba dushanba /// 1s 8 da ro'yxat nusxasini qanday qilish kerak ListCopy = Ro'yxat. Nusxa ko'chirish (); Ranglar = NewValueList; Ranglar. Qo'shish ("Qizil"); Ranglar. Qo'shish ("Yashil"); Ranglar. Qo'shish ("Ko'k"); /// Ro'yxat qiymatlarini 1s 8.3, 8.2 da massivga qanday yuklash mumkin ArrayColors = Ranglar. UnloadValues() ; /// 1s 8.3, 8.2 da massivdan ro'yxat qiymatlarini qanday yuklash mumkin Ranglar. LoadValues ​​(ArrayColors) ; Jarayonning oxiri /// Ro'yxatdagi qiymatni modelsiz tanlash qanday amalga oshiriladi /// qiymatlar 1s 8.3, 8.2&Mijoz protsedurasi bo'yicha Modal bo'lmaganValueSelection(Buyruq)ni qanday qilish kerak Ranglar = Yangi ValueList; Ranglar. Qo'shish ("Qizil"); Ranglar. Qo'shish ("Yashil"); Ranglar. Qo'shish ("Ko'k"); // AfterSelectingElement protsedurasi quyida aniqlangan AlertAfterElementSelection = Yangi TavsifOgohlantirishlar( "AfterElementSelection", ThisObject ); Ranglar. ShowElementSelection( NotificationAfterElementSelection, "Sevimli rangingizni tanlang"); Elementni tanlash (element, parametrlar) dan keyin protseduraning tugashi va mijozni yoqish tartibi<>Undefined Keyin Report(Element.Value) ; EndIf; Jarayonning oxiri /// Ro'yxatdagi qiymatlarni modelsiz belgilash qanday amalga oshiriladi /// qiymatlar 1s 8.3, 8.2&Mijoz tartibi to'g'risida Qimmatlarning modal bo'lmagan belgilarini qanday qilish kerak (Buyruq) Ranglar = Yangi qiymatlar ro'yxati; Ranglar. Qo'shish ("Qizil"); Ranglar. Qo'shish ("Yashil"); Ranglar. Qo'shish ("Ko'k"); // AfterMarkingElements protsedurasi quyida tavsiflangan AlertAfterMarkingItems = Yangi TavsifOgohlantirishlar( "Itemlarni belgilashdan keyin", ThisObject ); Ranglar. ShowTagItems( AlertAfterTagItems, "Sevimli ranglaringizni tanlang"); Ranglar. FillNotes(To'g'ri); Elementlarni (elementlar, parametrlarni) belgilashdan keyin protseduraning tugashi va mijoz protsedurasi Agar elementlarni eksport qilish<>Undefined So'ngra Elementlardan Har bir Rang uchun Agar Rang aylanishi. Hisobotni belgilash (Rang. Qiymat) ; EndIf; EndCycle; EndIf; Jarayonning oxiri /// 1s 8.3, 8.2 da roʻyxatdagi qiymatni modal tanlash qanday amalga oshiriladi&Mijoz tartibida ModalValueSelection(Buyruq)ni qanday qilish kerak Ranglar = Yangi ValueList; Ranglar. Qo'shish ("Qizil"); Ranglar. Qo'shish ("Yashil"); Ranglar. Qo'shish ("Ko'k"); Rangni tanlang = Ranglar. Elementni tanlang( "Sevimli rangingizni tanlang"); Agar Rangni tanlang<>Undefined Keyin Report(SelectColor.Value) ; EndIf; Jarayonning oxiri /// Ro'yxatdagi qiymatlarni modal tarzda qanday belgilash mumkin /// qiymatlar 1s 8.3, 8.2&Mijoz tartibi to'g'risida Modal qiymatlar belgisini qanday qilish kerak (Buyruq) Ranglar = Yangi qiymatlar ro'yxati; Ranglar. Qo'shish ("Qizil"); Ranglar. Qo'shish ("Yashil"); Ranglar. Qo'shish ("Ko'k"); Ranglar bo'lsa. Belgilar( "Sevimli ranglaringizni tanlang") Keyin rang siklidan har bir rang uchun If Color. Hisobotni belgilash (Rang. Qiymat) ; EndIf; EndCycle; EndIf; // bir vaqtning o'zida barcha belgilarni o'rnatishingiz mumkin // ma'lum bir qiymatga ro'yxat Ranglar. FillNotes(To'g'ri); Jarayonning oxiri /// Ushbu misollarni kompyuteringizga yuklab oling va ishga tushiring