1γ εμφανίζει έναν πίνακα τιμών σε ένα έγγραφο υπολογιστικού φύλλου

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

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

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

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

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

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

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

// πάρε το τραπέζι
Selection = Query.Run ().
// με τη σειρά, περνάμε από όλες τις σειρές του αποτελέσματος του ερωτήματος
Κατά τη δειγματοληψία. Επόμενος () βρόχος
Αναφορά (Sample.Name);
Τέλος Κύκλου;

// Επιλογή 2 - ξεφόρτωση σε πίνακα τιμών
Request = New Request ("SELECT Name FROM Directory.Nomenclature");
// πάρε το τραπέζι
Πίνακας = Ερώτημα.Εκτέλεση (). Ξεφόρτωση ().
// τότε μπορούμε επίσης να περάσουμε από όλες τις γραμμές
Για κάθε σειρά από βρόχο πίνακα
Αναφορά (String.Name);
Τέλος Κύκλου;
// ή αυθαίρετη πρόσβαση σε συμβολοσειρές
Γραμμή = Πίνακας. Εύρεση ("Φτυάρι", "Όνομα");

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

Πίνακας στη φόρμα (fat client)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εξαγωγή πίνακα στο Excel

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

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

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

Καλή μέρα!

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

πηγαίνω!

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

Request = New Request ("SELECT * FROM Directory.Banks"); Πίνακας = Query.Run (). Εκφόρτωση ();

Εμφάνιση του πίνακα σε διαχειριζόμενη φόρμα

Ο κύριος αριθμός εργασιών μας ΜΙΑ ΦΟΡΑ είναι να εμφανίσουμε το αποτέλεσμα του αιτήματος προς ελεγχόμενη μορφή.

Για αυτό χρειαζόμαστε:

  1. Δημιουργήστε ένα χαρακτηριστικό του τύπου "ValuesTable".
  2. Δημιουργήστε χαρακτηριστικά με τύπο τιμής που αντιστοιχεί στον τύπο στήλης πίνακα, για κάθε στήλη, δευτερεύουσα του πίνακα.
  3. Δημιουργήστε ένα στοιχείο φόρμας τύπου "FormTable" για τον πίνακα.
  4. Δημιουργήστε στοιχεία φόρμας για στήλες του τύπου "FormField".

Έτσι, θα έχουμε τον ακόλουθο κώδικα:

// προσθήκη πίνακα: πρώτα ο ίδιος ο πίνακας και μετά η στήλη. Προϋποθέσεις = Νέος πίνακας; Attributes.Add (Νέα Χαρακτηριστικό Φόρμας ("TableOnForm", Νέα περιγραφή τύπων ("Πίνακας τιμών"))); Για κάθε ST FROM Table.Colon Details Cycle.Add (New Form Attribute (St.Name, St.TypeValue, "TableNaForm")); Τέλος Κύκλου; // προσθέστε λεπτομέρειες στη φόρμα ChangeAttributes (Requisites). // προσθήκη στοιχείων φόρμας Tab = Elements.Add ("TableOnForm", Τύπος ("FormTable")); Tab.PutKData = "TableOnForm"; // Απαγόρευση αλλαγής της θέσης των γραμμών και των ίδιων των γραμμών, απενεργοποιήστε τον πίνακα εντολών Tab.ChangeStringComposition = False; Tab.ChangeRowOrder = False; CommandPanelTable = CommandPanelFormElement Position.No; Για κάθε St FROM Table.Columns Cycle Rec = Elements.Add ("Column" + St.Name, Τύπος ("Form Field"), Tab); Rec.View = FormFieldKind.LabelField; Rec.PathData = "TableOnForm" + "." + Όνομα Αγίου; Rec.Header = Art.Name; Τέλος Κύκλου; // συμπληρώστε τον πίνακα ValueVAttributeForm (Πίνακας, "TableOnForm");

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

Αυτός ο κώδικας εμφανίζει το αποτέλεσμα του ερωτήματος σε μια διαχειριζόμενη φόρμα. Αλλά αν ξαφνικά, ως αποτέλεσμα του αιτήματος, έχετε στοιχεία των οποίων οι τύποι δεν μπορούν να εμφανιστούν στη φόρμα, τότε το 1C θα ορκιστεί. Αυτά τα στοιχεία περιλαμβάνουν αποθήκες αξίας, μοναδικά αναγνωριστικά και, από όσο γνωρίζω, άλλους πίνακες τιμών (δηλαδή, θα έχουμε προβλήματα κατά την ανάκτηση τμημάτων πίνακα). Αυτό πρέπει να λαμβάνεται υπόψη κατά τη δημιουργία λεπτομερειών. Ταυτόχρονα, εάν το χαρακτηριστικό του πίνακα είναι τύπου "ValuesTable", τότε θα χρειαστεί να δημιουργήσει και στήλες για αυτό. Θα πρέπει επίσης να ληφθεί υπόψη ότι τα ονόματα των στοιχείων της φόρμας πρέπει να είναι μοναδικά, ενώ τα ονόματα των χαρακτηριστικών πρέπει να είναι μοναδικά εντός των γονέων τους (δηλαδή, μπορεί να υπάρχουν δύο διαφορετικοί πίνακες με τα ίδια ονόματα στηλών, αλλά μέσα στον ίδιο πίνακα , τα ονόματα των στηλών πρέπει να είναι διαφορετικά).

Προσθέστε μια στήλη στον πίνακα εγγράφων

Τώρα ας δούμε πώς μπορείτε να επεκτείνετε έναν υπάρχοντα πίνακα φόρμας.

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

Για να το κάνετε αυτό, απλώς γράψτε τον ακόλουθο κώδικα στη διαδικασία OnCreateOnServer:

// προσθέστε ένα χαρακτηριστικό ArrayAttributes = Νέος πίνακας. ArrayAttributes.Add (New Form Attributes ("Column1", NewDescription of Types ("Line"), "Object.EditedAvans", "Column 1", False)); ModifyAttributes (ArrayAttributes); Elt = Elements.Add ("Column1", Type ("FormField"), Elements.EssentialAvans); Elt.View = FormFieldKind.InputField; Elt.PutKDanny = "Object. IssuedAvans.Column1";

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

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

Περιγραφή μεθόδου

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

CellScope = TabDocument.Area (1, 1, LastRow, LastColumn);


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

DataSource = NewDataSourceDescription (CellScope);

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



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

4. Ας αφαιρέσουμε το αποτέλεσμα σε έναν πίνακα τιμών (βλ. Εικόνα 2) καλώντας τη μέθοδο Unload () ενός αντικειμένου τύπου QueryResult.

ValuesTable = ReportBuilder.Result.Upload ();

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

Τελικός κωδικός προγράμματος

Λειτουργία ConvertTableDocumentToTableValues ​​(TabDocument)
LastRow = TabDocument.Table Height;
LastColumn = TabDocument.TableWidth;
CellScope = TabDocument.Area (1, 1, LastRow, LastColumn);
// Δημιουργήστε μια περιγραφή της προέλευσης δεδομένων με βάση την περιοχή κελιών του εγγράφου υπολογιστικού φύλλου.
DataSource = NewDataSourceDescription (CellScope);
// Δημιουργία αντικειμένου για έξυπνη κατασκευή αναφορών,
// καθορίστε την προέλευση δεδομένων και δημιουργήστε την αναφορά.
Εργαλείο δημιουργίας αναφορών = Νέο εργαλείο δημιουργίας αναφορών.
Report Builder.DataSource = DataSource;
Report Builder.Run ();
// Ανεβάστε το αποτέλεσμα στον πίνακα τιμών.
ValuesTable = ReportBuilder.Result.Upload ();
Επιστροφή TabValues
EndFunction

Επεξεργασία με υλοποίηση αυτή τη μέθοδομπορεί να γίνει λήψη

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

Περιγραφή μεθόδου

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

CellScope = TabDocument.Area (1, 1, LastRow, LastColumn);


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

DataSource = NewDataSourceDescription (CellScope);

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



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

4. Ας αφαιρέσουμε το αποτέλεσμα σε έναν πίνακα τιμών (βλ. Εικόνα 2) καλώντας τη μέθοδο Unload () ενός αντικειμένου τύπου QueryResult.

ValuesTable = ReportBuilder.Result.Upload ();

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

Τελικός κωδικός προγράμματος

Λειτουργία ConvertTableDocumentToTableValues ​​(TabDocument)
LastRow = TabDocument.Table Height;
LastColumn = TabDocument.TableWidth;
CellScope = TabDocument.Area (1, 1, LastRow, LastColumn);
// Δημιουργήστε μια περιγραφή της προέλευσης δεδομένων με βάση την περιοχή κελιών του εγγράφου υπολογιστικού φύλλου.
DataSource = NewDataSourceDescription (CellScope);
// Δημιουργία αντικειμένου για έξυπνη κατασκευή αναφορών,
// καθορίστε την προέλευση δεδομένων και δημιουργήστε την αναφορά.
Εργαλείο δημιουργίας αναφορών = Νέο εργαλείο δημιουργίας αναφορών.
Report Builder.DataSource = DataSource;
Report Builder.Run ();
// Ανεβάστε το αποτέλεσμα στον πίνακα τιμών.
ValuesTable = ReportBuilder.Result.Upload ();
Επιστροφή TabValues
EndFunction

Μπορείτε να κατεβάσετε την επεξεργασία με την εφαρμογή αυτής της μεθόδου