Βρείτε μια τιμή σε έναν πολυδιάστατο πίνακα 1c. Λειτουργίες για εργασία με πίνακες

Ένας πίνακας 1C είναι ένα απλό σύνολο τιμών. Μπορείτε να προσθέσετε τιμές διαφορετικών τύπων σε έναν πίνακα 1C. Μετά την προσθήκη, η παρουσία τιμών στον πίνακα 1C μπορεί να ελεγχθεί χρησιμοποιώντας την ενσωματωμένη αναζήτηση.

Συχνά χρησιμοποιείται ο πίνακας 1C:
Α) Για επιλογές
Β) Για να αποθηκεύσετε μια λίστα τιμών για να τη χρησιμοποιήσετε περαιτέρω, για παράδειγμα, περάστε την ως παράμετρο σε μια συνάρτηση/διαδικασία.

Εργασία με συστοιχίες 1C

Ας δημιουργήσουμε έναν πίνακα 1C με 2 τιμές:
Array = New Array(); //πίνακας χωρίς σταθερό αριθμό τιμών

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

// κύκλος σε κάθε τιμή του πίνακα 1C, ανεξάρτητα από το πόσες είναι

Αναφορά(Τιμή);
EndCycle;

Ας δημιουργήσουμε έναν πίνακα 1C με 10 τιμές:
Array = New Array(10); //πίνακας με σταθερό αριθμό τιμών
RNG = NewRandomNumberGenerator(); //θα συμπληρώσουμε με τυχαίους αριθμούς

//ο δείκτης του πίνακα ξεκινά από το μηδέν, όχι από ένα
//10 τεμάχια είναι από 0 έως 9
Για Sch = 0 έως 9 Κύκλος
//πρόσβαση στο arrayArrayName[Index]
Array[RNG] = RNG.RandomNumber(0, 1000); // τυχαίος αριθμόςαπό 0 έως 1000
EndCycle;

//βρόχος μέσα από κάθε τιμή πίνακα, ανεξάρτητα από το πόσες είναι
Για κάθε τιμή από τον κύκλο πίνακα
Αναφορά(Τιμή);
EndCycle;

//σημείωση - υπάρχουν 10 τιμές πίνακα, αυτό σημαίνει ότι υπάρχουν 10 από αυτές από προεπιλογή και κάθε τιμή είναι UNDEFINED μέχρι να ορίσουμε μια άλλη
//αυτό δεν σημαίνει ότι δεν μπορούμε να προσθέσουμε άλλη τιμή, 11e, χρησιμοποιώντας ArrayName.Add();

Πολυδιάστατος πίνακας

Ας δημιουργήσουμε έναν πολυδιάστατο πίνακα 1C 2x2. Ένας πολυδιάστατος πίνακας 1C, που σημαίνει ότι κάθε κελί του πίνακα 1C δεν περιέχει μια τιμή, αλλά και έναν πίνακα 1C.

Ένας πολυδιάστατος πίνακας 1C δεν χρειάζεται να καθοριστεί. Ας φτιάξουμε έναν πολυδιάστατο πίνακα 1C 2x2 χωρίς να καθορίσουμε έναν σταθερό αριθμό τιμών:

Δημιουργία συστοιχίας 1C από την αρχή

Η απόκτηση δεδομένων είναι μια διαδικασία που απαιτεί χρόνο και πόρους. Επομένως, εάν πρέπει να εργαστείτε με τα ληφθέντα δεδομένα περισσότερες από μία φορές, είναι λογικό να τα λάβετε μία φορά και να τα αποθηκεύσετε σε μια συστοιχία 1C για να εργαστείτε περαιτέρω με τα δεδομένα που έχετε ήδη λάβει και αποθηκεύσει.

Για παράδειγμα, η γραμμή έκδοσης του προγράμματος μοιάζει με αυτό: "11.0.9.5" - τέσσερις αριθμοί που χωρίζονται με τελείες. Μπορούμε να μεταφράσουμε την έκδοση σε μορφή "υπολογιστή" - έναν πίνακα τεσσάρων αριθμητικών τιμών. Στη συνέχεια, μπορούμε να συγκρίνουμε περαιτέρω τις εκδόσεις μεταξύ τους:

Λήψη έτοιμου πίνακα 1C με δεδομένα

Ένας πίνακας 1C μπορεί να ληφθεί από μια λίστα τιμών χρησιμοποιώντας τη μέθοδο spList.UnloadValues() και από έναν πίνακα τιμών χρησιμοποιώντας τη μέθοδο tableTable.UnloadColumn().

Στο παρακάτω παράδειγμα, κάνουμε ένα ερώτημα - επιλέγουμε όλους τους συνδέσμους εγγράφων από τη βάση δεδομένων.

  • RequestResult = Request.Execute() //εκτελεί το αίτημα
  • tzResult = Αποτέλεσμα ερωτήματος Upload() //μεταφορτώνει το αποτέλεσμα στον πίνακα τιμών
  • mArray of Links = tzResult.UnloadColumn("ColumnName") //ξεφορτώνει μια στήλη πίνακα σε έναν πίνακα

Λήψη πίνακα 1C από άλλα αντικείμενα και χρήση του ως επιλογή σε ένα αίτημα

Όταν μια λίστα εγγράφων (ή ένας πίνακας τιμών) βρίσκεται στη φόρμα, ο χρήστης μπορεί να επιλέξει μία γραμμή με τον κέρσορα. Μπορείτε επίσης να επιτρέψετε την ταυτόχρονη επιλογή πολλών γραμμών. Για να επιλέξετε πολλές γραμμές (αν η φόρμα δεν το επιτρέπει), πρέπει να κρατήσετε πατημένο το πλήκτρο CTRL ή SHIFT.

Προσθέστε έναν πίνακα τιμών στη φόρμα πελάτη και επιλέξτε DocumentList.DocumentName ως τύπο. Στις ιδιότητες του, επιλέξτε τη λειτουργία επιλογής – πολλαπλή.

Μπορούμε να λάβουμε μέσω προγραμματισμού τη λίστα με τις επιλεγμένες συμβολοσειρές:

Εάν χρησιμοποιείτε ελεγχόμενη μορφή, τότε πρέπει πρώτα να προσθέσετε ένα χαρακτηριστικό φόρμας με τον τύπο DynamicList και στις ιδιότητές του να επιλέξετε τον κύριο πίνακα - το επιθυμητό έγγραφο. Σύρετε τα στηρίγματα στη φόρμα. Στις ιδιότητες του στοιχείου φόρμας (!), επιλέξτε επίσης – λειτουργία επιλογής – πολλαπλά (ρυθμίστε με αυτόν τον τρόπο από προεπιλογή).

Η πρόσβαση στον πίνακα 1C των επιλεγμένων συμβολοσειρών θα μοιάζει με:
Elements.FormAttributeName. Επιλεγμένες σειρές

Ένας πίνακας στο 1C είναι ένα σύνολο ορισμένων τιμών. Οι τιμές σε έναν πίνακα μπορούν να είναι διάφορα είδη.

Ο πίνακας μπορεί να ληφθεί εκτελώντας διάφορες συναρτήσεις, για παράδειγμα, UnloadColumn()πίνακες τιμών? μπορείτε να λάβετε τις επιλεγμένες σειρές ως πίνακα δυναμική λίστακαι τα λοιπά. Μπορείτε επίσης να δημιουργήσετε έναν πίνακα χειροκίνητα.

Δημιουργία πίνακα

1. Πώς να δημιουργήσετε έναν πίνακα του απαιτούμενου μεγέθους

pArray = νέος πίνακας(4) ; //δημιούργησε έναν πίνακα 4 στοιχείων

PMarray[ 0 ] = "Εμείς" ;
pArray[ 1 ] = "δημιουργήθηκε" ;
pArray[ 2 ] = "νέο" ;
pArray[ 3 ] = "πίνακας" ;

2. Πώς να δημιουργήσετε έναν κενό πίνακα και να προσθέσετε στοιχεία σε αυτόν

pArray = νέος πίνακας; //δημιούργησε έναν κενό πίνακα

//Εισαγάγετε τις τιμές των στοιχείων του πίνακα

PMassiv. Add("Εμείς");


3. Πώς να δημιουργήσετε έναν πολυδιάστατο πίνακα.

Ας εξετάσουμε αυτό το ζήτημα χρησιμοποιώντας το παράδειγμα ενός δισδιάστατου πίνακα, καθώς πίνακες μεγάλων διαστάσεων χρησιμοποιούνται πολύ λιγότερο συχνά και ο μηχανισμός λειτουργίας τους δεν διαφέρει από έναν δισδιάστατο.

pArray = νέος πίνακας (4, 2); //δημιούργησε έναν πίνακα 4x2

//Εισαγάγετε τις τιμές των στοιχείων του πίνακα, αριθμώντας κάθε λέξη

PMarray[ 0] [0] = "1."
pArray[ 0 ] [ 1 ] = "Εμείς" ;
pArray[ 1 ] [ 0 ] = "2."
pArray[ 1 ] [ 1 ] = "δημιουργήθηκε" ;
pArray[ 2 ] [ 0 ] = "3."
pArray[ 2 ] [ 1 ] = "πολυδιάστατο" ;
pArray[ 3 ] [ 0 ] = "4."
pArray[ 3 ] [ 1 ] = "πίνακας" ;

4. Πώς να δημιουργήσετε έναν σταθερό πίνακα

Ένας σταθερός πίνακας διαφέρει από έναν κανονικό πίνακα στο ότι δεν μπορεί να τροποποιηθεί. Δεν μπορείτε να προσθέσετε, να διαγράψετε ή να αλλάξετε τις τιμές των στοιχείων ενός τέτοιου πίνακα.

Ένας σταθερός πίνακας μπορεί να ληφθεί από έναν κανονικό:

pArray = νέος πίνακας;

PMassiv. Add("Εμείς");
συστοιχία. Add("δημιουργήθηκε" );
συστοιχία. Προσθήκη("νέο") ;
συστοιχία. Add("array" );

Farray = new FixedArray(pArray) ; // δημιούργησε έναν σταθερό πίνακα

Λειτουργίες για εργασία με πίνακες

Θα εξετάσουμε τη λειτουργία των συναρτήσεων χρησιμοποιώντας το παράδειγμα ενός μονοδιάστατου πίνακα συστοιχία, που δημιουργήθηκε παραπάνω και αποτελείται από 4 στοιχεία:

  1. "δημιούργησε"
  2. "νέος"
  3. "παράταξη".
Λειτουργία VBorder()

Λαμβάνει τον υψηλότερο δείκτη ενός στοιχείου πίνακα. Είναι πάντα ένα λιγότερο από τον αριθμό των στοιχείων του πίνακα.

Ευρετήριο = pArray. BBorder() // 3;

Συνάρτηση Insert().

Εισάγει μια τιμή στο στοιχείο πίνακα στο καθορισμένο ευρετήριο. Μεταγενέστερα στοιχείαο πίνακας μετατοπίζεται

συστοιχία. Insert(3, "νέα τιμή") //Τώρα ο πίνακας αποτελείται από 5 στοιχεία

Συνάρτηση Προσθήκη()

Δημιουργεί νέο στοιχείοστο τέλος του πίνακα και εισάγει την καθορισμένη τιμή εκεί

συστοιχία. Προσθήκη (".") // πρόσθεσε μια τελεία στο πέμπτο στοιχείο του πίνακα.

Ποσότητα συνάρτησης()

Επιστρέφει τον αριθμό των στοιχείων πίνακα.

συστοιχία. Ποσότητα() ; // 4

Συνάρτηση Find().

Αναζητά έναν πίνακα για ένα δεδομένο στοιχείο. Εάν βρεθεί, επιστρέφει το ευρετήριό του. Εάν δεν βρεθεί, επιστρέφει Απροσδιόριστος.

Ευρετήριο = pArray. Find("array" );
// 3 Ευρετήριο = pArray. Εύρημα("γραμμή που δεν υπήρχε"

) ;

// Απροσδιόριστο

Συνάρτηση Clear().

Καταργεί όλες τις τιμές από τον πίνακα.

συστοιχία. Clear() ;

Συνάρτηση Get().
Παίρνει την τιμή ενός πίνακα ανά ευρετήριο. Το ίδιο πρόβλημα μπορεί να λυθεί χρησιμοποιώντας .

Τιμή = pArray. Get(3) // "array"

Τιμή= pArray[ 3 ];

// "πίνακας"

Συνάρτηση Delete().

Αφαιρεί ένα στοιχείο πίνακα κατά ευρετήριο

συστοιχία. Διαγραφή(3) ;
Σύνολο συναρτήσεων()

Ορίζει την τιμή ενός στοιχείου πίνακα κατά ευρετήριο. Λειτουργεί με τον ίδιο τρόπο.

συστοιχία. Set(3, "array!");

pArray[ 3 ] = "πίνακας!" ;
Πώς να διασχίσετε έναν πίνακα
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:

Για κάθε Στοιχείο πίνακα από το βρόχο pArray

Για Index= 0 από pArray. Βρόχος BBorder().
Αναφορά(pArray[Index]);
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:

Πώς να διασχίσετε έναν πολυδιάστατο πίνακα

Ένας πολυδιάστατος πίνακας διασχίζεται χρησιμοποιώντας τους ίδιους βρόχους (βλ. παραπάνω), αλλά ένας βρόχος πρέπει να είναι ένθετος μέσα σε έναν άλλο.

Για κάθε Στοιχείο 1 του Κύκλου mArray
Για κάθε Στοιχείο2 του Κύκλου Στοιχείου1
Έκθεση(Στοιχείο1) ;
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:

Ή χρησιμοποιώντας ευρετήρια.

mArray= new Array(3, 4);

Για Index1 = 0 από mArray. Βρόχος BBorder().
Για το Index2 by mArray[ Index1 ] . Βρόχος BBorder().
Αναφορά(mArray[ Index1 ] [ Index2 ] );
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:

Ταξινόμηση πίνακα

Για να ταξινομήσουμε τον πίνακα, χρειαζόμαστε ένα βοηθητικό αντικείμενο τύπου ListValues.

ValueList = νέα ValueList; // Δημιουργία λίστας τιμών
ListValue. LoadValues(pArray) ; // φόρτωση τιμών από τον πίνακα στη λίστα
ListValue. SortByValue(SortDirection.Age) ; //ταξινόμηση σε αύξουσα σειρά
ListValue. SortByValue(SortDirection.Descending) ; //ή φθίνουσα
pArray = ListValue. Unload() ; // απορρίψτε τις ταξινομημένες τιμές πίσω στον πίνακα

Συγκρίνοντας δύο πίνακες

Πριν προχωρήσουμε στην περιγραφή της συνάρτησης σύγκρισης, ας συμφωνήσουμε ότι οι πίνακες θεωρούνται πανομοιότυποι εάν έχουν τον ίδιο αριθμό στοιχείων και τα αντίστοιχα στοιχεία των πινάκων είναι ίσα. Στη συνέχεια, για σύγκριση, μπορείτε να χρησιμοποιήσετε την ακόλουθη συνάρτηση (παρεμπιπτόντως, μια τέτοια λειτουργία υπάρχει ήδη σε ορισμένες τυπικές διαμορφώσεις):

Συνάρτηση CompareArrays (Array1, Array2)

Εάν ο πίνακας 1. Ποσότητα()<>Πίνακας 2. Quantity() Στη συνέχεια
επιστροφή FALSE? // Οι πίνακες δεν είναι ίσοι, δεν έχει νόημα η σύγκριση στοιχείων.
EndIf ;

Για Index= 0 από Array1. Βρόχος BBorder().
Αν Πίνακας1[Ευρετήριο]<>Array2[Index] Στη συνέχεια
Return False ; //αυτά τα στοιχεία δεν είναι ίσα, που σημαίνει ότι οι πίνακες δεν είναι ίσοι
EndIf ;
Μπορείτε να επαναλάβετε όλα τα στοιχεία ενός πίνακα χωρίς να καθορίσετε ένα ευρετήριο:

Return True ; // Εάν φτάσατε εδώ, τότε οι πίνακες είναι ίσοι
EndFunction

Πρέπει να περάσετε 2 πίνακες για να συγκρίνετε με τη συνάρτηση. Η συνάρτηση επιστρέφει τιμή Αληθής, αν οι πίνακες είναι ίσοι, και Ψέμα, αν όχι ίσο.

Η έννοια της «συστοιχίας» έχει χρησιμοποιηθεί από καιρό στον προγραμματισμό και, τις περισσότερες φορές, νοείται ως μια συγκεκριμένη δομή στη μνήμη που αποτελείται από μια ακολουθία στοιχείων. Ένας πίνακας σε 1C είναι η απλούστερη από τις καθολικές συλλογές τιμών. Εκτός από τον πίνακα, οι καθολικές συλλογές περιλαμβάνουν:

  1. Λίστα τιμών (σε αντίθεση με έναν πίνακα, οι τιμές από τη λίστα έχουν μια αναπαράσταση, εφαρμόζεται η δυνατότητα ταξινόμησης και εμφάνισης της συλλογής σε μια διεπαφή).
  2. Ένας πίνακας τιμών είναι μια συλλογή που έχει στήλες για μια εκτεταμένη περιγραφή της τιμής που μπορεί να ληφθεί με την εκτέλεση ενός ερωτήματος.
  3. Ένα δέντρο είναι πολύ παρόμοιο με έναν πίνακα, με μια δομή υποταγής.
  4. Δομή - δυναμικό σύνολοονόματα και τιμές μεταβλητών.
  5. Αντιστοίχιση - παρόμοια με μια δομή, μόνο οι μεταβλητές αντιστοιχίζονται όχι σε αναπαραστάσεις συμβολοσειρών, αλλά μεταξύ τους.

Μέθοδοι Πίνακας

Δημιουργία λογισμικούΜια παρουσία πίνακα δημιουργείται χρησιμοποιώντας τον τελεστή New() (Εικ. 1).

Όπως φαίνεται από το παραπάνω παράδειγμα, οι πίνακες μπορούν να δημιουργηθούν είτε με σταθερό αριθμό στοιχείων είτε χωρίς αυτόν τον περιορισμό.

Πριν ξεκινήσουμε να συζητάμε τις μεθόδους εργασίας με έναν πίνακα, ας ορίσουμε δύο έννοιες:

  • Ευρετήριο στοιχείου – μπορεί να αναπαρασταθεί ως σειριακός αριθμός μιας μόνο τιμής.
  • Αριθμός στοιχείων – ο αριθμός των στοιχείων στη συλλογή είναι διαθέσιμος χρησιμοποιώντας τη μέθοδο Quantity().

Είναι σημαντικό να γνωρίζετε: στο 1C, η μέτρηση του αριθμού των τιμών οποιασδήποτε συλλογής ξεκινά από το 1 και η διανομή των ευρετηρίων από το 0, δηλαδή, το πρώτο στοιχείο στον πίνακα έχει δείκτη 0. Έτσι, η διέλευση μιας συλλογής χρησιμοποιώντας έναν βρόχο με έναν επαναλήπτη θα πρέπει να ξεκινά από το 0 και να τελειώνει με τον αριθμό των στοιχείων μείον 1, διαφορετικά το σύστημα θα σας ειδοποιήσει για την εμφάνιση μιας εξαίρεσης χρησιμοποιώντας το παράθυρο (Εικ. 2).

Εικ.2

Οποιοδήποτε αντικείμενο διαμόρφωσης έχει τις δικές του μεθόδους εργασίας, ένας πίνακας δεν αποτελεί εξαίρεση, ας τα παραθέσουμε με κάποια εξήγηση:

  • InBorder() – χρησιμοποιώντας τη μέθοδο μπορείτε να λάβετε τον μέγιστο δείκτη ενός στοιχείου για έναν κενό πίνακα, η τιμή (-1) θα επιστραφεί.
  • Insert() – αυτή η μέθοδος έχει δύο παραμέτρους: δείκτη και τιμή, ο δείκτης υποδεικνύει πού να εισαγάγετε ένα νέο στοιχείο στον πίνακα, η προστιθέμενη τιμή μπορεί να είναι κενή.
  • Add() – αυτή η μέθοδος εισαγωγής μιας τιμής μπορεί να χρησιμοποιηθεί όταν η τοποθέτηση ενός στοιχείου είναι ασήμαντη με τη βοήθειά του, νέα δεδομένα θα γραφτούν στο τέλος του υπάρχοντος πίνακα.
  • Find() – εάν είναι επιτυχής, επιστρέφει το ευρετήριο της τιμής που καθορίζεται σε αγκύλες, διαφορετικά επιστρέφει "Undefined";
  • Clear() – διαγράφει τη συλλογή.
  • Get() – διαβάζει τα δεδομένα που βρίσκονται στον πίνακα στο καθορισμένο ευρετήριο, μπορεί να αντικατασταθεί με αγκύλες.
  • Delete() – διαγράφει το στοιχείο με το καθορισμένο ευρετήριο.
  • Set() – αντικαθιστά τα δεδομένα στο καθορισμένο κελί πίνακα.

Μονοδιάστατοι και πολυδιάστατοι πίνακες

Στην απλούστερη περίπτωση, ένας μονοδιάστατος πίνακας μπορεί να περιέχει τιμές διαφόρων τύπων (Εικ. 3)

Εικ.3.

Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα φαίνεται στο Σχ. 4

Εικ.4

Έτσι, λάβαμε έναν μονοδιάστατο πίνακα που αποτελείται από μια τιμή συμβολοσειράς, έναν σύνδεσμο προς ένα στοιχείο καταλόγου και μια ημερομηνία. Επιπλέον, κατά την προσθήκη στοιχείων, χρησιμοποιούσαμε δύο διαφορετικές μεθόδους Add() και Insert(, αν είχαμε χρησιμοποιήσει τη μέθοδο Add() κατά την προσθήκη μιας ημερομηνίας, το αποτέλεσμά μας θα είχε ελαφρώς διαφορετική εμφάνιση.

Στο γυμνάσιο, εισάγεται η έννοια της δισδιάστατης μήτρας. Αυτό είναι ένα σύνολο δεδομένων, κάθε στοιχείο του οποίου έχει δύο δείκτες (στην απλούστερη περίπτωση, έναν κατακόρυφο και οριζόντιο σειριακό αριθμό, είναι αυτό που απεικονίζει καλύτερα την έννοια ενός δισδιάστατου πίνακα).

Όταν δημιουργείτε μια τέτοια μήτρα, μπορείτε να καθορίσετε τον αριθμό των γραμμών και στηλών που θα χρησιμοποιηθούν.

Ας πούμε ότι βρισκόμαστε αντιμέτωποι με το καθήκον να δημιουργήσουμε έναν πίνακα με το επώνυμο, το όνομα και το πατρώνυμο δύο υπαλλήλων. Χρησιμοποιώντας τον κώδικα (Εικ. 5), δημιουργούμε έναν αντίστοιχο πίνακα με σταθερό αριθμό στηλών και γραμμών.

Εικ.5

Για να το διασχίσουμε, χρειαζόμαστε δύο βρόχους, στον πρώτο βρόχο διασχίζουμε τον πίνακα γραμμή προς γραμμή, στον δεύτερο αναλύουμε τη γραμμή σε στοιχεία. Αυτό μπορεί να γίνει είτε χρησιμοποιώντας τον κύκλο «Για κάθε .... Από" (Εικ. 6)

Εικ.6

Ή χρησιμοποιώντας έναν βρόχο με τον επαναλήπτη "For ... by" (Εικ. 7)

Εικ.7

Κατ 'αρχήν, ο αριθμός των διαστάσεων ενός συγκεκριμένου πίνακα μπορεί να είναι οποιοσδήποτε άλλος είναι ότι στην περίπτωση μεγάλου αριθμού επιπέδων λεπτομέρειας, είναι αρκετά δύσκολο να δημιουργηθεί ένα πρόγραμμα δημιουργίας για την ανάγνωση δεδομένων.

Χρησιμοποιώντας έναν πίνακα

Οι πίνακες σε 1C χρησιμοποιούνται συχνότερα για:

  1. Δημιουργία διαφόρων επιλογών που χρησιμοποιούνται κατά την εργασία με ερωτήματα και άλλες συλλογές τιμών.
  2. Διαβίβαση λιστών ως παραμέτρων μεταξύ διαδικασιών και συναρτήσεων.
  3. Ανταλλάξτε δεδομένα με εξωτερικά εξαρτήματα συνδεδεμένα χρησιμοποιώντας τεχνολογία COM.

Φυσικά, αυτό απέχει πολύ από μια πλήρη λίστα των σκοπών για τους οποίους μπορεί να χρησιμοποιηθεί το αντικείμενο "Array".

Η χρήση συστοιχιών στο 1C βοηθά στην οργάνωση των στοιχείων που χρησιμοποιούνται στην εργασία.

Αυτό είναι ένα σύνολο στοιχείων λογισμικού. Χρησιμεύει για:

  • Επιλογή τιμών.
  • Ταξινόμηση. Σε κάθε θέση στον πίνακα εκχωρείται ένα ευρετήριο. Αυτό διευκολύνει την αναζήτηση. Και μπορείτε να αναφερθείτε σε ένα αντικείμενο γράφοντας τον αριθμό του.
  • Συνδυασμός και αποθήκευση εγγραφών.
  • Διαχωρισμός ομάδων, δημιουργία υποσυμβολοσειρών.
  • Ένας πίνακας είναι ένα αντικείμενο από μόνο του. Μια μεταβλητή θα προσαρτηθεί σε αυτήν. Μπορείτε να ανατρέξετε σε μεμονωμένα μέρη του ή να το χρησιμοποιήσετε εξ ολοκλήρου σε διαδικασίες. Για παράδειγμα, μπορείτε να συνδυάσετε την ομάδα τιμών «Υπάλληλοι Τμήματος Ν» και να εισαγάγετε εκεί το όνομα και το επώνυμο των υπαλλήλων.

Ας κάνουμε μια αναλογία. Φανταστείτε μια βιβλιοθήκη. Τα βιβλία σε αυτό είναι διατεταγμένα σε διαφορετικά «κελιά». Εάν κρατάτε αρχεία, θα γνωρίζετε πού βρίσκεται κάθε αντικείμενο. Και μπορείτε να το αποκτήσετε χωρίς δυσκολία. Αν όμως βιβλία, περιοδικά και εφημερίδες σκορπίζονται χαοτικά στο τραπέζι, η αναζήτηση του σωστού θα πάρει πολύ χρόνο. Αν και αυτό δεν αντικατοπτρίζει όλες τις δυνατότητες μοναδικών συλλογών.

Δημιουργία

Η εργασία με συστοιχίες 1C ξεκινά με τη δημιουργία τους. Χρειάζεστε μια "τοποθεσία" - ένα πεδίο στο οποίο θα εισαγάγετε τον κωδικό.

  1. Ανοίξτε το "Configurator" ("Configuration").
  2. Κάντε δεξί κλικ στην «Επεξεργασία».
  3. Επιλέξτε "Προσθήκη".
  4. Εμφανίζεται το υπομενού Processing1. Επιλέξτε το. Οι πληροφορίες σχετικά με αυτό θα εμφανίζονται στην περιοχή εργασίας.
  5. Στην καρτέλα Βασικά, πληκτρολογήστε Όνομα. Ας πούμε "TestArray".
  6. Ανοίξτε την ενότητα "Φόρμες".
  7. Κάντε κλικ στο εικονίδιο του μεγεθυντικού φακού.
  8. Επιλέξτε την επιλογή «Επεξεργασία φόρμας».
  9. Κάντε κλικ στο "Τέλος".
  10. Θα ανοίξει ένα παράθυρο με τρία πλαίσια. Επάνω δεξιά, μεταβείτε στην καρτέλα "Ομάδες".
  11. Εικονίδιο συν για να προσθέσετε μια θέση.
  12. Θα εμφανιστεί το στοιχείο "Ομάδα1". Επιλέξτε το.
  13. Στο πεδίο "Όνομα", πληκτρολογήστε ένα όνομα. Για παράδειγμα, "TestValues". Αντιγράψτε το στην "Κεφαλίδα".
  14. Στη γραμμή "Δράση", κάντε κλικ στον μεγεθυντικό φακό.
  15. Στοιχείο «Δημιουργία στον πελάτη» και «ΟΚ».
  16. Εδώ είναι η ενότητα στην οποία μπορείτε να εισαγάγετε τον κωδικό.

Για να εμφανίσετε ένα ενδιάμεσο αποτέλεσμα, δημιουργήστε ένα "κουμπί". Γιατί χρειάζεται στον πίνακα - θα καταλάβετε λίγο αργότερα.

  1. Μεταβείτε στην καρτέλα "Φόρμες". Είναι κάτω.
  2. Κάντε δεξί κλικ στη "Γραμμή εντολών".
  3. "Προσθήκη - Κουμπί".
  4. Δώστε του οποιοδήποτε όνομα. Ή μπορείτε να αφήσετε την προεπιλεγμένη.
  5. Στο πεδίο "Όνομα ομάδας", κάντε κλικ στο εικονίδιο έλλειψης.
  6. Επιλέξτε "TestValues". Εάν η ομάδα ονομαζόταν διαφορετικά, θα υπάρχει διαφορετική κατηγορία.

Τώρα μπορείτε να αρχίσετε να εργάζεστε με συλλογές. Αλλά μην νομίζετε ότι στο 1C μπορείτε να αποσυνθέσετε αμέσως μια συμβολοσειρά σε έναν πίνακα. Είναι καλύτερα να ξεκινήσετε με κάτι πιο εύκολο. Αν και όλες οι συναρτήσεις είναι ένα σύνολο τελεστών που απλά πρέπει να θυμάστε.

  1. Ανοίξτε την καρτέλα "Module".
  2. Το κείμενο που έρχεται μετά από δύο κάθετες (δύο κάθετες - "//") μπορεί να διαγραφεί. Μοιάζει κάπως έτσι "//Εισαγωγή περιεχομένων χειριστή". Αυτές είναι εξηγήσεις. Είναι γραμμένα από προγραμματιστές για να μην μπερδεύονται στον κώδικα.
  3. Γράψτε το κείμενό σας μεταξύ των τελεστών «Διαδικασία» και «Τέλος διαδικασίας».
  4. Τώρα δημιουργήστε ένα σύνολο τιμών. Καταλήξτε σε μια μεταβλητή που θα την υποδηλώνει υπό όρους. Ας πούμε "FirstArray".
  5. Πρέπει να συνδέεται με ένα αντικείμενο. Για να το κάνετε αυτό, πληκτρολογήστε την εντολή "FirstArray = New Array()". Αυτή είναι μια συλλογή που μπορεί να περιέχει απεριόριστο αριθμό στοιχείων. Εάν έχετε σταθερό μέγεθος, καθορίστε το μετά την εντολή στην παρένθεση "New Array (5)". Αντίστοιχα, η δισδιάστατη συλλογή θα μοιάζει με "Νέα Συστοιχία (7, 5)". Μπορείτε να δημιουργήσετε πολυδιάστατα σύνολα.
  6. Καθώς πληκτρολογείτε, ενδέχεται να εμφανιστούν προτάσεις που προτείνουν κατάλληλους χειριστές.
  7. Οι λέξεις ποικίλλουν ως προς το χρώμα. Οι μεταβλητές έχουν ένα χρώμα, οι συναρτήσεις έχουν άλλο.
  8. Μετά από κάθε εντολή, τοποθετήστε ένα ερωτηματικό ";". Και για ευκολία, ξεκινήστε με μια νέα παράγραφο.
  9. Δεν μπορείτε να κάνετε τίποτα με ένα άδειο σετ. Ούτε οργάνωση, ούτε έξοδος, ούτε αποσύνθεση της συμβολοσειράς σε πίνακα σε 1C. Επομένως, πρέπει να εισάγουμε στοιχεία σε αυτό.
  10. Εισαγάγετε "FirstArray.Add(Value1);". Στη συνέχεια, "FirstArray.Add(Value2);" και ούτω καθεξής.
  11. Τα αντικείμενα αριθμούνται από το μηδέν. Δηλαδή, στη μεταβλητή "Τιμή1" θα εκχωρηθεί ο δείκτης "0". Μπορείτε να συμπληρώσετε τη συλλογή μόνοι σας με το "Value0" για να μην μπερδευτείτε.

Προς τι όλα αυτά; Και γιατί αυτό το μυστηριώδες «κουμπί»; Ας προσπαθήσουμε να εκτελέσουμε μια απλή λειτουργία.

  1. Κάτω από τη συλλογή, γράψτε την εντολή "Αναφορά (FirstArray);" Ο δείκτης του στοιχείου υποδεικνύεται σε αγκύλες. Δηλαδή, τη διεύθυνση του "Value0" μας.
  2. Μορφοποιήστε τη μονάδα. Αυτός είναι ένας έλεγχος για σφάλματα. Σε μεγάλα μπλοκ, μπορείτε να αφήσετε κάτι ημιτελές λόγω απροσεξίας: να μην βάλετε ερωτηματικό, να μην κλείσετε μια παρένθεση ή να γράψετε λανθασμένα μια μεταβλητή. Ο μεταγλωττιστής θα το επισημάνει αυτό.
  3. Κάντε κλικ στο κουμπί με τη μορφή "Αναπαραγωγή" (ένα τρίγωνο σε κύκλο) για να εκτελέσετε το πρόγραμμα που γράψατε.
  4. Κάντε κλικ στην «Υπηρεσία» και επιλέξτε το κουμπί σας.
  5. Κάντε κλικ σε αυτό.
  6. Εμφανίζεται το μήνυμα "Value0". Αυτό είναι το αποτέλεσμα της εκτέλεσης της συνάρτησης.

Η απλούστερη λειτουργία εμφανίζεται έτσι ώστε να κατανοήσετε πώς λειτουργούν γενικά οι πίνακες. Με αυτά μπορείτε να δημιουργήσετε σύνθετα και πολυεπίπεδα προγράμματα. Εμφάνιση αντικειμένων, ταξινόμηση, αφαίρεση επαναλήψεων, διαχωρισμός σε ένα σύνολο υποσυμβολοσειρών, συνδυασμός, διαχωρισμός, αναζήτηση πληροφοριών. Απλά πρέπει να γνωρίζετε τους χειριστές.

Λειτουργίες

Όλες οι διαθέσιμες λειτουργίες βρίσκονται στο βιβλίο αναφοράς του προγράμματος. Ας παραθέσουμε μερικά για να δείξουμε την αρχή.

Πώς να μετατρέψετε έναν πίνακα 1C σε συμβολοσειρά:

TestArray = New Array(4);
TestArray = Αυτό;
TestArray = Έγινε;
TestArray = Άρα;
RowTest = ValueInRowInt(TestArray);
Αναφορά (StringTest);

Βάλτε το στο "Button" και λάβετε τη φράση. Αυτό μπορεί να είναι μέρος μιας μεγαλύτερης ενότητας - σε αυτήν την περίπτωση δεν χρειάζεται η δήλωση Report.

Για να αποσυντεθεί μια συμβολοσειρά σε μια σειρά από υποσυμβολοσειρές στο 1C, χρειάζεστε ένα διαχωριστικό. Σημάδι υπό όρους μετά το οποίο θα χωριστεί το κείμενο. Ας πούμε ότι υπάρχει η λέξη «Πρωτόκολλο». Και θα βάλουμε το διαχωριστικό «Ο». Εισαγάγετε την εντολή "TestArray = ExpandStringInArray(Πρωτόκολλο, "O") ;" Θα λάβετε "Pr", "T", "K" και "L" ξεχωριστά. Το διαχωριστικό έχει διαγραφεί. Και η λέξη χωρίζεται σε πολλές υποχορδές.

Δείτε πώς να το κάνετε πράξη. Έχετε έναν πίνακα με τα πλήρη ονόματα των υπαλλήλων. Και πρέπει τα πεδία «Επώνυμο», «Όνομα» και «Πατρώνυμο» να συμπληρώνονται αυτόματα κατά την επιλογή μιας θέσης. Για να γίνει αυτό, το πλήρες όνομα πρέπει να χωριστεί σε τρία στοιχεία. Χρησιμοποιήστε το "χώρο" ως διαχωριστικό.

Συνήθως, για αυτό χρησιμοποιείται μια σύνθετη ενότητα: ένας βρόχος με μεγάλο αριθμό δηλώσεων. Τα κυκλικά μπλοκ με μια συνθήκη κατασκευάζονται σύμφωνα με την αρχή "Αν (συνθήκη), τότε (δράση1), διαφορετικά (δράση2)". Πρώτα, το πρόγραμμα ελέγχει εάν η συνθήκη είναι αληθής. Εάν ναι, τότε εκτελεί την πρώτη λειτουργία. Αν όχι, το δεύτερο.

Ο βρόχος θα ελέγξει κάθε χαρακτήρα της συμβολοσειράς. Εάν δεν υπάρχει διαχωριστικό εκεί, συνεχίζεται περαιτέρω. Εάν υπάρχει οριοθέτης εκεί, προσθέτει την τιμή στο σύνολο των υποσυμβολοσειρών. Εκεί μπορούν να χρησιμοποιηθούν άλλοι τελεστές: για παράδειγμα, το "AbcrLP" είναι μια συντομογραφία ορισμένων χαρακτήρων δεξιά και αριστερά της γραμμής.

Κάθε λειτουργική μονάδα πρέπει να είναι «ολοκληρωμένη» έτσι ώστε το βοηθητικό πρόγραμμα να σταματήσει να εκτελεί τη διαδικασία. Σε έναν βρόχο με "If" αυτή η πρόταση είναι "EndIf". Σε έναν κύκλο χωρίς προϋποθέσεις - "Τέλος κύκλου". Κάθε λειτουργία πρέπει να ολοκληρωθεί χωριστά.

Αναζήτηση και ταξινόμηση

Οι συλλογές μπορεί να περιέχουν τεράστιο όγκο δεδομένων. Πρέπει να μάθουμε να τα αναζητούμε και να τα ταξινομούμε.

Για να εκτελέσετε μια αναζήτηση σε έναν πίνακα στο 1C, χρησιμοποιήστε τον τελεστή "Εύρεση". Μπορείτε επίσης να βρείτε την επιθυμητή τιμή οπτικά. Αλλά αν υπάρχουν εκατοντάδες στοιχεία, είναι καλύτερο να δημιουργήσετε μια πρόσθετη ενότητα και να εκτελέσετε μια υπορουτίνα. Ας το δείξουμε χρησιμοποιώντας μια απλή συνάρτηση ως παράδειγμα. Αλλά αυτό είναι κατάλληλο για οποιοδήποτε μπλοκ.

ArrayTest = Νέος πίνακας (3);
ArrayTest = "Τηλέφωνο";
ArrayTest = "Laptop";
ArrayTest = "Υπολογιστής";
Index = ArrayTest.Find("Τηλέφωνο");
Αν Ευρετήριο ‹› Undefined Τότε
Report("Η αναζήτηση ολοκληρώθηκε" + ArrayTest[Index]);

Και μην ξεχάσετε να βάλετε την «τελική δήλωση».

Η συλλογή παρέχεται ως παράδειγμα. Δημιουργήσαμε ένα σύνολο τριών τιμών. Και κάναμε έναν σύντομο κύκλο. Εάν το βοηθητικό πρόγραμμα δεν βρει αντίστοιχο στοιχείο, θα εμφανίσει το μήνυμα "Undefined". Αν το βρει θα δείξει το αποτέλεσμα.

Η ταξινόμηση μιας συστοιχίας 1C είναι απλά αναντικατάστατη όταν εργάζεστε με μεγάλες ποσότητες δεδομένων. Πρέπει να τα πλοηγήσεις με κάποιο τρόπο. Είναι καλύτερα να τα τοποθετήσετε με μια ορισμένη σειρά. Ας υποθέσουμε ότι έχετε μια συλλογή που ονομάζεται "YourArray". Για να το βάλω σε τάξη

TestList = New ValueList;
TestList.LoadValues(YourArray);
TestList.SortByValue(SortDirection.Age);
YourArray = TestList.UnloadValues();

Αντί για "Αύξουσα" μπορείτε να βάλετε "Κατοδική". Το αποτέλεσμα μπορεί επίσης να μεταφορτωθεί σε έναν πίνακα τιμών:

TestTable = NewValueTable;
TestTable.Columns.Add("Στήλη");
TestTable.LoadColumn(YourArray, "Στήλη");
TestTable.Sort("Στήλη Φθίνουσα");
YourArray = TestTable.UnloadColumn("Στήλη")

Υπάρχουν επίσης πολύπλοκες μέθοδοι ταξινόμησης: "Bubble", "Quick", "Shaker", "Recursion". Έχουν πολυεπίπεδους και μεγάλους αλγόριθμους.

Πίνακες και λίστες

Οι πληροφορίες μπορούν να σταλούν μεταξύ διαφορετικών τύπωνσυλλογές. Για να μεταφέρετε έναν πίνακα σε έναν πίνακα τιμών στο 1C:

ArrayTelephone = Νέα Συστοιχία;
ArrayPhone.Add("Smartphone");
ArrayPhone.Add("Tablet");
ArrayPhone.Add("Τηλέφωνο");
TableTest = New ValueTable;
TableTest.Columns.Add("Κινητά τηλέφωνα");
TableTest.Add();
TableTest.Add();
TableTest.Add();
TableTest.LoadColumn(ArrayTelephone, "Mobile phones");
Για κάθε σειρά από τον κύκλο δοκιμής πίνακα
Αναφορά(String.Mobile);

Μην ξεχάσετε να προσθέσετε μια δήλωση τερματισμού βρόχου στο τέλος.

Η μετατροπή ενός πίνακα σε μια λίστα τιμών στο 1C είναι αρκετά απλή. Απλώς χρειάζεται να ανεβάσετε δεδομένα από τη μια συλλογή στην άλλη.

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

Στον προγραμματισμό, ένα πρόβλημα μπορεί να λυθεί με διαφορετικούς τρόπους. Και το 1C δεν αποτελεί εξαίρεση. Γραμμικοί αλγόριθμοι, βρόχοι, βρόχοι υπό όρους, βρόχοι μετρητών. Υπάρχουν πολλές επιλογές. Για να πλοηγηθείτε στον πίνακα, χρειάζεστε κάποιες δεξιότητες 1C.

Τι αφορά αυτό το άρθρο;

Αυτό το άρθρο συνεχίζει τη σειρά άρθρων «Πρώτα βήματα στην ανάπτυξη 1C». Καλύπτει αρχές εργασίας με καθολικές συλλογές. Αφού διαβάσετε το άρθρο, θα μάθετε:

  • Τι είναι οι καθολικές συλλογές και πότε και σε ποιες περιπτώσεις πρέπει να χρησιμοποιούνται;
  • Τι κοινό έχουν όλες οι καθολικές συλλογές; Ποιες τεχνικές μπορείτε να χρησιμοποιήσετε για να δουλέψετε με όλες;
  • Τι είναι ένας πίνακας, πώς και πότε να τον χρησιμοποιήσετε; Τι μεθόδους έχει;
  • Γιατί να χρησιμοποιήσετε μια δομή; Σε τι διαφέρει από έναν πίνακα;
  • Πότε πρέπει να χρησιμοποιήσετε μια λίστα τιμών; Πώς να το εμφανίσετε στη φόρμα;
  • Συμμόρφωση – τι είναι και πότε να το χρησιμοποιήσετε; Ποια είναι τα πλεονεκτήματα όσον αφορά τη δομή;
  • Σε τι χρησιμεύει ο πίνακας τιμών; Πώς να περιγράψετε τη δομή του; Πώς να προσθέσετε/αφαιρέσετε γραμμές; Πώς να το εμφανίσετε στη φόρμα;
  • Δέντρο των αξιών - σε τι χρησιμοποιείται; Πώς να συμπληρώσετε και να εμφανίσετε τη φόρμα; Πώς να εργαστείτε με αυτό;

Εφαρμογή

Το άρθρο εξετάζει την πλατφόρμα 1C:Enterprise 8.3 της τρέχουσας έκδοσης.

Πώς να εργαστείτε με καθολικές συλλογές σε 1C

Μια συλλογή τιμών είναι ένα δοχείο που μπορεί συνήθως να περιέχει οποιοδήποτε αριθμό στοιχείων. Ωστόσο, συχνά δεν υπάρχουν αυστηροί περιορισμοί στον τύπο δεδομένων.

Μπορείτε να προσθέσετε τιμές σε μια γενική συλλογή. Όλες οι τιμές στη συλλογή μπορούν να διασχιστούν. Αυτές οι συλλογές χρησιμοποιούνται κυρίως για κάποιο είδος επεξεργασίας σε αλγόριθμους. Εκείνοι. Αυτές είναι μερικές δυναμικές δομές που υπάρχουν ενώ εκτελείται ο αλγόριθμος.

Είναι σημαντικό να κατανοήσουμε ότι οι συλλογές δεν αποθηκεύονται σε μια βάση δεδομένων (δεν μιλάμε για τον τύπο δεδομένων Value Store, ο οποίος μπορεί να αποθηκεύσει σχεδόν κάθε τύπο δεδομένων).

Υπάρχουν διάφορα είδηκαθολικές συλλογές: πίνακας, δομή, αντιστοίχιση, σταθερός πίνακας, πίνακας τιμών, Πινακοποιημένο μέροςκαι τα λοιπά. Όμως όλες οι συλλογές έχουν παρόμοια συμπεριφορά.

Μια συλλογή μπορεί να δημιουργηθεί ως αποτέλεσμα της λειτουργίας μιας συνάρτησης (η συνάρτηση επιστρέφει μια καθολική συλλογή ως τιμή).

Μπορείτε να αποκτήσετε μια νέα συλλογή με μη αυτόματο τρόπο καλώντας τον κατασκευαστή και δημιουργώντας μια παρουσία της κλάσης.

Για παράδειγμα: OurArray = Νέος Πίνακας;

Οι κατασκευαστές για πολλές γενικές συλλογές παραμετροποιούνται.

Έτσι, στον κατασκευαστή για Μπορείτε να καθορίσετε τον αριθμό των μελών στις αντίστοιχες διαστάσεις. Εκείνοι. μπορείτε να δηλώσετε αμέσως πολυδιάστατο .

Η αντίστοιχη περιγραφή του κατασκευαστή βρίσκεται στον βοηθό σύνταξης.

Έτσι, χρησιμοποιώντας τις παραμέτρους του κατασκευαστή, μπορείτε να ορίσετε αμέσως την επιθυμητή συμπεριφορά ενός δεδομένου αντικειμένου.

Αλλά οι παράμετροι είναι προαιρετικές, ο προγραμματιστής δεν μπορεί να τις ορίσει και να καθορίσει περαιτέρω τη συμπεριφορά του Array όπως κρίνει κατάλληλο.

Σχεδόν κάθε καθολική συλλογή μπορεί να δημιουργηθεί χρησιμοποιώντας έναν κατασκευαστή (η εξαίρεση είναι τα μέρη πίνακα, τα οποία λειτουργούν ως αντικείμενα διαμόρφωσης).

Για καθολικές συλλογές υπάρχουν τέτοιες γενικές έννοιες, όπως ευρετήριο και αριθμός. Κάθε στοιχείο της συλλογής έχει ένα ευρετήριο. Σε αυτήν την περίπτωση, ο δείκτης ξεκινά από το μηδέν.

Για πρόσβαση σε ένα στοιχείο OurArray, μπορείτε να χρησιμοποιήσετε την πρόσβαση ευρετηρίου για αυτό, το ευρετήριο υποδεικνύεται σε αγκύλες.

Για παράδειγμα, OurArray. Λάβετε υπόψη ότι σε αυτήν την περίπτωση το σύστημα επιστρέφει το στοιχείο Array με δείκτη 3 και κατά σειρά αυτό είναι το τέταρτο στοιχείο του Array.

Για ορισμένες συλλογές υπάρχει επίσης η έννοια του αριθμού γραμμής. Ο αριθμός γραμμής ξεκινά με ένα. Για παράδειγμα, για το τμήμα του πίνακα υπάρχει μια ιδιότητα όπως ο αριθμός σειράς. Είναι σημαντικό να έχουμε κατά νου ότι εάν γνωρίζουμε τον αριθμό γραμμής και θέλουμε να έχουμε πρόσβαση σε αυτόν κατά ευρετήριο, τότε θα πρέπει να χρησιμοποιήσουμε μια τιμή μικρότερη από τον αριθμό γραμμής ως ευρετήριο.

Η έννοια του αριθμού γραμμής δεν υπάρχει σε όλες τις συλλογές, αλλά κυρίως σε αυτές που μπορούν να εμφανιστούν στο περιβάλλον εργασίας χρήστη.

Όλες οι συλλογές χρησιμοποιούν διάσχιση στοιχείων συλλογής. Η παράκαμψη είναι δυνατή με δύο τρόπους: κύκλος ΓιαΚαι κύκλος Για καθένα από.

Για τις περισσότερες γενικές συλλογές, οι μέθοδοι που ισχύουν είναι Καταμέτρηση, Ευρετήριο, Προσθήκη, Εισαγωγή, Διαγραφή και Εύρεση.

Το Count είναι μια συνάρτηση που επιστρέφει τον αριθμό των στοιχείων σε μια συλλογή. Μπορεί να χρησιμοποιηθεί πριν από έναν κύκλο Για, όπως φαίνεται στο σχήμα.

Η μέθοδος Index δεν υπάρχει για όλες τις συλλογές, αλλά μόνο για εκείνες των οποίων τα στοιχεία μπορούν να αναφέρονται. Ένα παράδειγμα είναι Πίνακας Αξιών.

Πίνακας Αξιών– αυτή είναι μια συγκεκριμένη συλλογή από συμβολοσειρές, οι συμβολοσειρές μπορεί να περιέχουν διαφορετικές στήλες με διαφορετικών τύπωναξίες.

Κάθε γραμμή αντιπροσωπεύει μια ανεξάρτητη οντότητα. Μπορείτε να λάβετε έναν σύνδεσμο προς αυτό μέσω αυτής της γραμμής, μπορείτε να αποκτήσετε πρόσβαση στις τιμές των στηλών σε αυτήν τη γραμμή.

Η μέθοδος Index σάς επιτρέπει να προσδιορίσετε ποιος δείκτης αντιστοιχεί σε μια δεδομένη σειρά (δηλαδή, την τρέχουσα θέση της σειράς στον πίνακα). Οι τιμές του δείκτη ξεκινούν από το μηδέν.

Σχεδόν κάθε καθολική συλλογή έχει μεθόδους για την προσθήκη νέων τιμών σε μια δεδομένη συλλογή. Το σχήμα δείχνει πώς να γεμίσετε έναν πίνακα με τιμές από 0 έως 10 με δύο τρόπους.

Για να προσθέσουμε ένα στοιχείο στον πίνακα μπορούμε να χρησιμοποιήσουμε τη μέθοδο Προσθέτω, υποδεικνύετε την τιμή που πρέπει να προστεθεί σε αγκύλες. Σε αυτήν την περίπτωση, η τιμή θα προστεθεί στο τέλος της λίστας, δηλ. Ο πίνακας θα αυξάνεται συνεχώς λόγω της τελευταίας θέσης.

Μια άλλη μέθοδος που σας επιτρέπει να προσθέσετε τιμές σε μια συλλογή είναι η Εισάγω. Είναι διαφορετικό από τη μέθοδο Προσθέτωστο οποίο μπορείτε να καθορίσετε πού να εισαγάγετε το προστιθέμενο στοιχείο.

Σύνταξη: Εισαγωγή (,)

Η πρώτη παράμετρος καθορίζει τον δείκτη στον οποίο θα εισαχθεί η νέα τιμή. Εκείνοι. για παράδειγμα, μπορούμε να καθορίσουμε ότι κάθε τιμή πρέπει να εισαχθεί στην αρχή της λίστας (δεύτερη μέθοδος στο παραπάνω σχήμα).

Για να αφαιρέσετε στοιχεία από μια συλλογή, χρησιμοποιήστε τη μέθοδο Διαγράφω. Η μέθοδος Delete καθορίζει με ευρετήριο ποιο στοιχείο θα διαγράψουμε.

Σύνταξη: Διαγράφω()
Παράδειγμα χρήσης: OurArray.Delete(5);

Θα πρέπει να σημειωθεί ότι για εκείνες τις συλλογές όπου οι συμβολοσειρές αντιπροσωπεύουν μια ανεξάρτητη οντότητα (για παράδειγμα, για Πίνακες τιμών), μπορούμε επίσης να χρησιμοποιήσουμε τη μέθοδο λήψης του ευρετηρίου για να διαγράψουμε αργότερα αυτήν τη σειρά.

Σχεδόν όλες οι συλλογές έχουν μια μέθοδο για την αναζήτηση μιας τιμής - Εύρημα. Η τιμή που θέλουμε να βρούμε μεταβιβάζεται στη μέθοδο. Ορισμένες συλλογές σάς επιτρέπουν να ορίσετε ορισμένους περιορισμούς.

Για παράδειγμα, σε Πίνακας ΑξιώνΜπορείτε να καθορίσετε τις σειρές και τις στήλες στις οποίες θέλετε να κάνετε αναζήτηση.

Εάν βρεθεί η τιμή, τότε αυτή η μέθοδος επιστρέφει το ευρετήριο ή την καθορισμένη συμβολοσειρά. Εάν η τιμή δεν βρεθεί, επιστρέφεται μια τιμή τύπου Απροσδιόριστος. Σε σχέση με έναν πίνακα, επιστρέφει Δείκτης, ή αξία Απροσδιόριστος.

Παράδειγμα χρήσης: OurVariable = OurArray.Find(8);

Οι καθολικές συλλογές μπορούν να διαγραφούν πολύ γρήγορα, π.χ. αφαιρέστε απολύτως όλα τα στοιχεία. Για το σκοπό αυτό χρησιμοποιείται η μέθοδος Σαφής(), το οποίο αφαιρεί στοιχεία πίνακα, σειρές Πίνακες τιμών, ή δεδομένα από άλλες συλλογές.

Πρόσθετες μέθοδοι για Array

Μέθοδος BBorder()επιστρέφει τον αριθμό των στοιχείων μείον ένα. Εκείνοι. αν χρησιμοποιήσουμε βρόχο Για, τότε αντί για τη μέθοδο Quantity μπορούμε να χρησιμοποιήσουμε αμέσως τη μέθοδο Σύνορο().

Συγκεκριμένα, η μεταβλητή QuantityInArray θα μπορούσε να οριστεί διαφορετικά:

QuantityInArray = OurArray.InBorder();
Στη συνέχεια, όταν περιγράφεται ο ίδιος ο κύκλος, δεν πρέπει να αφαιρείται κανείς από αυτή τη μεταβλητή.

Η μέθοδος Set σας επιτρέπει να εκχωρήσετε μια τιμή σε ένα στοιχείο Array ανά ευρετήριο.

Σύνταξη: Εγκαθιστώ(,)

Παράδειγμα: OurArray.Set(2,8);

Εναλλακτική λύση: OurArray = 8;

Μπορείτε να χρησιμοποιήσετε τη μέθοδο για έναν πίνακα Παίρνω, για την ανάγνωση μιας τιμής σε ένα ευρετήριο χωρίς να καταφύγετε στη χρήση αγκύλων.

Σύνταξη: Παίρνω()

Παράδειγμα: OurVariable = OurArray.Get(2);

Εναλλακτική λύση: OurVariable = OurArray;

Universal συλλεκτική δομή

Μια δομή, όπως ένας πίνακας, μπορεί να έχει απεριόριστο αριθμό στοιχείων, αλλά το περιεχόμενο του στοιχείου διαφέρει από τον πίνακα.

Η δομή είναι μια συλλογή, κάθε τιμή της οποίας αποτελείται από ένα ζεύγος. Το πρώτο στοιχείο του ζεύγους ονομάζεται Κλειδί. Το δεύτερο στοιχείο του ζεύγους είναι Εννοια.

Κλειδίείναι ένας αυστηρά τύπος δεδομένων συμβολοσειράς που περιγράφει μια τιμή. Για παράδειγμα, Στο κλειδίΟ "Κωδικός" μπορεί να αντιστοιχεί στην τιμή 113. Στο κλειδί"Όνομα" που σημαίνει "Βάσια". Η ίδια η Τιμή δεν υπόκειται σε περιορισμό τύπου δεδομένων.

Η δομή είναι πολύ βολική στη χρήση αν θέλουμε να δημιουργήσουμε μια συγκεκριμένη λίστα παραμέτρων. Αν αυτό Δομήκάλεσε Η δομή μας, τότε θα αναφερθούμε στις δύο τιμές του ως εξής: OurStructure.Code και OurStructure.Name.

Αυτό το είδος πρόσβασης είναι πολύ πιο βολικό από ό,τι αν ορίζαμε όλες τις παραμέτρους σε έναν πίνακα και αποκτούσαμε πρόσβαση σε αυτές με ευρετήριο.

Η δομή κάνει τον κώδικα του προγράμματος αναγνώσιμο (κατανοητό). Η δομή χρησιμοποιείται αρκετά συχνά, πολύ πιο συχνά από το Array.

Χρησιμοποιείται για την περιγραφή ορισμένων παραμέτρων, από τις οποίες συχνά υπάρχουν αρκετές μεγάλο αριθμόσε όλους τους αλγόριθμους.

Επιπλέον, η Δομή χρησιμοποιείται εάν η διαδικασία και η συνάρτηση περιέχουν μεγάλο αριθμό παραμέτρων που έχουν περάσει.

Τότε είναι πολύ πιο βολικό να γράψετε όλες τις παραμέτρους στη Δομή και να τις μεταβιβάσετε. Εκείνοι. οι παράμετροι των διαδικασιών και των συναρτήσεων είναι «πακετάρονται».

Ξεχωριστά, πρέπει να σημειωθεί ότι όπως ΚλειδίΔεν μπορεί να εμφανιστεί απολύτως καμία γραμμή στη Δομή. Ισχύουν ορισμένοι περιορισμοί.

Κλειδίπρέπει να λειτουργεί ως αναγνωριστικό. Αυτό σημαίνει ότι σε Klyucheδεν πρέπει να υπάρχουν κενά και δεν μπορεί να ξεκινά με αριθμό.

Αποδεκτό ξεκίνημα Κλειδίμε γράμμα ή υπογράμμιση. Ετσι, Κλειδίπρέπει να πληροί τις απαιτήσεις για τη δημιουργία αναγνωριστικών.

Ας σημειώσουμε πώς αλλιώς διαφέρει μια Δομή από έναν Πίνακα. Υπάρχει μια μέθοδος στη Δομή Εισάγω, υπάρχουν δύο μέθοδοι για εισαγωγή στο Array: Εισάγω(σε μια ορισμένη θέση) και Προσθέτω(μέχρι το τέλος της λίστας). Σε έναν πίνακα, όλα τα στοιχεία είναι ταξινομημένα.

Η δομή είναι ένα είδος μη ταξινομημένου συνόλου. Αυτός είναι ο λόγος για τον οποίο υπάρχει μόνο μια μέθοδος εισαγωγής για μια Δομή.

Η τιμή εισάγεται όχι σε μια συγκεκριμένη θέση, αλλά στο καθορισμένο σύνολο. Δεν είναι δυνατή η πρόσβαση σε μια δομή μέσω ευρετηρίου, όπως άλλες γενικές συλλογές.

Τα στοιχεία δομής είναι προσβάσιμα μόνο με το όνομα κλειδιού. Ωστόσο, ο βρόχος For Every λειτουργεί επίσης για τη Δομή, αλλά δεν πρέπει να βασίζεστε στη σειρά των στοιχείων της Δομής.

Μια δομή δημιουργείται με τον ίδιο τρόπο όπως και άλλες γενικές συλλογές χρησιμοποιώντας τη νέα δομή κατασκευής, καθορίζοντας τον τύπο δεδομένων Δομή.

Όπως ένας πίνακας, ο κατασκευαστής μιας δομής μπορεί να έχει παραμέτρους. Εκείνοι. είναι δυνατό να περιγραφεί το ίδιο το περιεχόμενο μιας Δομής χρησιμοποιώντας έναν κατασκευαστή.

Σε αντίθεση με έναν Πίνακα, όπου μπορείτε απλά να καθορίσετε τον αριθμό των στοιχείων για όλες τις διαστάσεις, σε μια Δομή μπορείτε να καθορίσετε το ίδιο το περιεχόμενο.

Για παράδειγμα: OurStructure = New Structure (“Code, Name”, 133, “Vasya”);

Διαχωρισμένα με κόμματα, αναφέρονται πρώτα τα ονόματα των κλειδιών και στη συνέχεια, κατά συνέπεια, στην ίδια σειρά, οι τιμές των παραμέτρων.

Υπάρχει μια μέθοδος για να προσθέσετε μια νέα τιμή στη Δομή Εισάγω, το οποίο εισάγει ένα νέο ζεύγος (Κλειδί και Τιμή).

Για παράδειγμα: OurStructure.Insert(“FamilyMembers”,3);

Η Δομή χαρακτηρίζεται από μια άλλη μέθοδο που χρησιμοποιείται αρκετά συχνά. Αυτή είναι η μέθοδος Ιδιοκτησία.

Χρησιμοποιώντας αυτήν τη μέθοδο, μπορείτε να καταλάβετε εάν υπάρχει ένα στοιχείο σε αυτήν τη Δομή του οποίου το κλειδί έχει αυτό και αυτό το όνομα.

Εάν υπάρχει τέτοιο στοιχείο, το σύστημα θα επιστρέψει την τιμή True, διαφορετικά – False.

Για παράδειγμα, η έκφραση OurStructure.Property ("Μέλη της οικογένειας")θα είναι ίσο με Αληθινό. Αυτή η μέθοδος χρησιμοποιείται αρκετά συχνά κατά την ανάλυση της Δομής.

Όπως με κάθε καθολική συλλογή, είναι δυνατή η πρόσβαση στις ιδιότητες μιας Δομής κατά ευρετήριο. Αλλά το ευρετήριο για τη Δομή είναι μια τιμή συμβολοσειράς.

Για παράδειγμα: Αναφορά (Η δομή μας["Μέλη της οικογένειας"]);

Ωστόσο, δεν πρέπει να ξεχνάμε ότι μια Δομή είναι ένα μη ταξινομημένο σύνολο αντικειμένων, γι' αυτό η πρόσβαση με ευρετήρια 0, 1, 2 είναι απαράδεκτη.

Γενική συλλογή Λίστα τιμών

ListValuesείναι μια γραμμική λίστα στοιχείων οποιουδήποτε τύπου δεδομένων.

Κάθε στοιχείο αποτελείται από πολλές τιμές. Σχηματικά, μια λίστα τιμών μπορεί να αναπαρασταθεί ως λίστα με τέσσερις στήλες.

Πρώτη στήλη - Σημάδι. Έχει τύπο δεδομένων Boolean και επιτρέπει στον χρήστη να επιλέξει ή να αποεπιλέξει τα πλαίσια.

Η άλλη στήλη είναι μια εικόνα που μπορεί με κάποιο τρόπο να αναπαριστά οπτικά αυτό το στοιχείο, π.χ. αντιστοιχίστε αυτή τη συμβολοσειρά με μια εικόνα.

Η τρίτη στήλη είναι η ίδια η αποθηκευμένη τιμή, δηλ. πρόκειται για οποιονδήποτε τύπο δεδομένων και μπορεί να διαφέρει σε διαφορετικές γραμμές.

Η τέταρτη στήλη είναι η παρουσίαση, δηλ. αυτό είναι ένα είδος περιγραφής συμβολοσειράς μιας δεδομένης τιμής. Η προβολή θα εμφανίζεται στον χρήστη όταν προβάλλει αυτό το στοιχείο. Σε αυτήν την περίπτωση, εάν η αναπαράσταση δεν έχει καθοριστεί, το σύστημα θα προσπαθήσει να αποκτήσει αναπαραστάσεις για το στοιχείο που περιέχεται σε αυτή τη θέση.

ListValues– αυτό είναι το αντικείμενο με το οποίο ο χρήστης μπορεί να εργαστεί οπτικά. Εκείνοι. ListValuesμπορεί να εμφανιστεί στη φόρμα.

Ο χρήστης μπορεί να εκτελέσει ορισμένες ενέργειες με αυτό. Εκτός από αυτό, ListValuesμπορεί να συναχθεί ανεξάρτητα χρησιμοποιώντας μεθόδους, π.χ. εμφανίζονται στην οθόνη σε κάποιο κλάδο του αλγορίθμου (με εξαίρεση τον κώδικα διακομιστή) έτσι ώστε ο χρήστης να επιλέξει κάποια γραμμή ή να τσεκάρει κάποια πλαίσια.

Θα βρούμε ListValuesστον βοηθό sitax. Κατασκευαστής ListValuesδεν έχει παραμετροποιηθεί (δεν μπορείτε να ορίσετε προεπιλεγμένες τιμές).

Υπάρχουν μέθοδοι όπως:

  • Εισαγωγή(,) ;
  • Προσθέτω(,);
  • Ποσότητα();
  • Δείκτης().

Υπάρχουν επίσης ειδικές μέθοδοι, για παράδειγμα, UnloadValues(). Αυτό δημιουργεί έναν πίνακα στον οποίο αντιγράφεται η λίστα των τιμών. Για παράδειγμα:

Array of Elements = List of PriceTypes.OutloadValues();

Υπάρχει επίσης μια αντίστροφη μέθοδος:
ListPriceTypes.LoadValues(ArrayItems);

Υπάρχουν μέθοδοι αναζήτησης:
FindByValue(); FindByIdentifier().

Υπάρχει μια μέθοδος αντιγραφής:
ListCopy = PriceTypeList.Copy();
Αυτή η μέθοδοςπροορίζεται να κάνει κάποιου είδους τροποποίηση στο αντίγραφο.

Υπάρχουν μέθοδοι:
SortByValue();
SortByView().

Μέθοδοι SelectItem(,)Και MarkItems()καλέστε ένα παράθυρο διαλόγου modal που σταματά την εκτέλεση του αλγορίθμου έως ότου ο χρήστης κλείσει το παράθυρο.

Για να χρησιμοποιήσετε αυτές τις μεθόδους στις ιδιότητες διαμόρφωσης Τρόπος χρήσης τροπικότηταςπρέπει να ρυθμιστεί σε Χρήση.

Παράδειγμα κώδικα που καλείται από μια λειτουργική μονάδα διαχειριζόμενης εφαρμογής:

Εμφάνιση αυτού του κώδικα σε λειτουργία χρήστη (modal dialog).

Παρακάτω ListValuesχρησιμοποιείται ως διαθέσιμος τύπος δεδομένων για χαρακτηριστικά φόρμας. Δημιουργία για τη φόρμα επεξεργασίας νέα στηρίγματα, ορίστε έναν τύπο για αυτό ListValuesκαι εμφανίστε το στη φόρμα.

Δημιουργούμε νέα ομάδα Εγγραφείτε Δώρα, μεταφέρετέ το στη φόρμα και ορίστε ένα πρόγραμμα χειρισμού ενεργειών για αυτό.

Στη λειτουργία χρήστη, όταν κάνετε κλικ στο κουμπί Συμπλήρωση δώρων στη φόρμα επεξεργασίας, θα εμφανιστεί μια ολοκληρωμένη λίστα.

Εάν είναι επιθυμητό, ​​η λίστα μπορεί να επεξεργαστεί: ορισμένα στοιχεία μπορούν να προστεθούν, μερικά μπορούν να αφαιρεθούν.

Συμμόρφωση πολλαπλών χρήσεων συλλογής

Αυτή η συλλογή μοιάζει πολύ με Δομή. Ακριβώς όπως η δομή, οι αντιστοιχίσεις είναι σύνολα τιμών που αποτελούνται από ένα κλειδί και την ίδια την τιμή.

Η κύρια διαφορά είναι ότι οποιοσδήποτε τύπος δεδομένων μπορεί να καθοριστεί ως κλειδί, καθώς και ως τιμή. Λαμβάνοντας υπόψη αυτό το χαρακτηριστικό, είναι απαραίτητο να προσπελάσετε την τιμή αντιστοίχισης ανά ευρετήριο, η βασική τιμή υποδεικνύεται ως τιμή ευρετηρίου.

Το κλειδί μπορεί να είναι ένας τύπος δεδομένων εκτός από μια συμβολοσειρά. Οι ιδιότητες και οι μέθοδοι εργασίας με το Compliance είναι σχεδόν οι ίδιες με εκείνες του Structure.

Το Compliance Constructor, σε αντίθεση με το Structure, δεν περιέχει τη δυνατότητα καθορισμού παραμέτρων.

Παράδειγμα χρήσης:

Η αλληλογραφία είναι βολική στη χρήση όταν χρειάζεται να συνδέσετε οποιεσδήποτε δύο δομές. Για παράδειγμα, κάθε γραμμή στην ενότητα πίνακα πρέπει να αντιστοιχιστεί με μια γραμμή από τον πίνακα τιμών.
Σε αυτήν την περίπτωση, η σειρά του τμήματος πίνακα χρησιμοποιείται ως κλειδί Αντιστοίχισης και υποδεικνύεται η αντίστοιχη τιμή.

Κατά την εισαγωγή στοιχείων σε μια συλλογή Αντιστοιχίστε επιπλέον με τη μέθοδο Εισάγω(,)Ένας άλλος τρόπος για να εισαγάγετε μια τιμή είναι να χρησιμοποιήσετε τον τελεστή κανονικής εκχώρησης.

Για παράδειγμα: OurMatch = NewMatch;
Ταίριασμα = 999;

Εκείνοι. εάν ένα στοιχείο δεν υπήρχε στη συλλογή, τότε θα προστεθεί χρησιμοποιώντας τον τελεστή εκχώρησης και εάν υπήρχε, θα ενημερωθεί.

Αυτό έρχεται σε αντίθεση με τη Δομή.

Πίνακας αξιών καθολικής συλλογής

Πίνακας Αξιώνείναι ένας πίνακας με αυθαίρετο αριθμό σειρών και αυθαίρετο αριθμό στηλών. Η τομή μπορεί να αποθηκεύσει τιμές οποιουδήποτε τύπου δεδομένων. Εάν είναι απαραίτητο, οι στήλες μπορούν να πληκτρολογηθούν, δηλαδή, μπορείτε να προσδιορίσετε σε ποια στήλη τι είδους δεδομένα αποθηκεύονται.

Μπορείτε να αφήσετε τις στήλες χωρίς πληκτρολόγηση και, στη συνέχεια, τιμές διαφορετικών τύπων μπορούν να αποθηκευτούν σε μία στήλη σε διαφορετικές σειρές.

Διαφορές Πίνακες τιμώναπό έναν δισδιάστατο πίνακα:

  • αυτό είναι ένα αντικείμενο με το οποίο μπορεί να εργαστεί ο χρήστης (ο πίνακας τιμών μπορεί να εμφανιστεί στην οθόνη, ο χρήστης μπορεί να το συμπληρώσει και τα δεδομένα που έχουν εισαχθεί μπορούν στη συνέχεια να διαβαστούν).
  • δημιουργία ευρετηρίων για γρήγορη αναζήτηση.
  • κλωνοποίηση, πλήρωση μιας ολόκληρης στήλης με μια συγκεκριμένη τιμή, μεταφόρτωση όλων των στηλών σε έναν πίνακα.

Πίνακας Αξιώνχρησιμοποιείται ως ένα είδος προσωρινής αποθήκευσης πληροφοριών. Πίνακας Αξιώνεπιστρέφεται και γίνεται αποδεκτή ως παράμετρος από πολλές μεθόδους συστήματος. Είναι δυνατό να δημιουργηθεί ένα ερώτημα σε σχέση με τον Πίνακα Τιμών.

Ετσι, Πίνακας Αξιώναποτελείται από ένα σύνολο σειρών και ένα σύνολο στηλών. Τόσο οι γραμμές όσο και οι στήλες είναι συλλογές.

Εκείνοι. μέσα στη συλλογή Πίνακας Αξιώνυπάρχουν άλλες δύο συλλογές. Ας στραφούμε στον βοηθό σύνταξης και ας βρούμε Πίνακας Αξιών.

Υποστηριζόμενοι τύποι δεδομένων: ίδια Πίνακας Αξιών, που αποτελείται από χορδές. Κάθε σειρά αντιπροσωπεύεται από έναν τύπο δεδομένων RowTableValues, το οποίο έχει τις δικές του ιδιότητες και τις δικές του μεθόδους. Διαθέσιμος Συλλογή στηλών Πίνακας Τιμέςέχει επίσης ορισμένες ιδιότητες.

Σημαντικό σημείο! Η διαδικασία που δημιουργεί Πίνακας Αξιών, πρέπει να μεταγλωττίσει το &OnServer.

Πριν ξεκινήσετε να εργάζεστε με Πίνακας Αξιών, πρέπει να καθορίσετε ποιες στήλες θα περιέχει (δηλ. να τις δημιουργήσετε). Σύνταξη:

Προσθέτω(,)
(προαιρετικός)
Τύπος: String.
(προαιρετικός)
Τύπος: Περιγραφή Τύποι
(προαιρετικός)
Τύπος: String.
(προαιρετικός)
Τύπος: Αριθμός.

Για παράδειγμα:

Για να καλέσουμε αυτή τη διαδικασία θα χρησιμοποιήσουμε την εντολή.

Στην περιγραφή Πίνακες τιμώντα στοιχεία της συλλογής είναι ακριβώς RowsTableValues.

Σε αντίθεση με τις στήλες, οι οποίες αποτελούνται μόνο από ιδιότητες (Όνομα, Τύπος, Επικεφαλίδα, Πλάτος), στο RowTableValuesΥπάρχουν και ιδιότητες (πρόσβαση με όνομα στήλης) και μέθοδοι (μπορείτε να λάβετε και να ορίσετε την τιμή, να εργαστείτε με τους κατόχους).

Για να προσθέσετε νέα γραμμήστον πίνακα πρέπει να χρησιμοποιήσετε τη μέθοδο είτε Προσθέτω(), ή Εισάγω(). Στη δεύτερη περίπτωση, θα πρέπει να υποδείξετε σε ποια θέση πρέπει να τοποθετηθεί η απαιτούμενη γραμμή.

Για να εκχωρήσουμε μια τιμή σε μια στήλη, χρησιμοποιούμε μια κουκκίδα για να αποκτήσουμε πρόσβαση στο όνομα ή στο ευρετήριο της στήλης (χρησιμοποιώντας αγκύλες).

Να συμπληρώσω Πίνακες τιμώνΜπορούν να χρησιμοποιηθούν οι ακόλουθες μέθοδοι:

Σαφής()– για να αφαιρέσετε όλες τις σειρές από Πίνακες τιμών.

FillValues(,)– σας επιτρέπει να γεμίσετε όλες τις στήλες ή τις επιλεγμένες στήλες με μία τιμή.
LoadColumn(,)– φορτώνει μια στήλη από τον πίνακα.
UnloadColumn()– ξεφορτώνει τη στήλη σε έναν πίνακα.

Οι δύο τελευταίες μέθοδοι είναι βολικές στη χρήση όταν χρειάζεται να μεταφέρετε μια στήλη από έναν πίνακα τιμών στον άλλο.

Αντίγραφο(,)– σας επιτρέπει να δημιουργήσετε έναν νέο με βάση έναν υπάρχοντα πίνακα Πίνακας Αξιών, και όχι όλες οι σειρές και όλες οι στήλες, αλλά μόνο μερικές από αυτές. Επιστρεφόμενη αξία - Πίνακας Αξιών.

Μπορείτε να αντιγράψετε τη δομή Πίνακες τιμών. Υπάρχει αντίστοιχη μέθοδος για αυτό CopyColumns(). Θα πάρουμε ένα άδειο Πίνακας Αξιώνμε την απαιτούμενη δομή.

ΣΕ Πίνακας Αξιώνυπάρχει μέθοδος Σύνολο(). Μπορείτε να καθορίσετε τη στήλη στην οποία θέλετε να αθροίσετε τις αριθμητικές τιμές. Σε σχέση με τον κωδικό που εμφανίστηκε προηγουμένως στον πίνακα, μπορείτε να υπολογίσετε την τιμή: TZ.Total ("Ποσό").

ΣΕ Πίνακας Αξιώνείναι δυνατή η ομαδοποίηση (σύμπτυξη) αριθμητικών τιμών με ταυτόσημες τιμές ορισμένων στηλών χρησιμοποιώντας τη μέθοδο Κατάρρευση(,).

Σε σχέση με τον κωδικό που εμφανίστηκε προηγουμένως στον πίνακα, μπορείτε να υπολογίσετε την τιμή: TK.Collapse ("Ημέρα της εβδομάδας", "Ποσό").

Πίνακας Αξιώνμπορεί να εμφανιστεί στην οθόνη χρήστη, ώστε να μπορείτε να εκτελέσετε οποιεσδήποτε ενέργειες με αυτό. Αλλά σε αντίθεση με ListValuesαπό κώδικα προγράμματοςΔεν μπορείτε απλώς να εμφανίσετε έναν πίνακα στην οθόνη.

Για εμφάνιση Πίνακας Αξιώνστην οθόνη, δημιουργήστε ένα χαρακτηριστικό φόρμας και αντιστοιχίστε έναν τύπο δεδομένων σε αυτό Πίνακας Αξιών.

Μετά από αυτό, ο πίνακας που προκύπτει θα πρέπει να εμφανίζεται στη φόρμα.

Στη μονάδα φόρμας στο τέλος του προηγουμένως μεταγλωττισμένου αλγορίθμου (στη Διαδικασία για τη δημιουργία πίνακα τιμών), θα πρέπει να προσθέσετε:
ValueInFormData(TK, Πίνακας);

Καθολική συλλογή Δέντρο αξιών

μια καθολική συλλογή που μοιάζει πολύ με Πίνακας Αξιών. Η διαφορά από έναν πίνακα είναι ότι οι σειρές του δέντρου μπορούν να είναι δευτερεύουσες μεταξύ τους, δηλ. μπορεί να σχηματιστεί κάποιο είδος ιεραρχίας.

Αυτό μπορεί επίσης να αντικατοπτρίζεται στην οθόνη. Ένα δέντρο τιμών αποτελείται ρητά από μια συλλογή γραμμών και μια συλλογή στηλών. Υπάρχουν δύο ιδιότητες στο δέντρο: Γραμμές και Στήλες.

Δεδομένου ότι οι σειρές μπορούν να είναι δευτερεύουσες μεταξύ τους, κάθε σειρά μπορεί να έχει έναν Γονέα, καθώς και τις δευτερεύουσες σειρές της.

Ας δημιουργήσουμε την αντίστοιχη εντολή Tree και τη διαδικασία επεξεργασίας της.

Ας δημιουργήσουμε στην οποία υπάρχει μία μητρική και δύο δευτερεύουσες σειρές.

Ας δημιουργήσουμε τα χαρακτηριστικά της φόρμας DerZn(τύπος δεδομένων – Δέντρο αξιών).

Για αυτό το χαρακτηριστικό, θα δημιουργήσουμε τις στήλες Έτος και Μήνας.

Μετακινήστε το αντίστοιχο στοιχείο DerZnστη φόρμα.

Στο τέλος Διαδικασίες TreeOnServer()ας προσθέσουμε:

ValueInFormData(TreeZn, DerZn);

Ας ελέγξουμε τι συνέβη στη λειτουργία χρήστη.

Χρησιμοποιώντας το κουμπί Προσθέτωμπορείτε να προσθέσετε νέες γραμμές. Μπορούν επίσης να σχηματίσουν μια ιεραρχία.

Για να διασχίσουμε όλα τα στοιχεία του δέντρου τιμών, θα χρειαστεί να χρησιμοποιήσουμε την αναδρομή, δηλ. καλώντας τη διαδικασία από μόνη της. Για παράδειγμα, η επεξεργασία ενός δέντρου τιμών μπορεί να μοιάζει με αυτό:

Αυτό ολοκληρώνει την πρώτη μας γνωριμία με τις καθολικές συλλογές.

Στο επόμενο άρθρο θα δούμε ποιος σημαντικός μηχανισμός μπορεί να χρησιμοποιήσει ένας προγραμματιστής για να απλοποιήσει την πρόσβαση σε ένα στοιχείο καταλόγου από τον κώδικα προγράμματος.

Bluetooth