Γλώσσα έκφρασης συστήματος σύνθεσης δεδομένων (1Cv8). Διάγραμμα διάταξης δεδομένων (1C SKD) Υπολογισμένα πεδία διαγράμματος διάταξης δεδομένων

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

Πρόσθετες ρυθμίσεις για πεδία ACS.

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

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

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

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

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

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

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

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

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

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

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

1. Ρυθμίστε ένα αίτημα στο σύστημα ελέγχου πρόσβασης.

2. Ρυθμίστε τα υπολογισμένα πεδία στο σύστημα ελέγχου πρόσβασης

3. Διαμορφώστε τη διάταξη δεδομένων στην καρτέλα ρυθμίσεων

4. Εκκινήστε το 1C Enterprise 8.2.14. Ανοίξτε την αναφορά. Σχηματίζουμε, λαμβάνουμε.

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

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

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

2. COMPUTEEXPRESSION()

Σύνταξη:

CalculateExpression(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Περιγραφή:

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

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

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

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

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

Κατά τη δημιουργία μιας παράστασης για τη συνάρτηση CalculateExpression, ο συνθέτης διάταξης, εάν η παράσταση σειράς περιέχει πεδία που δεν μπορούν να χρησιμοποιηθούν στην ομαδοποίηση, αντικαθιστά τη συνάρτηση CalculateExpression με NULL.

Επιλογές

<Выражение>

Τύπος: String. Η έκφραση που πρέπει να αξιολογηθεί.

<Группировка>

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

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

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

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

<ОбластьВычисления>

Τύπος: String. Η παράμετρος μπορεί να λάβει τις ακόλουθες τιμές:

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

Κατά τον υπολογισμό μιας συνάρτησης CalculateExpression()με την τιμή Non-Resource Grouping για εγγραφές ομάδας που δεν είναι ομαδοποιήσεις πόρων, η συνάρτηση υπολογίζεται με τον ίδιο τρόπο που θα υπολογίζονταν εάν η τιμή της παραμέτρου ήταν ίση με την τιμή ομαδοποίησης.

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

<Начало>

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

<Конец>

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

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

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

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

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

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

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

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

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

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

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

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

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

  • BoundaryValue. Η ανάγκη λήψης μιας εγγραφής με την καθορισμένη τιμή. Μετά τη λέξη LimitingValues ​​σε παρένθεση, πρέπει να υποδείξετε την έκφραση με την τιμή της οποίας θέλετε να ξεκινήσετε το τμήμα, το πρώτο πεδίο παραγγελίας.

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

<Сортировка>

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

<ИерархическаяСортировка>

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

<ОбработкаОдинаковыхЗначенийПорядка>

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

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

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

ημερομηνία Πλήρες όνομα Εννοια
1 1 Ιανουαρίου 2001 Ιβάνοφ Μ. 10
2 02 Ιανουαρίου 2001 Πετρόφ Σ. 20
3 03 Ιανουαρίου 2001 Σιντόροφ Ρ. 30
4 04 Ιανουαρίου 2001 Πετρόφ Σ. 40

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

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

§ εάν το τμήμα υπολογισμού οριστεί ως Current, Current (αντίστοιχα, οι παράμετροι Start και End), τότε για την εγγραφή 2 αυτό το τμήμα θα αποτελείται από μία εγγραφή 2. Η έκφραση CalculateExpression(“Sum (Value)”, Current, Current) είναι ίσο με 20.

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

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

§ εάν το τμήμα υπολογισμού ορίζεται ως Current, Current (αντίστοιχα, οι παράμετροι Start και End), τότε για την εγγραφή 2 αυτό το τμήμα θα αποτελείται από τις εγγραφές 2 και 3. Η έκφραση CalculateExpression("Sum (Value)", Current, Current) θα ισούται με 50.

Όταν καθορίζετε μια τιμή παραμέτρου ίση με το Together, στις παραμέτρους Έναρξη και Τέλος δεν μπορείτε να καθορίσετε μια μετατόπιση για τις θέσεις First, Last, Previous, Next.

CalculateExpression("Sum(SumTurnover)", "First", "Current")

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

CalculateExpression ("Ποσοστό", "Προηγούμενο")

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

CalculateExpressionWithGroupArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

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

CalculateExpressionWithGroupValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

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

ValueFilled(<Выражение>) – Επιστρέφει True εάν η τιμή είναι διαφορετική από την προεπιλεγμένη τιμή αυτού του τύπου, εκτός από NULL, εκτός από μια κενή αναφορά, διαφορετική από την Undefined. Οι τιμές Boole ελέγχονται για NULL. Οι συμβολοσειρές ελέγχονται για την απουσία χαρακτήρων χωρίς κενά

Μορφή(<Выражение>, <Форматная строка>) – Λήψη μιας μορφοποιημένης συμβολοσειράς της τιμής που πέρασε. Η συμβολοσειρά μορφοποίησης ορίζεται σύμφωνα με τη συμβολοσειρά μορφοποίησης του συστήματος 1C:Enterprise.

Υποσυμβολοσειρά(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) – Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει μια υποσυμβολοσειρά από μια συμβολοσειρά.

Μήκος γραμμής(<Выражение>) – Η συνάρτηση έχει σχεδιαστεί για να προσδιορίζει το μήκος μιας συμβολοσειράς. Παράμετρος - έκφραση συμβολοσειράς

Γραμμή(<Выражение>) – Εάν ένας πίνακας μεταβιβαστεί ως παράμετρος, η συνάρτηση επιστρέφει μια συμβολοσειρά που περιέχει αναπαραστάσεις συμβολοσειράς όλων των στοιχείων του πίνακα, διαχωρισμένες με τους χαρακτήρες "; ". Εάν ένας πίνακας τιμών μεταβιβαστεί ως παράμετρος, η συνάρτηση επιστρέφει μια συμβολοσειρά που περιέχει τις αναπαραστάσεις συμβολοσειρών όλων των σειρών του πίνακα τιμών, με τις αναπαραστάσεις των κελιών κάθε γραμμής να διαχωρίζονται με τους χαρακτήρες ". ", και οι γραμμές είναι σύμβολο τροφοδοσίας γραμμής. Εάν οποιοδήποτε στοιχείο έχει μια κενή αναπαράσταση συμβολοσειράς, τότε η συμβολοσειρά εμφανίζεται αντί για την αναπαράστασή της<Пустое значение>.

Διάγραμμα διάταξης δεδομένων (1C SKD)- ένας βολικός σχεδιαστής για τη δημιουργία σύνθετων αναφορών σε προϊόντα λογισμικού 1C: Enterprise που συμβάλλουν στην ανάπτυξη και την παρακολούθηση του αυτοματισμού παραγωγής, επιτρέποντάς τους να γίνουν όσο το δυνατόν πιο ευέλικτοι και όμορφοι σε ελάχιστο χρόνο. Ένα επιπλέον πλεονέκτημα του Σχεδίου Σύνθεσης Δεδομένων (1C SKD) είναι η αυτόματη δημιουργία μιας ελεγχόμενης φόρμας αναφοράς και με την περαιτέρω ανάπτυξη αυτής της περιοχής, είναι σημαντικός παράγοντας κατά την επιλογή μιας μεθόδου ανάπτυξης αναφοράς. Ωστόσο, λόγω της πολυπλοκότητας της δομής του Σχεδίου Σύνθεσης Δεδομένων (1C SKD) και του τεράστιου αριθμού ρυθμίσεων, συχνά οδηγεί σε μεγαλύτερη ανάπτυξη της αναφοράς από ό,τι μέσω του "σχεδιαστή φόρμας εξόδου". Επομένως, ένας προγραμματιστής 1C πρέπει να κατανοήσει όλες τις περιπλοκές του Σχεδίου Σύνθεσης Δεδομένων (1C DCS) προκειμένου να επιταχύνει περαιτέρω τον χρόνο ανάπτυξης για τη δημιουργία αναφορών.

Ας δούμε τις τρεις πρώτες καρτέλες του Σχεδίου Σύνθεσης Δεδομένων (1C SKD) - σύνολο δεδομένων, συνδέσεις συνόλων δεδομένων και υπολογισμένα πεδία.

Σύνολο δεδομένων σε 1C SKD

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

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

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

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

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

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

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

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

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

&OnClient

Εκτύπωση διαδικασίας()

OurReport = PrintOnServer(); //καλέστε τη συνάρτηση στο διακομιστή

OurReport.Show(); //εμφάνιση της αναφοράς που δημιουργήθηκε

Τέλος Διαδικασίας

&Στον διακομιστή

Λειτουργία PrintOnServer()

DocumentObject = FormAttributeValue("Object");

//τοποθετούμε το τμήμα του πίνακα Προϊόντα σε μια δομή με το όνομα ProductsSKD με τον ίδιο τρόπο που υποδείξαμε στο ίδιο το SKD το όνομα του αντικειμένου που περιέχει τα δεδομένα

Σύνολο δεδομένων = νέα δομή.

DataSet.Insert(“ProductsSKD”, DocumentObject.Products);

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

OurLayout = DocumentObject.GetLayout(“SKD”);

Ρυθμίσεις = OurLayout.DefaultSettings;

//δημιουργήστε μια διάταξη διάταξης δεδομένων με τις ρυθμίσεις μας

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);

//εκτέλεση σύνθεσης δεδομένων με το σύνολο δεδομένων μας

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Δημιουργούμε ένα έγγραφο υπολογιστικού φύλλου και εμφανίζουμε την αναφορά μας σε αυτό

ReportDocument = Νέο TabularDocument;

OutputProcessor = Νέο OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Αναφορά εγγράφου επιστροφής.

EndFunction

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

ΣΧΕΤΙΚΑ ΜΕ ενοποίηση

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

Έχουμε πίνακες:

Κατόπιν επικοινωνίας θα λάβουμε:

Και όταν συνδυάζονται:

Ας δούμε τώρα τη συμπλήρωση στηλών σε σύνολα δεδομένων (θα παραλείψουμε ορισμένες, καθώς σχετίζονται με άλλες καρτέλες· θα επιστρέψουμε σε αυτές σε μελλοντικά άρθρα):

- πεδίο, υποδείξτε το γενικό όνομα του χαρακτηριστικού.

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

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

- περιορισμός πεδίου, υποδείξτε τη διαθεσιμότητα αυτής της απαίτησης.

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

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

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

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

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

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

Συνδέσεις σετ δεδομένων σε 1C SKD

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

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

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

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

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

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

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

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

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

Ας περάσουμε από αυτή τη λίστα.

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

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


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


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

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

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

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

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

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

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

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


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

Διάταξη γλωσσικών εκφράσεων

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

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

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

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

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

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

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

    Στην πλατφόρμα 1C:Enterprise, ένας μηχανισμός που ονομάζεται «Σύστημα Σύνθεσης Δεδομένων» (συντομογραφία ως DCS) είναι υπεύθυνος για τη δημιουργία αναφορών. Σε αυτό το άρθρο θα προσπαθήσουμε να δώσουμε μια σύντομη περιγραφή της ιδέας και της αρχιτεκτονικής του μηχανισμού ACS και των δυνατοτήτων του.


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

    Λίγη ιστορία

    Στην πρώτη κιόλας έκδοση της πλατφόρμας 1C:Enterprise 8, έκδοση 8.0, οι αναφορές έγιναν ως εξής:
    1. Ένα ή περισσότερα ερωτήματα γράφτηκαν στη γλώσσα ερωτημάτων 1C (γλώσσα τύπου SQL, περισσότερα σχετικά παρακάτω).
    2. Γράφτηκε κώδικας που μετέφερε τα αποτελέσματα των εκτελούμενων ερωτημάτων σε ένα έγγραφο ή γράφημα υπολογιστικού φύλλου. Ο κώδικας θα μπορούσε επίσης να κάνει εργασία που δεν μπορούσε να γίνει σε ένα ερώτημα - για παράδειγμα, υπολόγιζε τιμές χρησιμοποιώντας την ενσωματωμένη γλώσσα 1C.
    Η προσέγγιση είναι απλή, αλλά όχι η πιο βολική - υπάρχουν ελάχιστες οπτικές ρυθμίσεις, όλα πρέπει να προγραμματιστούν "χέρι με χέρι". Και ένα από τα ατού εκείνη την εποχή της εντελώς νέας πλατφόρμας «1C:Enterprise 8» ήταν η ελαχιστοποίηση στην εφαρμογή λύσης του όγκου του κώδικα που έπρεπε να γραφτεί χειροκίνητα, ιδίως μέσω οπτικού σχεδιασμού. Θα ήταν λογικό να ακολουθήσουμε την ίδια διαδρομή στον μηχανισμό αναφοράς. Αυτό έγινε με την ανάπτυξη ενός νέου μηχανισμού - του συστήματος σύνθεσης δεδομένων.

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

    Διατύπωση του προβλήματος

    Το καθήκον ενώπιον της ομάδας ανάπτυξης ήταν να δημιουργήσει ένα σύστημα αναφοράς που δεν θα βασίζεται σε έναν αλγοριθμικό (δηλαδή, μέσω γραφής κώδικα), αλλά σε μια δηλωτική προσέγγιση για τη δημιουργία αναφορών. Και πιστεύουμε ότι το πρόβλημα έχει λυθεί με επιτυχία. Σύμφωνα με την εμπειρία μας, περίπου το 80% των απαιτούμενων αναφορών μπορεί να υλοποιηθεί χρησιμοποιώντας ACS χωρίς ούτε μία γραμμή κώδικα (εκτός από τη σύνταξη τύπων για υπολογισμένα πεδία), κυρίως μέσω οπτικών ρυθμίσεων.
    Η ανάπτυξη της πρώτης έκδοσης του SDS διήρκεσε περίπου 5 άτομα-έτη.

    Δύο γλώσσες

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

    Γλώσσα ερωτήματος

    Η γλώσσα ερωτήματος βασίζεται σε SQL και είναι εύκολο να μαθευτεί για όσους γνωρίζουν την SQL. Παράδειγμα αιτήματος:

    Είναι εύκολο να δείτε ανάλογα ενοτήτων τυπικά για ερωτήματα SQL - SELECT, FROM, GROUP BY, ORDER BY.

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

    • Πρόσβαση σε πεδία χρησιμοποιώντας μια τελεία. Εάν τα πεδία ενός πίνακα είναι τύπου αναφοράς (αποθηκεύουν συνδέσμους προς αντικείμενα ενός άλλου πίνακα), ο προγραμματιστής μπορεί να ανατρέξει σε αυτά στο κείμενο του αιτήματος μέσω του «.» και το σύστημα δεν περιορίζει τον αριθμό των επιπέδων ένθεσης τέτοιων συνδέσμων (για παράδειγμα, Παραγγελία Πελάτη. Συμφωνία. Οργανισμός. Τηλέφωνο).
    • Πολυδιάστατος και πολυεπίπεδος σχηματισμός αποτελεσμάτων. Τα σύνολα και τα υποσύνολα σχηματίζονται λαμβάνοντας υπόψη την ομαδοποίηση και την ιεραρχία, τα επίπεδα μπορούν να διασχιστούν με οποιαδήποτε σειρά με άθροιση και διασφαλίζεται η σωστή κατασκευή των συνόλων ανάλογα με τις χρονικές διαστάσεις.
    • Υποστήριξη εικονικών πινάκων. Οι εικονικοί πίνακες που παρέχονται από το σύστημα σάς επιτρέπουν να λαμβάνετε σχεδόν έτοιμα δεδομένα για τις περισσότερες εργασίες εφαρμογών χωρίς την ανάγκη δημιουργίας πολύπλοκων ερωτημάτων. Έτσι, ένας εικονικός πίνακας μπορεί να παρέχει δεδομένα για τα υπόλοιπα των προϊόντων ανά περιόδους σε μια συγκεκριμένη χρονική στιγμή. Ταυτόχρονα, οι εικονικοί πίνακες αξιοποιούν στο μέγιστο τις αποθηκευμένες πληροφορίες, για παράδειγμα, προηγούμενα υπολογισμένα σύνολα κ.λπ.
    • Προσωρινά τραπέζια. Η γλώσσα ερωτημάτων σάς επιτρέπει να χρησιμοποιείτε προσωρινούς πίνακες σε ερωτήματα. Με τη βοήθειά τους, μπορείτε να βελτιώσετε την απόδοση του ερωτήματος, σε ορισμένες περιπτώσεις να μειώσετε τον αριθμό των αποκλεισμών και να κάνετε το κείμενο του ερωτήματος πιο ευανάγνωστο.
    • Αιτήματα παρτίδας. Για να γίνει πιο βολική η εργασία με προσωρινούς πίνακες, η γλώσσα ερωτημάτων υποστηρίζει την εργασία με ερωτήματα παρτίδας - έτσι, η δημιουργία ενός προσωρινού πίνακα και η χρήση του τοποθετούνται σε ένα ερώτημα. Ένα αίτημα παρτίδας είναι μια ακολουθία αιτημάτων που χωρίζονται με ερωτηματικά (";"). Τα αιτήματα της παρτίδας εκτελούνται το ένα μετά το άλλο. Το αποτέλεσμα της εκτέλεσης ενός αιτήματος παρτίδας, ανάλογα με τη μέθοδο που χρησιμοποιείται, θα είναι είτε το αποτέλεσμα που επιστρέφεται από το τελευταίο αίτημα της παρτίδας, είτε μια σειρά αποτελεσμάτων από όλα τα ερωτήματα της παρτίδας με τη σειρά με την οποία ακολουθούν τα ερωτήματα της παρτίδας .
    • Ανάκτηση αναπαραστάσεων πεδίων αναφοράς. Κάθε πίνακας αντικειμένων (στον οποίο είναι αποθηκευμένο ένα βιβλίο αναφοράς ή ένα έγγραφο) έχει ένα εικονικό πεδίο - "Προβολή". Αυτό το πεδίο περιέχει μια αναπαράσταση κειμένου του αντικειμένου και διευκολύνει τη δουλειά του δημιουργού της αναφοράς. Έτσι, για ένα έγγραφο, αυτό το πεδίο περιέχει όλες τις βασικές πληροφορίες - το όνομα του τύπου του εγγράφου, τον αριθμό και την ημερομηνία του (για παράδειγμα, "Πώληση 000000003 από 07/06/2017 17:49:14"), αποθηκεύοντας τον προγραμματιστή από γράφοντας ένα υπολογισμένο πεδίο.
    • και τα λοιπά.
    Ο μηχανισμός αιτήματος τροποποιεί αυτόματα το αίτημα λαμβάνοντας υπόψη τους ρόλους στους οποίους ανήκει ο χρήστης για λογαριασμό του οποίου εκτελείται το αίτημα (δηλαδή, ο χρήστης θα δει μόνο τα δεδομένα που έχει το δικαίωμα να δει) και τις λειτουργικές επιλογές (δηλ. με αυτές που έχουν διαμορφωθεί στη λειτουργικότητα της λύσης εφαρμογής).

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

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

    • ΕΠΙΛΕΓΩ. Αυτή η πρόταση περιγράφει τα πεδία που ο χρήστης θα μπορεί να επιλέξει για έξοδο. Μετά από αυτήν τη λέξη-κλειδί, παρατίθενται ψευδώνυμα πεδίων από τη λίστα επιλογής κύριου ερωτήματος που θα είναι διαθέσιμα για διαμόρφωση, διαχωρισμένα με κόμμα. Παράδειγμα: (ΕΠΙΛΟΓΗ Είδους, Αποθήκη)
    • ΟΠΟΥ. Περιγράφονται τα πεδία στα οποία ο χρήστης μπορεί να εφαρμόσει την επιλογή. Αυτή η πρόταση χρησιμοποιεί πεδία πίνακα. Δεν επιτρέπεται η χρήση ψευδωνύμων πεδίων λίστας επιλογής. Κάθε μέρος της ένωσης μπορεί να περιέχει το δικό του στοιχείο WHERE. Παραδείγματα: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • και τα λοιπά.
    Παράδειγμα χρήσης επεκτάσεων:

    Γλώσσα έκφρασης σύνθεσης δεδομένων

    Η γλώσσα έκφρασης σύνθεσης δεδομένων έχει σχεδιαστεί για να γράφει εκφράσεις που χρησιμοποιούνται, ειδικότερα, για την περιγραφή προσαρμοσμένων εκφράσεων πεδίων. Το SKD σάς επιτρέπει να ορίζετε προσαρμοσμένα πεδία σε μια αναφορά χρησιμοποιώντας είτε τις δικές σας εκφράσεις είτε σύνολα επιλογών με προϋποθέσεις για την επιλογή τους (ανάλογα με το CASE στην SQL). Τα προσαρμοσμένα πεδία είναι παρόμοια με τα υπολογισμένα πεδία. Μπορούν να ρυθμιστούν τόσο στον διαμορφωτή όσο και σε λειτουργία 1C:Enterprise, αλλά οι λειτουργίες κοινών λειτουργικών μονάδων δεν μπορούν να χρησιμοποιηθούν σε προσαρμοσμένες εκφράσεις πεδίων. Επομένως, τα προσαρμοσμένα πεδία προορίζονται για τον χρήστη και όχι για τον προγραμματιστή.

    Παράδειγμα:

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

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

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

    Το αποτέλεσμα της εκκίνησης του σχεδιαστή ερωτήματος θα είναι το κείμενο ερωτήματος (στη γλώσσα ερωτήματος 1C:Enterprise). Αυτό το κείμενο μπορεί να προσαρμοστεί χειροκίνητα εάν είναι απαραίτητο:

    Μπορεί να υπάρχουν πολλά σύνολα δεδομένων σε ένα σχήμα διάταξης δεδομένων, τα σύνολα δεδομένων μπορούν να συνδεθούν στη διάταξη με οποιονδήποτε τρόπο, μπορούν να προστεθούν υπολογισμένα πεδία, μπορούν να καθοριστούν παράμετροι αναφοράς κ.λπ. Αξίζει να αναφέρουμε ένα ενδιαφέρον χαρακτηριστικό του μηχανισμού ερωτημάτων στο 1C:Enterprise. Τα ερωτήματα μεταφράζονται τελικά σε μια διάλεκτο της SQL ειδικά για το DBMS με το οποίο λειτουργεί άμεσα η εφαρμογή. Γενικά, προσπαθούμε να χρησιμοποιήσουμε τις δυνατότητες των διακομιστών DBMS στο μέγιστο (περιοριζόμαστε από το γεγονός ότι χρησιμοποιούμε μόνο εκείνες τις δυνατότητες που είναι ταυτόχρονα διαθέσιμες σε όλα τα DBMS που υποστηρίζονται από την πλατφόρμα 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Έτσι, σε επίπεδο ερωτήματος στα υπολογισμένα πεδία, μπορούμε να χρησιμοποιήσουμε μόνο εκείνες τις συναρτήσεις που μεταφράζονται σε SQL.

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


    Προσθήκη προσαρμοσμένων πεδίων

    Μπορείτε να προσθέσετε έναν αυθαίρετο αριθμό πινάκων και γραφημάτων στην αναφορά:


    Σχεδιαστής έκθεσης


    Αναφορά χρόνου εκτέλεσης

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

    Η διαδικασία κατασκευής και δημιουργίας μιας αναφοράς μπορεί να περιγραφεί εν συντομία ως εξής:

    • Ο προγραμματιστής σε χρόνο σχεδίασης με τη βοήθεια ενός σχεδιαστή (ή σε χρόνο εκτέλεσης χρησιμοποιώντας κώδικα) καθορίζει το σχήμα διάταξης δεδομένων:
      • Κείμενο του αιτήματος/αιτημάτων
      • Περιγραφή υπολογισμένων πεδίων
      • Σχέσεις μεταξύ αιτημάτων (εάν υπάρχουν πολλά από αυτά)
      • Επιλογές αναφοράς
      • Προεπιλεγμένες ρυθμίσεις
      • Και τα λοιπά.
    • Οι παραπάνω ρυθμίσεις αποθηκεύονται στη διάταξη
    • Ο χρήστης ανοίγει την αναφορά
      • Ενδεχομένως να κάνει πρόσθετες ρυθμίσεις (για παράδειγμα, αλλάζει τις τιμές παραμέτρων)
      • Κάντε κλικ στο κουμπί «Δημιουργία».
    • Οι ρυθμίσεις χρήστη εφαρμόζονται στο σχήμα σύνθεσης δεδομένων που ορίζεται από τον προγραμματιστή.
    • Σχηματίζεται μια διάταξη ενδιάμεσης σύνθεσης δεδομένων, η οποία περιέχει οδηγίες για το από πού να λαμβάνετε δεδομένα. Συγκεκριμένα, προσαρμόζονται τα ερωτήματα που καθορίζονται στη διάταξη. Έτσι, τα πεδία που δεν χρησιμοποιούνται στην αναφορά αφαιρούνται από το αίτημα (αυτό γίνεται για να ελαχιστοποιηθεί ο όγκος των δεδομένων που λαμβάνονται). Όλα τα πεδία που συμμετέχουν σε υπολογισμένους τύπους πεδίων προστίθενται στο ερώτημα.
    • Ο επεξεργαστής σύνθεσης δεδομένων μπαίνει στο παιχνίδι. Ο επεξεργαστής διάταξης εκτελεί ερωτήματα, συνδέει σύνολα δεδομένων, υπολογίζει τιμές για υπολογισμένα πεδία και πόρους και εκτελεί ομαδοποίηση. Με μια λέξη, κάνει όλους τους υπολογισμούς που δεν έγιναν σε επίπεδο DBMS.
    • Ο επεξεργαστής εξόδου δεδομένων εκκινεί ένα αίτημα για εκτέλεση και εμφανίζει τα δεδομένα που λαμβάνονται σε ένα έγγραφο υπολογιστικού φύλλου, γράφημα κ.λπ.


    Η διαδικασία δημιουργίας αναφοράς με χρήση του μηχανισμού ACS

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

    Προσαρμοσμένες ρυθμίσεις

    Όλα τα εργαλεία ACS είναι διαθέσιμα τόσο στον προγραμματιστή όσο και στον τελικό χρήστη. Όμως η πρακτική έχει δείξει ότι ο τελικός χρήστης συχνά εκφοβίζεται από την αφθονία των δυνατοτήτων του εργαλείου. Επιπλέον, στις περισσότερες περιπτώσεις, ο τελικός χρήστης δεν χρειάζεται όλη την ισχύ των ρυθμίσεων - αρκεί να έχει γρήγορη πρόσβαση στη ρύθμιση μιας ή δύο παραμέτρων αναφοράς (για παράδειγμα, περίοδος και αντισυμβαλλόμενος). Ξεκινώντας από μια συγκεκριμένη έκδοση της πλατφόρμας, ο προγραμματιστής της αναφοράς έχει την ευκαιρία να επισημάνει ποιες ρυθμίσεις αναφοράς είναι διαθέσιμες στον χρήστη. Αυτό γίνεται χρησιμοποιώντας το πλαίσιο ελέγχου "Συμπερίληψη στις ρυθμίσεις χρήστη". Επίσης, οι ρυθμίσεις αναφοράς έχουν πλέον μια σημαία "Λειτουργία εμφάνισης", η οποία λαμβάνει μία από τις τρεις τιμές:
    • Γρήγορη πρόσβαση. Η ρύθμιση θα εμφανιστεί απευθείας στο επάνω μέρος του παραθύρου αναφοράς.
    • Συνήθης. Η ρύθμιση θα είναι διαθέσιμη μέσω του κουμπιού "Ρυθμίσεις".
    • Μη διαθέσιμος. Η ρύθμιση δεν θα είναι διαθέσιμη στον τελικό χρήστη.


    Ρύθμιση λειτουργίας εμφάνισης στο χρόνο σχεδίασης


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

    αναπτυξιακά σχέδια

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