1s ckd υπολογισμένα πεδία συναρτήσεων. Λειτουργίες γλώσσας έκφρασης του συστήματος σύνθεσης δεδομένων. Εμφάνιση δεδομένων πίνακα σε μια γραμμή

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

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

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

1. Ρυθμίστε ένα αίτημα στο ACS.

2. Διαμόρφωση των υπολογιζόμενων πεδίων στο ACS

3. Εκτελέστε τη ρύθμιση σύνθεσης δεδομένων στην καρτέλα ρυθμίσεων

4. Εκκίνηση 1C Enterprise 8.2.14. Ανοίγουμε την έκθεση. Διαμορφώνουμε, παίρνουμε.

Περιγραφή των ίδιων των νέων λειτουργιών:

1. Η τρέχουσα ημερομηνία ()

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

2. ΕΚΘΕΣΗ ΥΠΟΛΟΓΙΣΜΟΥ ()

Σύνταξη:

Αξιολόγηση έκφρασης (,)

Περιγραφή:

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

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

Η συνάρτηση δεν μπορεί να εφαρμοστεί σε μια ομάδα στην επιλογή ομάδας αυτής της ομάδας. Για παράδειγμα, στην επιλογή της ομαδοποίησης ομαδοποίησης, δεν μπορείτε να χρησιμοποιήσετε την έκφραση Υπολογισμός έκφρασης ("Άθροισμα (SumTurnover)", "TotalTotal")> 1000... Αλλά μια τέτοια έκφραση μπορεί να χρησιμοποιηθεί στην ιεραρχική επιλογή.

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

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

Συνδέτης διάταξης κατά τη δημιουργία μιας έκφρασης συνάρτησης EvaluateExpression, σε περίπτωση που η έκφραση παραγγελίας περιέχει πεδία που δεν μπορούν να χρησιμοποιηθούν στην ομαδοποίηση, αντικαθιστά τη συνάρτηση EvaluateExpressionστο ΜΗΔΕΝΙΚΟ.

Παράμετροι

Ενα είδος: Γραμμή... Η έκφραση προς αξιολόγηση.

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

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

Ποσό (Sales.SumTurnover) / Υπολογισμός ("Ποσό (Sales.SumTurnover)", "TotalTotal")

ΣΕ αυτό το παράδειγματο αποτέλεσμα είναι ο λόγος του αθροίσματος επί του πεδίου Sales.AmountTurnoverομαδοποίηση εγγραφών στο άθροισμα του ίδιου πεδίου σε ολόκληρη τη διάταξη.

Ενα είδος: Γραμμή... Η παράμετρος μπορεί να λάβει τις ακόλουθες τιμές:

· Το συνολικό αποτέλεσμα- η έκφραση θα αξιολογηθεί για όλες τις εγγραφές ομαδοποίησης.

· Ιεραρχία- η έκφραση θα αξιολογηθεί για τη γονική ιεραρχική εγγραφή, εάν υπάρχει, και για ολόκληρη την ομαδοποίηση, εάν δεν υπάρχει γονική ιεραρχική εγγραφή.

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

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

Κατά τον υπολογισμό της συνάρτησης EvaluateExpression () με το νόημα GroupingNonResourceγια εγγραφές ομάδας που δεν είναι ομαδοποιήσεις κατά πόρους, η συνάρτηση υπολογίζεται με τον ίδιο τρόπο όπως θα υπολογιζόταν εάν η τιμή της παραμέτρου ήταν ίση με την τιμή Ομαδοποίηση.

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

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

· Πρώτα

· τελευταίος

· Προηγούμενος

· Επόμενο (Επόμενο)

· Ρεύμα

· Περιοριστική Αξία(BoundaryValue) Περιοριστική Αξία

Ενα είδος: Γραμμή... Υποδεικνύει σε ποια εγγραφή θα συνεχίσει το τμήμα στο οποίο θα αξιολογηθούν οι συγκεντρωτικές συναρτήσεις της έκφρασης. Η τιμή μπορεί να είναι μία από τις ακόλουθες:

· Πρώτα... Η πρώτη εγγραφή της ομαδοποίησης πρέπει να ανακτηθεί. Μετά τη λέξη σε παρένθεση, μπορείτε να καθορίσετε μια έκφραση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση από την αρχή της ομαδοποίησης. Η προκύπτουσα τιμή πρέπει να είναι ένας ακέραιος αριθμός μεγαλύτερος από μηδέν. Για παράδειγμα, Πρώτο (3) - λήψη της τρίτης εγγραφής από την αρχή της ομαδοποίησης.

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

· τελευταίος... Πρέπει να λάβετε την τελευταία εγγραφή ομαδοποίησης. Μια έκφραση μπορεί να καθοριστεί μετά τη λέξη σε παρένθεση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση από το τέλος της ομαδοποίησης. Η προκύπτουσα τιμή πρέπει να είναι ένας ακέραιος αριθμός μεγαλύτερος από μηδέν. Για παράδειγμα, Τελευταία (3) - λήψη της τρίτης εγγραφής από το τέλος της ομαδοποίησης.

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

· Προηγούμενος... Πρέπει να λάβετε την προηγούμενη εγγραφή ομαδοποίησης. Μια παράσταση μπορεί να καθοριστεί μετά τη λέξη σε αγκύλες, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως αντιστάθμιση πίσω από την τρέχουσα εγγραφή ομαδοποίησης. Για παράδειγμα, Προηγούμενο (2) - λάβετε το προηγούμενο από την προηγούμενη εγγραφή.

Εάν η προηγούμενη εγγραφή υπερβαίνει την ομαδοποίηση (για παράδειγμα, για τη δεύτερη εγγραφή ομαδοποίησης πρέπει να λάβετε το Προηγούμενο (3), τότε λαμβάνεται η πρώτη εγγραφή ομαδοποίησης.

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

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

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

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

· Ρεύμα... Πρέπει να λάβετε την τρέχουσα εγγραφή.

Κατά την ανάκτηση για το σύνολο της ομαδοποίησης, λαμβάνεται η πρώτη εγγραφή.

· Περιοριστική Αξία(BoundaryValue)... Η ανάγκη λήψης εγγραφής στην καθορισμένη τιμή. Μετά τη λέξη Περιοριστική Αξίασε αγκύλες πρέπει να καθορίσετε μια έκφραση με την τιμή της οποίας θέλετε να ξεκινήσετε ένα τμήμα, το πρώτο πεδίο παραγγελίας.

Ως εγγραφή, θα ληφθεί η πρώτη εγγραφή, η τιμή του πεδίου παραγγελίας της οποίας είναι μεγαλύτερη ή ίση με την καθορισμένη τιμή. Για παράδειγμα, εάν το πεδίο Περίοδος χρησιμοποιείται ως πεδίο παραγγελίας και έχει τις τιμές 01/01/2010, 01/02/2010, 01/03/2010 και θέλετε να λάβετε ConstrainingValue (DateTime (2010, 1, 15)), τότε θα λάβετε ένα αρχείο με την ημερομηνία 02/01/2010.

Ενα είδος: Γραμμή... Παραθέτει εκφράσεις, χωρισμένες με κόμματα, που περιγράφουν τους κανόνες ταξινόμησης. Εάν δεν καθορίζεται, η παραγγελία εκτελείται με τον ίδιο τρόπο όπως και για την ομάδα για την οποία αξιολογείται η έκφραση. Μετά από κάθε έκφραση, μπορείτε να καθορίσετε λέξη -κλειδί Ηλικία(για παραγγελία με αύξουσα σειρά), Φθίνων(για φθίνουσα σειρά) και Αυτόματη παραγγελία(για να παραγγείλετε τα πεδία αναφοράς με τα πεδία με τα οποία θέλετε να παραγγείλετε το αναφερόμενο αντικείμενο). Λέξη Αυτόματη παραγγελίαμπορεί να χρησιμοποιηθεί όπως με μια λέξη Ηλικία, έτσι και με τη λέξη Φθίνων.

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

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

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

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

Για παράδειγμα, εάν η ακολουθία που προκύπτει είναι ταξινομημένη κατά ημερομηνία:

η ημερομηνία Πλήρες όνομα Εννοια
1 01 Ιανουαρίου 2001

Ιβάνοφ Μ.

10
2 02 Ιανουαρίου 2001 Πέτροφ Σ. 20
3 03 Ιανουαρίου 2001 Σιντόροφ Ρ. 30
4 04 Ιανουαρίου 2001 Πέτροφ Σ. 40

Χωριστά, τότε:

Η προηγούμενη εγγραφή στην καταχώρηση 3 θα είναι η καταχώριση 2.

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

Εάν η τιμή της παραμέτρου είναι Μαζί, τότε:

Η προηγούμενη εγγραφή στην καταχώρηση 3 θα είναι η καταχώριση 1.

§ εάν το υπολογιζόμενο τμήμα ορίζεται ως Τρέχουσα, Τρέχουσα(αντίστοιχα, οι παράμετροι Αρχήκαι Τέλος), τότε για την εγγραφή 2 αυτό το τμήμα θα αποτελείται από τις εγγραφές 2 και 3. Έκφραση Υπολογισμός έκφρασης ("Άθροισμα (τιμή)", Τρέχουσα, Τρέχουσα)θα είναι ίση με 50.

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

Υπολογισμός έκφρασης ("Άθροισμα (SumTurnover)", "Πρώτο", "Τρέχον")

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

Αξιολόγηση έκφρασης (μάθημα, προηγούμενο)

Λίστα νέοςλειτουργίες:

EvaluateExpressionGroupedArray(,) -

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

EvaluateExpressionGroupedValuesTable(,) -

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

ValueFilled() - Επιστρέφει True αν η τιμή είναι διαφορετική από την τιμή αυτού του τύπουαπό προεπιλογή, μη NULL, μη μηδενικό, μη καθορισμένο. Για τιμές boolean, πραγματοποιείται έλεγχος για μηδενική τιμή... Για συμβολοσειρές, γίνεται έλεγχος για την απουσία χαρακτήρων μη λευκού χώρου

Μορφή(,) - Λάβετε τη διαμορφωμένη συμβολοσειρά της μεταβιβαζόμενης τιμής. Η συμβολοσειρά μορφοποίησης έχει οριστεί σύμφωνα με συμβολοσειρά μορφοποίησηςσυστήματα "1C: Enterprise".

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

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

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

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


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

Συνεπώς, τώρα είναι απαραίτητο να υπολογιστούν τα σύνολα για τις παραπάνω ομάδες ("Αποθήκες", "Τύποι αποθηκών") και το συνολικό σύνολο.
Για να το κάνετε αυτό, χρησιμοποιήστε τη συνάρτηση EvaluateGroupExpressionArray:
ΕΚΘΕΣΗ ΥΠΟΛΟΓΙΣΜΟΥ ΜΕ ΟΜΑΔΑ ARRAY (EVALEXPRESSIONWITHGROUPARRAY)
Σύνταξη:
EvaluateGroupExpressionArray (,)
Περιγραφή:
Η συνάρτηση επιστρέφει έναν πίνακα, κάθε στοιχείο του οποίου περιέχει το αποτέλεσμα της αξιολόγησης της έκφρασης που θα ομαδοποιηθεί κατά το καθορισμένο πεδίο.
Ο συνθέτης διάταξης, όταν δημιουργεί τη διάταξη, μετατρέπει τις παραμέτρους της συνάρτησης στους όρους των πεδίων διάταξης της σύνθεσης δεδομένων. Για παράδειγμα, το πεδίο Λογαριασμός θα μετατραπεί σε Dataset.Contractor.
Κατά τη δημιουργία εκφράσεων για την εμφάνιση ενός προσαρμοσμένου πεδίου, η έκφραση των οποίων περιέχει μόνο τη λειτουργία EvaluateArrayWithGroupArray (), ο συνθέτης διάταξης δημιουργεί την εμφανιζόμενη έκφραση έτσι ώστε οι εμφανιζόμενες πληροφορίες να είναι ταξινομημένες. Για παράδειγμα, για ένα προσαρμοσμένο πεδίο με μια έκφραση:

CalculateExpressionWithGroupingArray ("Sum (SumTurnover)", "Counterparty")
Ο συνθέτης διάταξης θα δημιουργήσει την ακόλουθη έκφραση για έξοδο:

ConnectRows (Array (Arrange (EvaluateExpressionWithGroupValuesTable) ("View (Sum (Dataset.SumTurnover)), Sum (Dataset.SumTurnover)", "Dataset.Contractor"), "2")))

Παράμετροι:

Τύπος: Χορδή. Η έκφραση προς αξιολόγηση. Μια συμβολοσειρά, για παράδειγμα, Ποσό (AmountTurnover).

Τύπος: Χορδή. Ομαδοποίηση εκφράσεων πεδίου είναι ομαδοποίηση εκφράσεων πεδίου, χωρισμένες με κόμματα. Για παράδειγμα, Counterparty, Party.

Τύπος: Χορδή. Μια έκφραση που περιγράφει την επιλογή που εφαρμόζεται στις εγγραφές λεπτομερειών. Η έκφραση δεν υποστηρίζει τη χρήση συγκεντρωτικών συναρτήσεων. Για παράδειγμα, Delete Mark = False.

Τύπος: Χορδή. Μια έκφραση που περιγράφει το φιλτράρισμα που εφαρμόζεται στις εγγραφές ομάδας. Για παράδειγμα, Sum (SumTurnover)> & Parameter1.
Παράδειγμα:

Μέγιστο (CalculateExpressionWithGroupArray ("Sum (SumTurnover)", "Counterparty"));

Μια λεπτομερής περιγραφή της σύνταξης της συνάρτησης βρίσκεται στη διεύθυνση http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Τώρα για τον υπολογισμό, θα αντιγράψουμε το πεδίο "Παραγγελία", με διαφορετικές τιμές "Υπολογισμός κατά ...", χρησιμοποιώντας τις ακόλουθες εκφράσεις, σημειώστε ότι σε κάθε υψηλότερο επίπεδο, οι τιμές των επιπέδων κάτω από τις ομαδοποιήσεις είναι μεταχειρισμένος.

Ως αποτέλεσμα, έχουμε την ακόλουθη κατασκευή:

Συνδεθείτε ως φοιτητής

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

Σύστημα σύνθεσης δεδομένων 1C 8.3 για αρχάριους: εξετάστε τα αποτελέσματα (πόροι)

Ο σκοπός αυτού του σεμιναρίου θα είναι:

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

Δημιουργία νέας αναφοράς

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

Τύπος εγγράφου - εξωτερική έκθεση:

Με τη μορφή ρύθμισης της αναφοράς, γράψτε το όνομα " Μάθημα 3"και πατήστε το κουμπί" Άνοιγμα σχήματος σύνθεσης δεδομένων":

Αφήστε το προεπιλεγμένο όνομα σχήματος και κάντε κλικ στο " Ετοιμος":

Προσθήκη αιτήματος μέσω του κατασκευαστή

Στο " Σύνολο δεδομένων"Σπρώξτε πράσινοςσύμβολο συν και επιλέξτε το στοιχείο " Προσθήκη συνόλου δεδομένων - ερώτημα":

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

Στο " Πίνακες"σύρετε το τραπέζι" Φαγητό"από την πρώτη στήλη στη δεύτερη:

Επιλογή από τον πίνακα " Φαγητό"πεδία που θα ζητήσουμε. Για να το κάνετε αυτό, σύρετε τα πεδία" Ονομα", "Γεύση", "Χρώμα" και " Περιεκτικότητα σε θερμίδες"από τη δεύτερη στήλη στην τρίτη:

Αποδείχθηκε έτσι:

Πάτα το κουμπί " Εντάξει"- το κείμενο του αιτήματος δημιουργήθηκε αυτόματα:

Διαμορφώνουμε τις ρυθμίσεις για την παρουσίαση της έκθεσης

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

Επιλέγοντας τον τύπο της αναφοράς " Λίστα... "και πατήστε το κουμπί" Περαιτέρω":

Σύρετε από την αριστερή στήλη στα δεξιά πεδία που θα εμφανιστούν στη λίστα και κάντε κλικ στο " Περαιτέρω":

Σύρετε από την αριστερή στήλη στο δεξί περιθώριο " Χρώμα"- θα είναι ομαδοποίησηγραμμές στην έκθεση. Κάντε κλικ " Εντάξει":

Και εδώ είναι το αποτέλεσμα της εργασίας του κατασκευαστή. Η ιεραρχία της έκθεσής μας:

  • αναφορά στο σύνολό της
  • ομαδοποίηση "Χρώμα"
  • λεπτομερείς εγγραφές - γραμμές με ονόματα τροφίμων

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

Αλλαγή της σειράς των στηλών

Αλλά ας αλλάξτε τη σειράστήλες (πάνω και κάτω βέλη) έτσι ώστε να μοιάζει με την παρακάτω εικόνα:

Ας αποθηκεύσουμε την αναφορά και την ανοίγουμε ξανά σε λειτουργία χρήστη:

Τέλεια, πολύ καλύτερα.

Συνοψίζοντας (ποσότητα) ανά περιεκτικότητα σε θερμίδες

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

Για αυτό υπάρχει ένας μηχανισμός υπολογισμού των πόρων.

Μεταβείτε στο " Πόροι"και σύρετε το πεδίο" Περιεκτικότητα σε θερμίδες"(θα το συνοψίσουμε) από την αριστερή στήλη προς τα δεξιά.

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

Αποθηκεύουμε και δημιουργούμε μια αναφορά:

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

Συνοψίζοντας (μέσος όρος) ανά περιεκτικότητα σε θερμίδες

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

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

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

Μεταβείτε στον σελιδοδείκτη " Υπολογιζόμενα πεδία"και κάντε κλικ πράσινοςσύμβολο συν:

Σε μια κολόνα " Διαδρομή δεδομένων"γράψτε το όνομα του νέου πεδίου ( μαζί, χωρίς κενά). Αφήστε το να λέγεται " Μέση περιεκτικότητα σε θερμίδες"και στη στήλη" Εκφραση"γράφουμε το όνομα ενός υπάρχοντος πεδίου, βάσει του οποίου θα υπολογιστεί το νέο πεδίο. Γράφουμε εκεί" Περιεκτικότητα σε θερμίδες". Στήλη" Επικεφαλίδα"θα συμπληρωθεί αυτόματα.

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

Ας το κάνουμε δεύτεροςτρόπος. Για να το κάνετε αυτό, μεταβείτε στο " Ρυθμίσεις", επιλέξτε" Κανω ΑΝΑΦΟΡΑ"(τελικά, θέλουμε να προσθέσουμε το πεδίο ως σύνολο στην αναφορά), επιλέξτε την παρακάτω καρτέλα" Επιλεγμένα πεδία"και σύρετε το πεδίο" Μέση περιεκτικότητα σε θερμίδες"από την αριστερή στήλη προς τα δεξιά:

Αποδείχθηκε έτσι:

Αποθηκεύουμε και δημιουργούμε μια αναφορά:

Το πεδίο εμφανίστηκε και βλέπουμε ότι οι τιμές του είναι οι τιμές του πεδίου "Περιεχόμενο θερμίδων". Εξοχος!

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

Επιπλέον, στη στήλη " Εκφραση"επιλέγω" Μέσος όρος (Μέση θερμίδα)":

Αποθηκεύουμε και δημιουργούμε μια αναφορά:

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

Ξέρετε γιατί εμφανίστηκαν (τιμές όχι ανά ομάδα); Γιατί όταν προσθέσαμε το πεδίο " Μέση περιεκτικότητα σε θερμίδες"στις ρυθμίσεις αναφοράς, στο δεύτερο βήμα που επιλέξαμε ολόκληρη την έκθεση ως σύνολοκαι αυτό το νέο πεδίο μπήκε στο στοιχείο " Λεπτομερής ρεκόρ".

Ας διορθώσουμε το σφάλμα. Για να γίνει αυτό, ας επιστρέψουμε στο " Ρυθμίσεις", επιλέξτε" Αναλυτικά αρχεία"πρώτα από πάνω (βήμα 2) και μετά" Αναλυτικά αρχεία"παρακάτω (βήμα 3), μεταβείτε στην καρτέλα" Επιλεγμένο πεδία"και θα δούμε ένα στοιχείο στη δεξιά στήλη του" Αυτο".

Στοιχείο " Αυτο"δεν είναι ένα πεδίο. Αυτά είναι πολλά πεδία που φτάνουν εδώ αυτόματα με βάση τις υψηλότερες ρυθμίσεις.

Για να δείτε ποια είναι αυτά τα πεδία - κάντε κλικ στο " Αυτο" σωστάκουμπί και επιλέξτε το στοιχείο " Επεκτείνουν":

Στοιχείο " Αυτο"επεκτάθηκε στα ακόλουθα πεδία:

Και εδώ είναι το πεδίο μας " Μέση περιεκτικότητα σε θερμίδες"που έφτασε εδώ από το σημείο" Κανω ΑΝΑΦΟΡΑ«όταν τον σέρναμε εκεί απογείωσηπλαίσιο ελέγχου δίπλα σε αυτό το πεδίο για να αφαιρέσετε την έξοδό του.

Η κατάλληλη χρήση του σχήματος σύνθεσης δεδομένων (ACS) σας επιτρέπει:

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

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

Τι είναι υπολογισμένο πεδίο

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

Το γεγονός είναι ότι το ACS είναι κάτι περισσότερο από απλώς το αποτέλεσμα της εκτέλεσης του ερωτήματος και αυτό είναι απόλυτα ορατό από τη φόρμα δημιουργίας ενός σχήματος (Εικ. 1).

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

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

Ας ακολουθήσουμε αυτήν τη λίστα και πάμε.

Ένας πίνακας τιμών σε ένα κελί

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


Έτσι, δημιουργήσαμε ένα επιπλέον υπολογιζόμενο πεδίο στο σχήμα μας.


Όπως μπορείτε να δείτε από το παραπάνω παράδειγμα, δεν υπάρχουν δυσκολίες στην προσθήκη και επεξεργασία υπολογισμένων πεδίων. Χρησιμοποιήσαμε δύο συναρτήσεις: Array () και JoinStrings ().

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

  1. Διαχωριστής στοιχείων - υποδεικνύει ποιος χαρακτήρας θα διαχωρίσει ένα στοιχείο ενός πίνακα ή μία γραμμή ενός πίνακα τιμών από μια άλλη (στην περίπτωσή μας, παραλείψαμε αυτήν την παράμετρο και ένα διάλειμμα γραμμής εκχωρήθηκε από προεπιλογή).
  2. Ο διαχωριστής στήλης είναι ένας χαρακτήρας που χρησιμοποιείται για τον διαχωρισμό των στηλών ενός πίνακα τιμών (το ερωτηματικό χρησιμοποιείται από προεπιλογή).

Πρόσβαση στις λειτουργίες εξαγωγής μιας κοινής μονάδας

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

Μερικοί σημαντικά σημεία:

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

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


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

Σύνδεση εκφράσεων γλώσσας

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

  1. Υπολογίστε το μέσο κόστος του αντικειμένου.
  2. Όλα τα είδη ενδιαφέροντος.
  3. Υπολογισμοί μέσων κερδών κ.λπ.

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

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

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

Για παράδειγμα, μπορείτε να λάβετε το ποσό του εγγράφου από την προηγούμενη γραμμή του ερωτήματός μας, καθορίζοντας την τιμή Υπολογισμός έκφρασης ("Ποσό εγγράφου", "Προηγούμενο άθροισμα") στο πεδίο "Έκφραση".

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

  1. αθροιστικό σύνολο στην ομάδα
  2. το τρέχον σύνολο στο crosstab?
  3. λήψη της προηγούμενης τιμής.
  4. έξοδος PM σε μία γραμμή.

1. Λήψη του δείκτη σε αθροιστική βάση

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

Εάν θέλετε να λάβετε τον αριθμό των αγαθών σε ένα αθροιστικό σύνολο στο επίπεδο λεπτομερών εγγραφών, τότε η συνάρτηση Υπολογισμός έκφρασης έχει οριστεί για το υπολογιζόμενο πεδίο στην καρτέλα "Υπολογιζόμενα πεδία" (βλ. Εικόνα 3).
Ανάλογα με το επίπεδο απόκτησης του αθροιστικού συνόλου, δημιουργούμε μια ομαδοποίηση (βλ. Εικόνα 4): σε επίπεδο πόρων - ομαδοποίηση κατά αγαθά, σε επίπεδο DZ - ομαδοποίηση λεπτομερών αρχείων.
Σχήμα 4. Ομαδοποιήσεις της έκθεσης με αθροιστικό σύνολο

2. Λήψη της τιμής του δείκτη από την προηγούμενη γραμμή

Ας πάρουμε τη συναλλαγματική ισοτιμία για την ημερομηνία και την προηγούμενη ημερομηνία. Για να το κάνετε αυτό, δημιουργήστε ένα υπολογιζόμενο πεδίο και γράψτε την ακόλουθη έκφραση στο πεδίο έκφρασης (δείτε το Σχήμα 5):
Υπολογισμός έκφρασης (μάθημα, προηγούμενο, προηγούμενο)
που θα λάβει την προηγούμενη τιμή της συναλλαγματικής ισοτιμίας για τρέχουσα γραμμή, η τελευταία παράμετρος της συνάρτησης περιορίζει την ανάκτηση δεδομένων.
Δεδομένου ότι εργαζόμαστε σε επίπεδο λεπτομερών εγγραφών, μεταβείτε αμέσως στην καρτέλα "Ρυθμίσεις" και δημιουργήστε μια ομαδοποίηση - λεπτομερείς εγγραφές.

3. Λήψη ενός δείκτη σε ένα αθροιστικό σύνολο σε μια εγκάρσια καρτέλα

Ας πάρουμε τον αριθμό των αγαθών σε αθροιστική βάση στο πλαίσιο της περιόδου. Για να γίνει αυτό, δημιουργούμε ένα υπολογιζόμενο πεδίο (βλ. Εικόνα 1). Στην καρτέλα "Πόροι" για το υπολογιζόμενο πεδίο, θα καθορίσουμε την ακόλουθη έκφραση (βλ. Εικόνα 6):
Υπολογίστε την έκφραση ("Άθροισμα (NumberTurnover)", "Period", "First", "Current")
το οποίο, σε επίπεδο ομαδοποίησης, θα υπολογίσει την ποσότητα αγαθών στο διάστημα από την πρώτη γραμμή στην τρέχουσα, στο πλαίσιο της περιόδου για κάθε στοιχείο.
Στην καρτέλα "Ρυθμίσεις", δημιουργήστε έναν πίνακα ομαδοποιημένο κατά στοιχείο σε μια σειρά και ομαδοποιημένο κατά περίοδο σε μια στήλη (βλ. Εικόνα 7).

4. Έξοδος δεδομένων πίνακα σε μία γραμμή

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