Dəyərlər siyahısının elementi 1s. Universal Kolleksiya Strukturu

Tam sintaksis(genişləndirmək üçün klikləyin)

Dəyərlərin Siyahısı

Təsvir:

Dəyərlərin siyahısı verilənlər bazasında saxlanmayan, interfeys problemlərini həll etmək üçün dinamik dəyərlər dəstləri yaratmağa və onları manipulyasiya etməyə imkan verən bir obyektdir (elementləri əlavə etmək, redaktə etmək, silmək, çeşidləmək). İstənilən növ dəyərlərlə doldurula bilər, yəni. bir siyahıda saxlanılan dəyərlərin növləri fərqli ola bilər. Bu obyektdən istifadənin bir nümunəsi mürəkkəb alqoritm tərəfindən yaradılan mümkün sənədlər siyahısından konkret sənədin seçilməsini təşkil etməkdir.

Kolleksiya elementləri: ItemListValues

Operatordan istifadə edərək obyekt üçün kolleksiyadan keçmək mümkündür Hər biri üçün ... From ... Cycle. Traversal kolleksiyanın elementlərini seçir.

[...] operatorundan istifadə etməklə kolleksiyanın elementinə daxil olmaq mümkündür. Element indeksi arqument kimi ötürülür ( 0-dan nömrələmə).

Xüsusiyyətlər:

Metodlar:

Daxil et(İndeks, Dəyər, Görünüş, İşarələmə, Şəkil) Göstərilən indeksdəki mövqedəki dəyərlər siyahısına yeni element daxil edir.SelectElement(Başlıq, Element) üçün pəncərəni çağırır interaktiv seçim dəyərlər siyahısındakı elementlərdən biridir. Element- interaktiv seçim zamanı ilkin olaraq dəyərlər siyahısının yerləşdirilməli olduğu element. Parametrin dəyəri bu siyahıya daxil edilmiş dəyərlər siyahısının elementi deyilsə, yerləşdirmə baş verməyəcək.Yükləmə Dəyərləri() Massiv yaradır və dəyərlər siyahısındakı elementlərin dəyərlərini ona kopyalayır.Add(Value, View, Markup, Image) Dəyərlər siyahısının sonuna yeni element əlavə edir.Yükləmə Dəyərləri(Dəyərlər massivi) Keçirilmiş massivdən dəyərləri olan dəyərlər siyahısını yükləyir. Bu halda, siyahının bütün əvvəlki elementləri silinir.Qeydləri doldurun(Etiket) Dəyərlər siyahısının bütün elementləri üçün etiket təyin edir.İndeks (Element) Dəyərlər siyahısında elementin indeksini alır. Tapılmadıqda, -1 qaytarılır.count() Dəyərlər siyahısının elementlərinin sayını alır.FindByValue(LookupValue) Dəyərlər siyahısının elementinin dəyərini axtarır. Heç bir element istədiyiniz dəyərə bərabər dəyəri saxlamırsa, o zaman dəyər qaytarılır. Müəyyən edilməmiş. FindByID(ID) ID ilə dəyərlər siyahısı elementini alır. Element tapılmazsa, geri qaytarılır Müəyyən edilməmiş. Elementləri işarələyin(Başlıq) Dəyərlər siyahısındakı elementləri yoxlayır və ya işarədən çıxarır (interaktiv). qayıdır Doğru dialoq pəncərəsində "OK" düyməsi sıxılırsa, Yalan- əks halda.Clear() Bütün elementləri silməklə dəyərlər siyahısını təmizləyir.ShowElementSelection(ClosingAlertDescription, Title, Item) Dəyərlər siyahısındakı elementlərdən birini interaktiv şəkildə seçmək üçün pəncərəyə zəng edir.ShowMarkItems(DescriptionAlertOnClosing, Header)Dəyərlər siyahısı elementləri üçün bayraq vəziyyətlərinin interaktiv qurulması üçün nəzərdə tutulmuşdur.Get(Index) İndeksdəki dəyəri alır. Operatorla oxşar işləyir.Move (Element, Offset) Dəyərlər siyahısının bir elementini müəyyən edilmiş mövqelərin sayına görə irəli və ya geri aparır.Copy() Dəyərlər siyahısının surətini yaradır.SortByValue(İstiqamət) Dəyərlərin siyahısını elementlər tərəfindən saxlanılan dəyərlərin artan və ya azalan qaydada çeşidləyir. Aşağıdakı nümunəyə baxın.Baxışa görə Sort(İstiqamət) Dəyərlərin siyahısını siyahıdakı üzv dəyərlərin təsvirlərinin artan və ya azalan əlifba sırası ilə çeşidləyir. Aşağıdakı nümunəyə baxın.Sil (Element) Elementi olduğu dəyərlər siyahısından çıxarır Element- silinəcək elementin indeksi və ya elementin özü.

Konstruktorlar:

Yeni Dəyərlər Siyahısı
&OnClient Proseduru ExecuteCode(Command) /// 1s 8.3, 8.2-də dəyərlər siyahısını necə yaratmaq olar Siyahı = Dəyərlərin Yeni Siyahısı; /// 1s 8.3, 8.2-də dəyərlər siyahısına elementi necə əlavə etmək olar // metod parametrlərini əlavə edin:// - məna // - performans // - işarəsi (isteğe bağlı) // - şəkil (lazımdır) Siyahı. Əlavə et (1980, // element dəyəri "Vasyanın anadan olduğu il"// performans); Siyahı. Əlavə et (1985, "Yuliyanın ad günü") ; // dəyərlər müxtəlif növ ola bilər Siyahı. Əlavə et("Polina" , "Uşağın adı" ); /// 1s 8.3, 8.2-də dəyərlər siyahısına elementi necə daxil etmək olar // №2 mövqeyə daxil edin (elementlər 0-dan nömrələnir) // 2010 dəyəri və təmsili olan element // "Birgə qızlarının doğulduğu il" Siyahı. Yapışdırın(2, 2010, "Birgə qızlarının doğum ili") ; /// 1s 8.3, 8.2-də dəyərlər siyahısının elementlərini necə keçmək olar Siyahıdan Hər Element üçün Döngü Hesabatı ( Element. Görünüş + ": " + String(Element. Dəyər) ); EndCycle; /// 1s 8.3, 8.2-də dəyərlərin siyahısını necə təmizləmək olar Siyahı. Clear(); Siyahı. Əlavə et("Bazar ertəsi"); Siyahı. Əlavə et("Çərşənbə axşamı"); Siyahı. Əlavə et("Çərşənbə"); /// Dəyərlər siyahısının elementlərinin sayını necə tapmaq olar, həmçinin /// 1s 8.3, 8.2-də indeksinə görə siyahı elementini əldə edin // sıfırdan nömrələməİndeks üçün = 0 Siyahıya görə. Quantity() - 1 Döngü Hesabatı(Siyahı[İndeks] ); EndCycle; /// 1s 8.3, 8.2-də qiymətinə görə siyahı elementini necə tapmaq olar ValueTuesday = Siyahı. FindByValue("Çərşənbə axşamı" ); /// 1s 8.3, 8.2-də siyahıdakı elementin indeksini necə tapmaq olar Hesabat(Siyahı. İndeks(ValueTuesday) ); // 1, çünki nömrələmə sıfırdandır /// Siyahını 1s 8.3, 8.2-də qiymətlərinə görə necə çeşidləmək olar // idi: bazar ertəsi, çərşənbə axşamı, çərşənbə Siyahı. SortByValue(SortingDirection. Azalan); // oldu: çərşənbə, bazar ertəsi, çərşənbə axşamı /// 1s 8.3, 8.2-də dəyərlər siyahısından elementi necə çıxarmaq olar // birinci elementi çıxarın // parametr: siyahı elementi // və ya element indeksi// bu Siyahını edə bilərsiniz. Sil(Siyahı[ 0 ] ); // və ya belə // List.Delete(0); /// 1s 8.3, 8.2-də dəyərlər siyahısının elementini necə dəyişdirmək olar // sıfır elementi bir mövqe irəli sürüşdürün // idi: bazar ertəsi çərşənbə axşamı Siyahı. Köçür (0, 1); // oldu: çərşənbə axşamı bazar ertəsi /// Siyahının surətini 1s 8-də necə etmək olar ListCopy = Siyahı. Kopyala (); Rənglər = Yeni Dəyər Siyahısı; Rənglər. Əlavə et("Qırmızı"); Rənglər. Əlavə et("Yaşıl"); Rənglər. Əlavə et("Mavi" ); /// 1s 8.3, 8.2-də siyahı dəyərlərini bir sıraya necə boşaltmaq olar ArrayColors = Rənglər. UnloadValues() ; /// 1s 8.3, 8.2-də massivdən siyahı dəyərlərini necə yükləmək olar Rənglər. LoadValues(ArrayColors); EndProcedure /// Siyahıdan dəyərin modelsiz seçimini necə etmək olar /// 1s-də dəyərlər 8.3, 8.2&OnClient Proseduru How toMakeModalSelectValue(Command) Rənglər = New ValueList; Rənglər. Əlavə et("Qırmızı"); Rənglər. Əlavə et("Yaşıl"); Rənglər. Əlavə et("Mavi" ); // AfterItemSelect proseduru aşağıda müəyyən edilmişdir AlertAfterItemSelection = Yeni AlertDescription( "AfterElementSelection", ThisObject ); Rənglər. ShowItemChoice( AlertAfterItemChoice, "Sevdiyiniz rəngi seçin"); EndProcedure &AtClient Proseduru AfterElementSelection(Element,Parameters) Export If Element<>Undefined After Report(Item. Value) ; EndIf; EndProcedure /// Siyahıdan dəyərlərin modal olmayan işarəsini necə etmək olar /// 1s-də dəyərlər 8.3, 8.2&OnClient Proseduru How toMakeModalValueMark(Command) Colors = New ValueList; Rənglər. Əlavə et("Qırmızı"); Rənglər. Əlavə et("Yaşıl"); Rənglər. Əlavə et("Mavi" ); // AfterMarkingItems proseduru aşağıda müəyyən edilmişdir AlertAfterMarkItems = Yeni AlertDescription( "İşarələmədən Sonra Elementlər", ThisObject ); Rənglər. ShowItemMark( NotificationAfterItemMark, "Sevdiyiniz rəngləri seçin"); Rənglər. FillRemarks(Doğru); EndProcedure &OnClient ProseduruMarkingElements(Elementlər,Parametrlər) If Elementləri İxrac Edin<>Undefined Sonra Elementlərdən Hər Rəng Üçün Rəng Döngəsi. Bayraqla Sonra Hesabat (Rəng. Dəyər) ; EndIf; EndCycle; EndIf; EndProcedure /// 1s 8.3, 8.2-də siyahıdan dəyərin modal seçimini necə etmək olar&Müştəri Prosedurunda How toMakeModalSelectValue(Command) Rənglər = Yeni Dəyər Siyahısı; Rənglər. Əlavə et("Qırmızı"); Rənglər. Əlavə et("Yaşıl"); Rənglər. Əlavə et("Mavi" ); Rəng seçin = Rənglər. Element seçin( "Sevdiyiniz rəngi seçin"); Rəngi ​​Seçsəniz<>Undefined Sonra Hesabat (SelectColor. Value) ; EndIf; EndProcedure /// Siyahıdan dəyərlərin modal işarəsini necə etmək olar /// 1s-də dəyərlər 8.3, 8.2&OnClient Proseduru How toMakeModalValueMark(Command) Colors = New ValueList; Rənglər. Əlavə et("Qırmızı"); Rənglər. Əlavə et("Yaşıl"); Rənglər. Əlavə et("Mavi" ); Rənglər varsa. Elementləri İşarələyin( "Sevdiyiniz rəngləri seçin") Sonra Rəng Döngüsündən Hər Rəng üçün Rəng. Bayraqla Sonra Hesabat (Rəng. Dəyər) ; EndIf; EndCycle; EndIf; // və bütün işarələri eyni anda belə təyin edə bilərsiniz // müəyyən bir dəyərə siyahı Rənglər. FillRemarks(Doğru); EndProcedure /// Bu nümunələri kompüterə yükləyin və işlədin

Bu məqalə nədən bəhs edir

Bu məqalə "1C-də inkişafda ilk addımlar" məqalələr silsiləsini davam etdirir. Ümumi kolleksiyalarla işləmə prinsiplərini müzakirə edir. Məqaləni oxuduqdan sonra öyrənəcəksiniz:

  • Ümumi kolleksiyalar nədir, nə vaxt və hansı hallarda istifadə edilməlidir?
  • Bütün universal kolleksiyalarda ortaq nə var? Onların hamısı ilə işləmək üçün hansı texnikadan istifadə etmək olar?
  • Massiv nədir, onu necə və nə vaxt istifadə etmək olar? Onun hansı üsulları var?
  • Niyə strukturdan istifadə olunur? O, massivdən nə ilə fərqlənir?
  • Dəyərlərin siyahısını nə vaxt istifadə etməli? Onu formada necə göstərmək olar?
  • Uyğunluq - bu nədir və nə vaxt istifadə edilməlidir? Strukturla bağlı üstünlükləri nələrdir?
  • Dəyərlər cədvəli nə üçün istifadə olunur? Onun strukturunu necə təsvir etmək olar? Sətirləri necə əlavə etmək/çıxarmaq olar? Formaya necə gətirmək olar?
  • Dəyər ağacı - nə üçün istifadə olunur? Formanı necə doldurmaq və göstərmək olar? Onunla necə işləmək olar?

Uyğunluq

Məqalədə cari nəşrin 1C: Enterprise 8.3 platforması müzakirə olunur.

1C-də universal kolleksiyalarla necə işləmək olar

Dəyərlər toplusu adətən istənilən sayda elementi ehtiva edə bilən bir növ konteynerdir. Eyni zamanda, məlumat növü ilə bağlı çox vaxt ciddi məhdudiyyətlər yoxdur.

Ümumi kolleksiyaya dəyərlər əlavə edə bilərsiniz. Kolleksiyadakı bütün dəyərlər keçə bilər. Bu kolleksiyalar əsasən alqoritmlərdə bir növ emal üçün istifadə olunur. Bunlar. bunlar alqoritmin müddəti ərzində mövcud olan bəzi dinamik strukturlardır.

Kolleksiyaların verilənlər bazasında saxlanmadığını başa düşmək vacibdir (biz demək olar ki, istənilən məlumat növünü saxlaya bilən Value Store məlumat növündən danışmırıq).

Mövcüd olmaq müxtəlif növlərümumi kolleksiyalar: Massiv, Struktur, Xəritəçəkmə, Sabit Massiv, Dəyər Cədvəli, cədvəl hissəsi və s. Amma bütün kolleksiyalarda oxşar davranış var.

Kolleksiya bəzi funksiyalar nəticəsində yaradıla bilər (funksiya ümumi kolleksiyanı dəyər kimi qaytarır).

Mövcuddur yeni kolleksiya konstruktoru çağıraraq və sinfin nümunəsini yaratmaqla əl ilə.

Misal üçün: OurArray = Yeni Massiv;

Bir çox ümumi kolleksiyalar üçün konstruktorlar parametrləşdirilir.

Beləliklə, konstruktorda müvafiq ölçülərdə elementlərin sayını təyin edə bilərsiniz. Bunlar. dərhal çoxölçülü elan edə bilərsiniz .

Konstruktorun müvafiq təsviri sintaksis köməkçisindədir.

Beləliklə, konstruktor parametrlərindən istifadə edərək, bu obyektin istədiyiniz davranışını dərhal təyin edə bilərsiniz.

Lakin parametrlər isteğe bağlıdır, tərtibatçı onları təyin edə bilməz və Array-ın davranışını uyğun gördüyü kimi daha da müəyyən edə bilməz.

Demək olar ki, hər hansı bir ümumi kolleksiya konstruktordan istifadə etməklə yaradıla bilər (konfiqurasiya obyektləri kimi çıxış edən cədvəl hissələri istisna olmaqla).

Ümumi kolleksiyalar üçün var ümumi anlayışlar indeks və nömrə kimi. Kolleksiyanın hər bir elementinin indeksi var. İndeks sıfırdan başlayır.

Elementə daxil olmaq üçün BizimArray, indeks girişindən istifadə edə bilərsiniz, bunun üçün indeks kvadrat mötərizədə göstərilir.

Misal üçün, BizimArray. Qeyd edək ki, bu halda sistem 3-cü indeksdə Array elementini qaytarır və ardıcıl olaraq bu, Arrayın dördüncü elementidir.

Bəzi kolleksiyalar üçün sıra nömrəsi anlayışı da var. Sətir nömrəsi bir ilə başlayır. Məsələn, cədvəl bölməsi üçün sıra nömrəsi kimi bir xüsusiyyət var. Nəzərə almaq lazımdır ki, əgər biz sətir nömrəsini biliriksə və indekslə daxil olmaq istəyiriksə, o zaman sətir nömrəsindən bir az olan dəyər indeks kimi istifadə edilməlidir.

Sətir nömrəsi anlayışı bütün kolleksiyalar üçün mövcud deyil, əsasən istifadəçi interfeysində göstərilə bilənlər üçün mövcuddur.

Bütün kolleksiyalar üçün kolleksiyanın elementlərinin keçidindən istifadə olunur. Bypass iki yolla mümkündür: dövrü üçündövrü hər biri üçün.

Əksər ümumi kolleksiyalar üçün aşağıdakı üsullar tətbiq olunur: Say, İndekslə, Əlavə et, Daxil et, Sil və Tap.

Count kolleksiyadakı elementlərin sayını qaytaran funksiyadır. Döngədən əvvəl istifadə edilə bilər üçün, şəkildə göstərildiyi kimi.

İndeks metodu bütün kolleksiyalar üçün mövcud deyil, yalnız elementlərinə istinad edilə bilənlər üçün mövcuddur. Bir misaldır Dəyər Cədvəli.

Dəyər Cədvəli sətirlərin xüsusi toplusudur, sətirlərdə müxtəlif sütunlar ola bilər fərqli növlər dəyərlər.

Hər bir xətt müstəqil bir varlıqdır. Siz ona bir keçid əldə edə bilərsiniz, bu sətir vasitəsilə bu sətirdəki sütunların dəyərlərinə daxil ola bilərsiniz.

İndeks metodu hansı indeksin verilmiş cərgəyə uyğun olduğunu müəyyən etməyə imkan verir (yəni cədvəldə cərgənin cari mövqeyi). İndeks dəyərləri sıfırdan başlayır.

Bu kolleksiyaya yeni dəyərlər əlavə etmək üsulları demək olar ki, hər bir ümumi kolleksiyada mövcuddur. Şəkildə 0-dan 10-a qədər olan dəyərləri iki yolla necə doldurmaq olar.

Massivə element əlavə etmək üçün metoddan istifadə edə bilərik əlavə et, mötərizədə əlavə dəyəri göstərin. Bu halda, dəyər siyahının sonuna əlavə olunacaq, yəni. Massiv son mövqeyə görə daim artacaq.

Kolleksiyaya dəyər əlavə etməyə imkan verən başqa bir üsul metoddur Daxil et. Metoddan fərqlənir əlavə et belə ki, siz əlavə edilmiş elementi hara daxil edəcəyinizi təyin edə biləsiniz.

Sintaksis: Daxil edin (,)

Birinci parametr yeni dəyərin daxil ediləcəyi indeksi təyin edir. Bunlar. biz, məsələn, hər bir dəyərin siyahının əvvəlinə daxil edilməli olduğunu təyin edə bilərik (yuxarıdakı şəkildəki ikinci yol).

Metod kolleksiyadan elementləri silmək üçün istifadə olunur. Sil. Delete metodunda hansı elementi siləcəyimiz indekslə göstərilir.

Sintaksis: Sil()
İstifadə nümunəsi: OurArray.Delete(5);

Qeyd etmək lazımdır ki, sətirlərin müstəqil bir varlığı təmsil etdiyi kolleksiyalar üçün (məsələn, üçün Cədvəl Dəyərləri), verilən sıranı sonradan silmək üçün get index metodundan da istifadə edə bilərik.

Demək olar ki, bütün kolleksiyalarda dəyər tapmaq üçün bir üsul var - Tap. Metod tapmaq istədiyimiz dəyərdən keçir. Bəzi kolleksiyalarda hər hansı bir məhdudiyyət qoya bilərsiniz.

Məsələn, in Dəyər Cədvəli axtarış etmək istədiyiniz sətirləri, sütunları təyin edə bilərsiniz.

Dəyər tapılarsa, bu üsul indeksi və ya müəyyən bir sətri qaytarır. Heç bir dəyər tapılmazsa, növün dəyəri qaytarılır. Müəyyən edilməmiş. Massilə tətbiq edildikdə, qaytarır indeks, ya da dəyəri Müəyyən edilməmiş.

İstifadə nümunəsi: OurVariable = OurArray.Find(8);

Ümumi kolleksiyalar çox tez təmizlənə bilər, yəni. tamamilə bütün elementləri çıxarın. Bunun üçün metoddan istifadə olunur aydın(), bir Array elementlərini silən sətirlər Cədvəl Dəyərləri və ya digər kolleksiyalardan alınan məlumatlar.

Massiv üçün əlavə üsullar

Metod Bboundary() elementlərin sayını birdən çıxarır. Bunlar. bir döngə istifadə etsək üçün, onda Quantity metodu əvəzinə dərhal metoddan istifadə edə bilərik Sərhəd().

Xüsusilə, NumberInArray dəyişəni fərqli şəkildə müəyyən edilə bilər:

NumberInArray = OurArray.InBorder();
Sonra, dövrün özünü təsvir edərkən, bu dəyişəndən birini çıxarmaq olmaz.

Set metodu Array elementinə indeks üzrə qiymət təyin etməyə imkan verir.

Sintaksis: Yüklemek(,)

Misal: OurArray.Set(2,8);

Alternativ seçim: OurArray = 8;

Massiv üçün metoddan istifadə edə bilərsiniz alın, kvadrat mötərizələrdən istifadə etmədən indeksdəki dəyəri oxumaq üçün.

Sintaksis: alın()

Misal: OurVariable = OurArray.Get(2);

Alternativ seçim: OurVariable = OurArray;

Universal Kolleksiya Strukturu

Struktur, Massiv kimi, qeyri-məhdud sayda elementə malik ola bilər, lakin elementin məzmunu Massivdən fərqlidir.

Struktur, hər bir dəyəri bir cütdən ibarət olan bir kolleksiyadır. Bir cütün ilk elementi deyilir Açar. Cütlüyün ikinci elementi Məna.

Açar dəyəri təsvir edən ciddi sətirli məlumat növüdür. Misal üçün, açar"Kod" 113 dəyərinə uyğun ola bilər; açar"Ad" "Vasya" deməkdir. Dəyərin özündə heç bir məlumat növü məhdudiyyəti yoxdur.

Parametrlərin siyahısını yaratmaq istəsək strukturu istifadə etmək çox rahatdır. Əgər bu Strukturçağırdı Bizim Strukturumuz, onda onun iki dəyərinə aşağıdakı kimi istinad edəcəyik: BizimStructure.Code və OurStructure.Name.

Belə bir müraciət biz Massivdə bütün parametrləri müəyyən edib onlara indekslə daxil olmağımızdan daha rahatdır.

Struktur proqram kodunu oxunaqlı edir (anlaşılır). Quruluş, Array-dan daha tez-tez istifadə olunur.

Bütün alqoritmlərdə çox vaxt kifayət qədər böyük olan bəzi parametrləri təsvir etmək üçün istifadə olunur.

Bundan əlavə, əgər prosedur və funksiya çoxlu sayda ötürülən parametrləri ehtiva edirsə, Strukturdan istifadə olunur.

O zaman bütün parametrləri Struktura yazıb ötürmək daha rahatdır. Bunlar. prosedurların və funksiyaların parametrlərinin "qablaşdırılması" var.

Ayrılıqda qeyd etmək lazımdır ki, kimi açar Strukturda heç bir sətir görünə bilməz. Müəyyən məhdudiyyətlər tətbiq olunur.

Açar identifikator kimi çıxış etməlidir. Bu o deməkdir ki, in açar boşluq olmamalıdır və nömrə ilə başlaya bilməz.

İcazə verilən başlanğıc açar hərf və ya alt xətt ilə. Beləliklə, Açar identifikatorların yaradılması tələblərinə cavab verməlidir.

Strukturun Massivdən nə ilə fərqləndiyini qeyd edək. Strukturun bir metodu var Daxil et, Massiv daxil etmək üçün iki üsula malikdir: Daxil et(müəyyən bir mövqeyə) və əlavə et(siyahının sonunda). Massivdə bütün elementlər sıralanır.

Struktur bir növ nizamsız çoxluqdur. Buna görə də Struct üçün yalnız daxiletmə üsulu mövcuddur.

Dəyər müəyyən bir mövqedə deyil, müəyyən edilmiş dəstdə daxil edilir. Struct digər ümumi kolleksiyalar kimi indekslə istinad edilə bilməz.

Strukturun elementlərinə yalnız Açarın adı ilə istinad edilir. Bununla belə, For every of loop Structure üçün də işləyir, lakin siz Structure elementlərinin sırasına etibar etməməlisiniz.

Struktur, Strukturun məlumat tipini təyin etməklə, Yeni konstruktordan istifadə etməklə digər ümumi kolleksiyalarla eyni şəkildə yaradılır.

Massiv kimi, Struct konstruktorunun parametrləri ola bilər. Bunlar. konstruktordan istifadə etməklə Strukturun özünün məzmununu təsvir etmək mümkündür.

Sadəcə olaraq bütün ölçülər üçün elementlərin sayını təyin edə biləcəyiniz Massivdən fərqli olaraq, Strukturda məzmunun özünü təyin etmək mümkündür.

Misal üçün: OurStructure = New Structure("Kod,Ad", 133, "Vasya");

Əvvəlcə Açarların adları vergüllə ayrılmış, sonra isə müvafiq olaraq eyni ardıcıllıqla parametrlərin dəyərləri verilmişdir.

Struktura yeni bir dəyər əlavə etmək üçün bir üsul var Daxil et, yeni cüt daxil edən (Açar və Dəyər).

Misal üçün: OurStructure.Insert("Ailə Üzvləri",3);

Struktur tez-tez istifadə olunan başqa bir üsulla xarakterizə olunur. Bu üsuldur Əmlak.

Bu metoddan istifadə edərək, bu Strukturda Açarın belə və belə bir adı olan belə bir elementin olub olmadığını başa düşə bilərsiniz.

Əgər belə element varsa, sistem True qaytaracaq, əks halda isə False qaytaracaq.

Məsələn, ifadə BizimStructure.Property (“Ailə Üzvləri”) True bərabər olacaq. Bu üsuldan Strukturun təhlilində kifayət qədər tez-tez istifadə olunur.

Hər hansı bir universal kolleksiyaya gəldikdə, Strukturun xüsusiyyətlərinə indekslə daxil olmaq icazəlidir. Lakin Struktur üçün indeks sətir dəyəridir.

Misal üçün: Hesabat(Bizim Structure["Ailə Üzvləri"]);

Bununla belə, unutmaq olmaz ki, Struktur sifarişli obyektlər dəsti deyil, buna görə də 0, 1, 2 indeksi ilə giriş qəbuledilməzdir.

Ümumi Kolleksiya Dəyərlərin Siyahısı

Dəyərlərin Siyahısı hər hansı bir məlumat növünün elementlərinin xətti siyahısıdır.

Hər bir element bir neçə dəyərdən ibarətdir. Sxematik olaraq, dəyərlər siyahısı dörd sütunlu bir siyahı kimi təqdim edilə bilər.

Birinci sütun - işarələyin. O, boolean məlumat növünə malikdir və istifadəçiyə ya qutuları qeyd etməyə, ya da işarəni silməyə imkan verir.

Digər sütun bir şəkildə bu elementi vizual olaraq təsvir edə bilən bir şəkildir, yəni. bu xətti istənilən şəkil ilə uyğunlaşdırın.

Üçüncü sütun saxlanılan dəyərin özüdür, yəni. bu hər hansı bir məlumat növüdür və müxtəlif sıralarda fərqli ola bilər.

Dördüncü sütun görünüşdür, yəni. bu verilmiş dəyərin bəzi sətir təsviridir. Görünüş bu elementə baxdıqda istifadəçiyə göstəriləcək. Bu halda, görünüş təyin olunmayıbsa, sistem bu mövqedə olan element üçün baxışları əldə etməyə çalışacaq.

Dəyərlərin Siyahısı- bu istifadəçinin vizual olaraq işləyə biləcəyi obyektdir. Bunlar. Dəyərlərin Siyahısı formada göstərilə bilər.

İstifadəçi onunla bəzi hərəkətlər edə bilər. Bundan başqa, Dəyərlərin Siyahısıüsullardan istifadə edərək müstəqil olaraq nəticə çıxarmaq olar, yəni. ekranda alqoritmin bəzi bölmələrində göstərin (. istisna olmaqla server kodu) istifadəçinin sətir seçməsi və ya bəzi qutuları yoxlaması üçün.

tapaq Dəyərlərin Siyahısı sitax köməkçisində. Konstruktor Dəyərlərin Siyahısı parametrləşdirilməmişdir (heç bir standart dəyər təyin edilə bilməz).

Belə üsullar var:

  • Daxil et(,);
  • Əlavə et(,);
  • Kəmiyyət();
  • İndeks().

Xüsusi üsullar da var, məsələn, Dəyərləri boşalt(). Bu, dəyərlər siyahısının kopyalandığı bir Massiv yaradır. Misal üçün:

ArrayElements = ListPriceTypes.UnloadValues();

Əks üsul da var:
PriceTypeList.LoadValues(ElementsArray);

Axtarış üsulları var:
FindByValue(); FindByIdentifier().

Kopyalama üsulu var:
CopyList = ListPriceTypes.Copy();
Bu üsul surəti ilə bir növ dəyişiklik etmək nəzərdə tutulur.

üsulları var:
SortByValue();
SortByView().

Metodlar Element seçin(,)MarkItems() istifadəçi bu pəncərəni bağlayana qədər alqoritmin icrasını dayandıran modal dialoq qutusunu çağırın.

Bu üsulları konfiqurasiya xüsusiyyətlərində istifadə etmək Modallıqdan istifadə rejimi təyin edilməlidir istifadə edin.

İdarə olunan Tətbiq modulundan çağırılan kod nümunəsi:

Bu kodu istifadəçi rejimində göstərin (modal dialoq qutusu).

Aşağıda Dəyərlərin Siyahısı forma atributu üçün mövcud məlumat növü kimi istifadə olunur. Emal forması üçün yeni bir atribut yaradırıq, onun tipini müəyyənləşdiririk Dəyərlərin Siyahısı və onu formada göstərin.

Biz yaradırıq yeni komanda Mağaza Hədiyyələri, onu formaya köçürün və onun üçün fəaliyyət idarəçisi təyin edin.

İstifadəçi rejimində, emal formasında Hədiyyələri Doldur düyməsini kliklədiyiniz zaman tamamlanmış siyahı görünəcək.

İstəyirsinizsə, siyahı redaktə edilə bilər: bəzi elementlər əlavə edin, bəzilərini çıxarın.

Universal Kolleksiya Uyğunluğu

Bu kolleksiya çox oxşardır strukturu. Struct kimi, Uyğunluq da açar və dəyərin özündən ibarət olan dəyərlər toplusudur.

Əsas fərq ondan ibarətdir ki, istənilən məlumat növü həm Açar, həm də dəyər üçün göstərilə bilər. Bu xüsusiyyəti nəzərə alaraq, uyğunluq dəyərinə indekslə daxil olmaq lazımdır, əsas dəyər indeks dəyəri kimi müəyyən edilir.

Açar sətirdən başqa bir məlumat növü ola bilər. Uyğunlaşdırma ilə işləmək xüsusiyyətləri və üsulları Strukturun xüsusiyyətləri ilə demək olar ki, eynidir.

Match Constructor, Struct-dan fərqli olaraq, parametrləri təyin etmək qabiliyyətinə malik deyil.

İstifadə nümunəsi:

Yazışma hər hansı iki strukturu əlaqələndirmək lazım olduqda faydalıdır. Məsələn, cədvəl hissəsinin hər bir cərgəsi dəyərlər cədvəlindən bir sıra ilə uyğunlaşdırılmalıdır.
Bu zaman Cədvəl bölməsinin cərgəsi Uyğunlaşma düyməsi kimi istifadə edilir və müvafiq qiymət göstərilir.

Metoddan başqa Match kolleksiyasına elementlər daxil edərkən Daxil et(,) Dəyər daxil etməyin başqa bir yolu var, o da normal təyinetmə operatorundan istifadə etməkdir.

Misal üçün: OurMatch = Yeni Uyğunluq;
Uyğunluq = 999;

Bunlar. əgər element kolleksiyada mövcud deyildisə, o zaman təyinat operatorundan istifadə etməklə əlavə olunacaq, əgər varsa, yenilənəcək.

Bu Strukturdan fərqlidir.

Ümumi Kolleksiya Dəyərlər Cədvəli

Dəyər Cədvəli ixtiyari sayda sətir və ixtiyari sayda sütundan ibarət cədvəldir. Kəsişmə istənilən məlumat növünün dəyərlərini saxlaya bilər. Lazım gələrsə, sütunlar yazıla bilər, yəni hansı sütunda hansı növ məlumatların saxlandığını müəyyənləşdirin.

Sütunları tipsiz qoya bilərsiniz, sonra fərqli sətirlərdəki eyni sütun müxtəlif növ dəyərləri saxlaya bilər.

Fərqlər Cədvəl Dəyərləri 2D massivindən:

  • bu istifadəçinin işləyə biləcəyi bir obyektdir (qiymətlər cədvəli ekranda göstərilə bilər, istifadəçi onu doldura bilər, gələcəkdə daxil edilmiş məlumatlar oxuna bilər);
  • sürətli axtarış üçün indekslərin qurulması;
  • klonlaşdırma, bütün sütunun müəyyən bir dəyərlə doldurulması, bütün sütunların massivdə boşaldılması.

Dəyər Cədvəli informasiyanın saxlanması üçün bir növ bufer kimi istifadə olunur. Dəyər Cədvəli qaytarılır və sistemin bir çox üsulları ilə parametr kimi qəbul edilir. Dəyərlər Cədvəlinə sorğu qurmaq mümkündür.

Belə ki, Dəyər Cədvəli sətirlər və sütunlar toplusundan ibarətdir. Həm sətirlər, həm də sütunlar kolleksiyalardır.

Bunlar. kolleksiyanın içərisində Dəyər Cədvəli daha iki kolleksiya var. Sintaksis köməkçisinə müraciət edək və tapaq Dəyər Cədvəli.

Dəstəklənən məlumat növləri: özü Dəyər Cədvəli, sətirlərdən ibarətdir. Hər bir sıra məlumat növü ilə təmsil olunur Satır CədvəliDəyərləri, özünəməxsus xüsusiyyətləri və üsulları var. Mövcuddur Kolleksiya Sütunları CədvəlDəyərləri müəyyən xüsusiyyətlərə də malikdir.

Vacib məqam! Yaradan prosedur Dəyər Cədvəli, tərtib etməlidir və OnServer.

İşə başlamazdan əvvəl Dəyər Cədvəli, onun hansı sütunları ehtiva edəcəyini müəyyən etməlisiniz (yəni onları yaradın). Sintaksis:

Əlavə et(,)
(isteğe bağlı)
Növ: simli.
(isteğe bağlı)
Növ: Təsvir növləri
(isteğe bağlı)
Növ: simli.
(isteğe bağlı)
Növ: Nömrə.

Misal üçün:

Bu proseduru çağırmaq üçün əmrdən istifadə edəcəyik.

Təsvirdə Cədvəl Dəyərləri kolleksiyanın elementləri tam olaraq olduğu kimi Satır CədvəliDəyərləri.

Yalnız xassələrdən (Ad, Növ, Başlıq, Genişlik) ibarət olan sütunlardan fərqli olaraq Satır CədvəliDəyərləri həm xassələr (sütun adına istinad), həm də üsullar (dəyər əldə edib təyin edə bilərsiniz, sahiblərlə işləyə bilərsiniz) var.

Əlavə etmək yeni sətir masaya, siz də metoddan istifadə etməlisiniz Əlavə et(), və ya Daxil et(). İkinci halda, tələb olunan sətirin hansı mövqedə yerləşdiriləcəyini təyin etməlisiniz.

Bir sütuna dəyər təyin etmək üçün biz ona nöqtə ilə ayrılmış sütun adı və ya indeksi (kvadrat mötərizələrdən istifadə etməklə) istinad edirik.

Doldurmaq üçün Cədvəl Dəyərləri aşağıdakı üsullardan istifadə etmək olar:

aydın()- bütün sətirləri silmək üçün Cədvəl Dəyərləri.

Doldurma dəyərləri(,)– bütün sütunları və ya seçilmiş sütunları bir dəyərlə doldurmağa imkan verir.
Sütun Yüklə(,)– massivdən sütun yükləyir.
Boşaltma sütunu()– sütunu massivdə boşaldır.

Son iki üsul bir sütunu bir dəyər cədvəlindən digərinə köçürmək lazım olduqda faydalıdır.

Kopyalayın(,)- mövcud cədvəl əsasında yeni cədvəl yaratmağa imkan verir Dəyər Cədvəli, bütün sətirləri və bütün sütunları deyil, yalnız bəzilərini göstərərkən. Qaytarılan dəyər - Dəyər Cədvəli.

Strukturu kopyalaya bilərsiniz Cədvəl Dəyərləri. Bunun üçün uyğun bir üsul var. Sütunları Kopyala(). Biz boş alacağıq Dəyər Cədvəli istədiyiniz strukturla.

IN Dəyər Cədvəliüsulu var ümumi(). Siz ədədi dəyərləri cəmləmək istədiyiniz sütunu təyin edə bilərsiniz. Cədvəldə əvvəllər göstərilən kodla əlaqədar olaraq, dəyəri hesablaya bilərsiniz: TK.Cəmi (“Cəm”).

IN Dəyər Cədvəli metoddan istifadə edərək ədədi dəyərləri müəyyən sütunların eyni dəyərləri ilə qruplaşdırmaq (yıxmaq) mümkündür Yığcam(,).

Cədvəldə əvvəllər göstərilən kodla əlaqədar olaraq, dəyəri hesablaya bilərsiniz: TK.Collapse("Həftənin günü", "Məbləğ").

Dəyər Cədvəli istifadəçinin ekranında göstərilə bilər ki, onunla istənilən hərəkəti edə biləsiniz. Amma fərqli olaraq Dəyərlərin Siyahısı proqram kodundan sadəcə ekrandakı cədvələ zəng edə bilməzsiniz.

Göstərmək Dəyər Cədvəli ekranda forma atributunu yaradın və ona məlumat tipi təyin edin Dəyər Cədvəli.

Bundan sonra alınan cədvəl formada göstərilməlidir.

Forma modulunda, əvvəllər tərtib edilmiş alqoritmin sonunda (Dəyərlər Cədvəlinin Yaradılması Prosedurunda) əlavə edin:
ValueVFormData(TK, Cədvəl);

Ümumi Kolleksiya Dəyərlər Ağacı

çox oxşar olan çox yönlü kolleksiya Dəyər Cədvəli. Cədvəldən fərq, ağacın cərgələri bir-birinə tabe ola bilər, yəni. bir növ iyerarxiya formalaşa bilər.

Ekranda da göstərilə bilər. Dəyər ağacı açıq şəkildə sətirlər və sütunlar toplusundan ibarətdir. Ağacın iki xüsusiyyəti var: Satırlar və Sütunlar.

Sətirlər bir-birinə tabe ola bildiyinə görə, hər bir cərgə üçün ona tabe olan sətirlərlə yanaşı, bir Valideyn də göstərilə bilər.

Müvafiq Tree əmrini və onun emal prosedurunu yaradaq.

Yaradaq burada bir ana cərgə və iki tabe cərgə var.

Forma atributunu yaradın DerZn(məlumat növü - Dəyər Ağacı).

Bu atribut üçün İl və Ay sütunlarını yaradacağıq.

Müvafiq elementi köçürün DerZn formaya.

Sonda TreeOnServer() prosedurlarıəlavə edin:

ValueVFormData(TreeZn, DerZn);

İstifadəçi rejimində nə baş verdiyini yoxlayaq.

Düymə ilə əlavə et yeni sətirlər əlavə edə bilərsiniz. Onlar həmçinin bir iyerarxiya təşkil edə bilərlər.

Dəyər ağacının bütün elementlərini təkrarlamaq üçün rekursiyadan istifadə etməliyik, yəni. özündən bir prosedur çağırır. Məsələn, dəyər ağacının işlənməsi belə görünə bilər:

Bununla universal kolleksiyalara ilk girişimiz yekunlaşır.

Növbəti məqalədə proqram kodundan lüğət elementinə daxil olmağı asanlaşdırmaq üçün tərtibatçının hansı mühüm mexanizmdən istifadə edə biləcəyinə baxacağıq.

Bu bölmədə biz 1C dilinin adlanan yeni məlumat növü ilə tanış olacağıq Dəyər Siyahısı.

Dəyərlərin siyahısı massivdir, lakin daha çox funksiyaya malikdir. Əgər belədirsə, o, həm də məlumat toplusudur və ona bir sıra nömrələr qoya bilərsiniz:

// dəyərlər siyahısını yaratdı

List.Add(23);

İndiyə qədər hər şey seriala çox bənzəyir, elə deyilmi? Amma davam edək. İndi bu nömrələri istifadəçiyə göstərmək üçün yazırıq:

// Siyahının hər bir elementi üzrə dövrələmə Siyahıdan Hər Element üçün Döngə Hesabatı(Item.Value);

// EndCycle elementinin dəyərini göstərin;

Və burada ilk fərq var. Adi massivin elementləri ədədlərin özləridir. Və elementin cari dəyərinə giriş Siyahı variantla alırıq Məna, konstruksiyadan istifadə etməklə Element. Məna.

Bəzi əlavə xüsusiyyətləri nəzərdən keçirin Dəyərlər.

Çeşidləyə bilər

Məsələn, dəyərlər siyahısını asanlıqla çeşidləyə bilərik. Siyahı özü bunu edə bilər:

List.SortByValue(SortingDirection.Asc); Adi massiv vəziyyətində biz çeşidləmə alqoritmlərindən birini (məsələn, “baloncuk”) həyata keçirməli olardıq.

Axtara bilir

Dəyərlərin siyahısı öz elementlərini axtara bilir. Tutaq ki, istifadəçinin daxil etdiyi nömrənin siyahımızda olub-olmadığını öyrənmək istəyirik:

Nömrəni daxil edin(Nömrə); // istifadəçidən nömrə daxil etdi FoundItem = List. FindByValue(Nömrə);

FoundItem = Müəyyən edilməmişsə OpenValue("Nömrə " + Nömrə + " siyahıda tapılmadı!"); Əks halda

OpenValue("Nömrə " + Nömrə + " siyahıdadır. Budur:" + FoundItem.Value);

EndIf; Dəyərlərin Siyahısı

Daxil etməyi və silməyi dəstəkləyir

Massiv kimi dəyərlər siyahısı elementlərin daxil edilməsini və çıxarılmasını dəstəkləyir:

Siyahı. Daxil et(0, 1000);

// siyahının ən əvvəlinə min daxil edin List.Delete(O); // və onu dərhal Siyahıdan çıxarın. Insert(List.Quantity(), 13);

// siyahının sonuna 13 daxil et Report(List[List.Count() - 1]);

// siyahının sonuncu elementini göstərin (13)

Kvadrat mötərizələri dəstəkləyir

Artıq başa düşdüyünüz kimi, siyahının elementlərinin nömrələnməsi də sıfırdan başlayır və kvadrat mötərizələrdən istifadə edərək istənilən elementə indeksi ilə müraciət edə bilərik:

Xəbərdarlıq(Siyahı.Dəyər); // siyahının ikinci elementini çıxardıq Beləliklə, siyahının bütün elementlərini bu şəkildə keçə bilərik:

A = 0 üçün List.Quantity() üzrə - 1 Döngü Hesabatı(Siyahı[A].Dəyər);

EndCycle;

Kopya yaratmağı bacarır

Dəyərlərin siyahısı sadəcə əla fürsətə malikdir - öz nüsxəsini yarada bilər:

ListCopy = List.Copy();

// siyahının surətini çıxardıq // indi Siyahının Surətini təhlükəsiz şəkildə dəyişə bilərik // orijinal siyahı isə Siyahının Surətini dəyişməyəcək. Dəyər = 123456;

Bir sıraya çevrilə bilər

Və nəhayət, istənilən vaxt siyahının bütün elementlərini asanlıqla massivdə boşalda bilərsiniz:

ArrayNumbers = Siyahı. UnloadValues();

// massivdə boşaldılır

A = 0 üçün ArrayNumbers.Quantity() ilə - 1 Döngü

Hesabat(ArrayNumbers[A]); // müəyyən etməyə ehtiyac yoxdur // Dəyər seçimi

EndCycle;

Bu bölmənin materialını işləmək və birləşdirmək üçün aşağıdakı tapşırığı yerinə yetirmək tövsiyə olunur.

İstifadəçidən 5 rəqəmi daxil etmək, onların ən böyüyünü və ən kiçiyini tapmaq və istifadəçiyə göstərmək lazımdır. Həll dəyərlər siyahısından istifadə etməlidir.

Həll

Siyahı = Dəyərlərin Yeni Siyahısı;

// A = 1-ə 5 Döngə Sayısı = 0 üçün dəyərlər siyahısı yaratdı;

Nömrəni daxil edin(Nömrə); // istifadəçi siyahısından nömrə daxil edin.Əlavə(Number); // və onu EndCycle siyahısına əlavə edin; // və beləliklə 5 dəfə

// nömrələrin siyahısını çeşidləyin

Siyahı. Dəyər üzrə Sort(Sorting Direction. Asc);

// çeşidləndikdən sonra siyahının birinci elementi // ən kiçik element, sonuncu element isə ən böyük OpenValue("Ən kiçik element" + List +

", və ən böyüyü " + List[List.Count() - 1]);