1γ πώς να δημιουργήσετε έναν πίνακα τιμών. Και τώρα: επανάληψη υλικού

Πιθανώς, κανένα αντικείμενο καθολικών συλλογών αξιών δεν είναι τόσο δημοφιλές μεταξύ των προγραμματιστών 1C όσο ο πίνακας τιμών (τηλεόραση). Οι λίστες τιμών δεν μπορούν να επεκταθούν με λεπτομέρειες.

Και μόνο ο πίνακας τιμών:

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

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

Από τι αποτελούνται οι πίνακες τιμών;

Όλοι οι αρχάριοι προγραμματιστές γνωρίζουν ξεκάθαρα ότι ο πίνακας τιμών έχει:

  1. Στήλες που περιγράφουν τη δομή του πίνακα.
  2. Σειρές που γεμίζουν τον πίνακα με πληροφορίες.

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

Πρώτα όμως πρώτα.

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

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

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

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

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

Ευρετήρια πίνακα τιμών

Η αναζήτηση στον πίνακα τιμών πραγματοποιείται με δύο μεθόδους:

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

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

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

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

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

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

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

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

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

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

Μπορείτε να αντιγράψετε πλήρως ένα TK σε ένα άλλο, καθώς και να καθορίσετε ποιες γραμμές και στήλες θα μεταφερθούν χρησιμοποιώντας τη μέθοδο Copy().

Εικ.4

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

Πίνακας τιμών και ερώτημα

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

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

Εικ.5

Αντικαθιστώντας το "*" με τα ονόματα των στηλών (μια γραμμή της φόρμας TK.Nomenclature), μπορείτε να μειώσετε τον όγκο των μεταφορτωμένων πληροφοριών.

Ένα σφάλμα κατά την εκτέλεση ενός αιτήματος (Εικ. 5) "Ο τύπος δεν μπορεί να επεξεργαστεί στο αίτημα" υποδεικνύει ότι ο προγραμματιστής ξέχασε να εκτελέσει μέρος του κώδικα στο Σχ. 2 και δεν πληκτρολόγησε τις στήλες.

Πίνακας τιμών και βρόχοι

Όταν επαναλαμβάνετε τις σειρές ενός πίνακα τιμών χρησιμοποιώντας μια μέθοδο που περιέχει έναν μετρητή (Εικ. 6), είναι σημαντικό να θυμάστε ότι η αρχική τιμή του δείκτη σειράς είναι 0 και η τελική τιμή του επαναλήπτη πρέπει να είναι 1 μικρότερο από τον αριθμό των σειρών στον πίνακα. Διαφορετικά, υπάρχει 100% πιθανότητα σφάλματος "Η τιμή του δείκτη είναι εκτός εύρους"

Εικ.6

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

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

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

Επομένως, στο 1C, η εργασία με πίνακες κατέχει εξέχουσα θέση.

Οι πίνακες στο 1C ονομάζονται επίσης "πινακοειδή μέρη". Κατάλογοι, έγγραφα και άλλα τα έχουν.

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

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

//Επιλογή 1 – διαδοχική πρόσβαση στα αποτελέσματα ερωτημάτων

//πάρτε το τραπέζι
Select = Query.Run().Select();
// περνάμε από όλες τις γραμμές του αποτελέσματος του ερωτήματος με τη σειρά
Ενώ Βρόχος Select.Next().
Αναφορά(Επιλογή.Όνομα);
EndCycle;

//Επιλογή 2 – μεταφόρτωση σε πίνακα τιμών
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//πάρτε το τραπέζι
Πίνακας = Query.Run().Unload().
// περαιτέρω μπορούμε επίσης να διασχίσουμε όλες τις γραμμές
Για κάθε σειρά από τον κύκλο του πίνακα
Αναφορά(String.Name);
EndCycle;
//ή αυθαίρετη πρόσβαση σε συμβολοσειρές
Row = Table.Find("Shovel", "Name");

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

Πίνακας στη φόρμα (χοντρό πελάτη)

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

Συζητήσαμε τις βασικές αρχές της εργασίας με φόρμες στο μάθημα και στο μάθημα

Λοιπόν, ας τοποθετήσουμε τον πίνακα στη φόρμα. Για να το κάνετε αυτό, μπορείτε να σύρετε τον πίνακα από τον πίνακα ελέγχου. Ομοίως, μπορείτε να επιλέξετε Form/Insert Control από το μενού.

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

Κάντε κλικ στο κουμπί "..." στην ιδιότητα Δεδομένα. Για να δείτε τη λίστα των τμημάτων σε πίνακα, πρέπει να αναπτύξετε τον κλάδο Αντικείμενο.

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

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

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

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

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

Για να διαχειριστείτε τον πίνακα, πρέπει να εμφανίσετε έναν πίνακα εντολών στη φόρμα. Επιλέξτε το στοιχείο μενού Form/Insert Control/Command Bar.

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

Πίνακας φόρμας (λεπτός/διαχειριζόμενος πελάτης)

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

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

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

Στη συνέχεια, σύρετε επίσης τον πίνακα προς τα αριστερά.

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

Μεταφόρτωση πίνακα στο Excel

Οποιοσδήποτε πίνακας 1C που βρίσκεται στη φόρμα μπορεί να εκτυπωθεί ή να μεταφορτωθεί στο Excel.

Για να το κάνετε αυτό, κάντε δεξί κλικ σε ένα κενό χώρο στον πίνακα και επιλέξτε Λίστα.

Σε έναν διαχειριζόμενο (λεπτό) πελάτη, παρόμοιες ενέργειες μπορούν να εκτελεστούν χρησιμοποιώντας το στοιχείο μενού Όλες οι ενέργειες/Λίστα εμφάνισης.

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

Άρθρα σχετικά με άλλες καθολικές συλλογές αξιών στο 1C

Μάθετε προγραμματισμό σε 1C στο βιβλίο μου "Προγραμματισμός σε 1C σε 11 βήματα"

  1. Το βιβλίο είναι γραμμένο σε σαφή και απλή γλώσσα - για αρχάριους.
  2. Μάθετε να κατανοείτε την αρχιτεκτονική 1C.
  3. Θα αρχίσετε να γράφετε κώδικα σε γλώσσα 1C.
  4. Μάστερ βασικές τεχνικές προγραμματισμού.
  5. Ενοποιήστε τις γνώσεις σας με τη βοήθεια ενός βιβλίου προβλημάτων.

Ένας εξαιρετικός οδηγός ανάπτυξης σε μια διαχειριζόμενη εφαρμογή 1C, τόσο για αρχάριους προγραμματιστές όσο και για έμπειρους προγραμματιστές.

  1. Πολύ προσιτή και κατανοητή γλώσσα παρουσίασης
  2. Το βιβλίο αποστέλλεται με email σε μορφή PDF. Μπορεί να ανοίξει σε οποιαδήποτε συσκευή!
  3. Κατανοήστε την ιδεολογία μιας διαχειριζόμενης εφαρμογής 1C
  4. Μάθετε πώς να αναπτύξετε μια διαχειριζόμενη εφαρμογή.
  5. Μάθετε να αναπτύσσετε διαχειριζόμενες φόρμες 1C.
  6. Θα μπορείτε να εργαστείτε με τα βασικά και απαραίτητα στοιχεία των διαχειριζόμενων φορμών
  7. Ο προγραμματισμός κάτω από μια διαχειριζόμενη εφαρμογή θα γίνει σαφής

Κωδικός προσφοράς για έκπτωση 15% - 48PVXHeYu


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

Μπορείτε να πληρώσετε χειροκίνητα:

Yandex.Money - 410012882996301
Web Money - R955262494655

Εγγραφείτε στις ομάδες μου.

Ακολουθεί ένα μικρό γεγονός για αρχή - απλά παραδείγματα εργασίας με έναν πίνακα τιμών:

1. Δημιουργήστε έναν πίνακα τιμών

ValueTable = New ValueTable;


2. Δημιουργήστε στήλες για τον πίνακα τιμών:

ValueTable.Columns.Add("Όνομα");
Τιμή Table.Columns.Add("Επώνυμο");


3. Προσθέστε νέες σειρές χρησιμοποιώντας ονόματα στηλών:


NewLine.Name = "Βασίλι";
NewLine.LastName = "Pupkin";


4. Πώς να αναζητήσετε μια τιμή στον πίνακα τιμών:
Είναι απαραίτητο να βρείτε μια σειρά πίνακα που περιέχει την επιθυμητή τιμή.

FoundRow = ValueTable.Find(SearchValue);


5. Βρείτε την πρώτη εμφάνιση σε ορισμένες στήλες του πίνακα τιμών

FoundRow = ValueTable.Find(SearchValue, "Supplier, Buyer");


6. Εάν πρέπει να βρείτε όλες τις εμφανίσεις στον πίνακα τιμών:
Χρησιμοποιούμε τη δομή αναζήτησης.

SearchStructure = Structure("Employee", SearchValue);
Πίνακας FoundRows = ValueTable.FindRows(SearchStructure);


Ας δημιουργήσουμε μια δομή αναζήτησης, κάθε στοιχείο της οποίας θα περιέχει το όνομα της στήλης ως κλειδί και την επιθυμητή τιμή σε αυτήν τη στήλη ως τιμή. Περνάμε τη Δομή Αναζήτησης ως παράμετρο στη μέθοδο FindLines(). Ως αποτέλεσμα, έχουμε σειρές πίνακα.
Εάν προσθέσετε μια αναζήτηση για την επιθυμητή τιμή στη δομή αναζήτησης, για παράδειγμα, επίσης στη στήλη Responsible, τότε ως αποτέλεσμα της εφαρμογής της μεθόδου FindLines() θα λάβουμε όλες τις σειρές όπου τόσο ο Υπάλληλος όσο και ο Υπεύθυνος είναι ίσοι με το τιμή αναζήτησης.

7. Πώς να επαναλάβετε έναν πίνακα τιμών με τυχαία σειρά

Για κάθε τρέχουσα σειρά από τον βρόχο πίνακα τιμών
Αναφορά(CurrentRow.Name);
EndCycle;

Το ίδιο πράγμα χρησιμοποιώντας ευρετήρια:

SeniorIndex = ValueTable.Quantity() - 1;
Για λογαριασμό = 0 έως κύκλος SeniorIndex
Report(ValueTable[Account].Name);
EndCycle;


8. Διαγραφή υπάρχουσας γραμμής πίνακα τιμών

ValueTable.Delete(Σειρά προς διαγραφή);

κατά ευρετήριο

ValueTable.Delete(0);


9. Διαγραφή υπάρχουσας στήλης του πίνακα τιμών

ValueTable.Columns.Delete(ColumnToDelete);


κατά ευρετήριο

ValueTable.Columns.Delete(0);

Είναι απαραίτητο να ληφθεί υπόψη ότι η διαγραφή μιας γραμμής (ή στήλης) "από τη μέση" του πίνακα τιμών θα οδηγήσει σε μείωση κατά ένα στους δείκτες των σειρών που βρίσκονται "μετά" τη διαγραφή

10. Πώς να συμπληρώσετε έναν πίνακα τιμών εάν τα ονόματα των στηλών περιέχονται σε μεταβλητές;

NewRow = ValueTable.Add();
NewRow[ColumnName] = Τιμή;


11. Πώς να συμπληρώσετε ολόκληρη τη στήλη του πίνακα τιμών με την επιθυμητή τιμή;
Η στήλη Σημαία Φορολογικής Λογιστικής στον πίνακα τιμών του πίνακα τιμών πρέπει να συμπληρωθεί με την τιμή False

Πίνακας τιμών Συμπλήρωση τιμών (Λάθος, "Σημαία φορολογικής λογιστικής").


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

12. Πώς μπορώ να συμπληρώσω τον πίνακα τιμών "Πίνακας παραλήπτη" με δεδομένα από τον πίνακα τιμών "Πίνακας προέλευσης";

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

Recipient table = Source table.Copy();


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

Μερική μεταφορά δεδομένων για στήλες με αντίστοιχα ονόματα:

Για κάθε σειρά του SourceTable Από τον κύκλο SourceTable
FillPropertyValues(NewRow, SourceTableRow);
Τέλος του Κύκλου


Για κάθε γραμμή του πίνακα προέλευσης, μια νέα σειρά προστίθεται στον πίνακα λήψης και οι τιμές συμπληρώνονται σε εκείνες τις στήλες του νέου πίνακα των οποίων τα ονόματα ταιριάζουν με τα ονόματα των στηλών στον πίνακα προέλευσης

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

Πλήρης αντιγραφή δεδομένων για στήλες με αντίστοιχα ονόματα

Ίδιες στήλες = New Array();

Για κάθε στήλη από SourceTable.Columns Cycle
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Αν ταιριάζουν στήλη<>Απροσδιόριστο Τότε

// Λήψη ιδιοτήτων στήλης.
Όνομα = Στήλη.Όνομα;
ValueType = Column.ValueType;
Header = Column.Header;
Width = Column.Width;

// Αντικατάσταση στηλών στον πίνακα προορισμού.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert(Index, Name, ValueType, Header, Width);

// Προσθέστε το επόμενο όνομα των στηλών που ταιριάζουν στον πίνακα.
Same Columns.Add(Column.Name);

τέλος εαν;

EndCycle;

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

// Προσθήκη νέας σειράς στον πίνακα προορισμού.
NewRow = TableReceiver.Add();

// Συμπληρώστε τις τιμές στα αντίστοιχα κελιά.
Για κάθε Όνομα Στήλες Από Στήλες με το ίδιο όνομα Κύκλος
NewRow[ColumnName] = SourceTableRow[ColumnName];

EndCycle;

EndCycle;


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

13. Πώς να προσθέσετε στήλες στον πίνακα τιμών "Πίνακας τιμών" με περιορισμούς τύπου;

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

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

// Προσθήκη στήλης χωρίς περιορισμούς στον τύπο.
ValueTable.Columns.Add("Αντικείμενο");


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

Προσθήκη στήλης που υποδεικνύει τον τύπο δεδομένων

// Περιορισμοί στους τύπους δεδομένων στηλών:
// Μόνο στοιχεία του καταλόγου "Counterparties".
Table of Values.Columns.Add("Account", New Description of Types("DirectoryLink.Accounts"));


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

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

// Προετοιμάστε και ορίστε περιορισμούς για δεδομένα τύπου String.
Προκριματικά συμβολοσειράς = New String Qualifiers(20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


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

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

// Επέκταση της περιγραφής τύπου που χρησιμοποιήθηκε προηγουμένως.
QualifiersNumbers = New QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Σημείωση", ExtendedAcceptableTypes);



 

Ίσως είναι χρήσιμο να διαβάσετε: