Η γλώσσα έκφρασης του συστήματος σύνθεσης δεδομένων έχει σχεδιαστεί για να γράφει εκφράσεις που χρησιμοποιούνται σε διάφορα μέρη του συστήματος.
Οι εκφράσεις χρησιμοποιούνται στα ακόλουθα υποσυστήματα:
Η έκφραση μπορεί να περιέχει κυριολεκτικά. Οι ακόλουθοι τύποι κυριολεκτικών είναι δυνατοί:
Μια κυριολεκτική συμβολοσειρά γράφεται με χαρακτήρες "", για παράδειγμα:
“Στρινγκ κυριολεκτικά”
Εάν χρειάζεται να χρησιμοποιήσετε τον χαρακτήρα «» μέσα σε μια συμβολοσειρά κυριολεκτικά, θα πρέπει να χρησιμοποιήσετε δύο τέτοιους χαρακτήρες.
Για παράδειγμα:
“Κυριολεκτικά ““σε εισαγωγικά”””
Ο αριθμός γράφεται χωρίς κενά, σε δεκαδική μορφή. Το κλασματικό μέρος διαχωρίζεται χρησιμοποιώντας το σύμβολο "." Για παράδειγμα:
10.5 200
Η κυριολεκτική ημερομηνία γράφεται χρησιμοποιώντας την κυριολεκτική ημερομηνία DATETIME. Μετά από αυτό λέξη-κλειδί, σε αγκύλες, χωρισμένα με κόμματα, παρατίθενται το έτος, ο μήνας, η ημέρα, οι ώρες, τα λεπτά, τα δευτερόλεπτα. Δεν απαιτείται προδιαγραφή χρόνου.
Για παράδειγμα:
DATETIME(1975, 1, 06) – 6 Ιανουαρίου 1975 DATETIME(2006, 12, 2, 23, 56, 57) – 2 Δεκεμβρίου 2006, 23 ώρες 56 λεπτά 57 δευτερόλεπτα, 23 ώρες 56 λεπτά 57 δευτερόλεπτα
Οι τιμές Boole μπορούν να γραφτούν χρησιμοποιώντας τα κυριολεκτικά True (True), False (False).
Για τον καθορισμό κυριολεκτικών άλλων τύπων (αριθμήσεις συστήματος, προκαθορισμένα δεδομένα), χρησιμοποιείται η λέξη-κλειδί Τιμή, ακολουθούμενη από το όνομα της κυριολεξίας σε παρένθεση.
Τιμή (Τύπος λογαριασμού. Ενεργός)
Αυτή η λειτουργία προορίζεται να αλλάξει το πρόσημο ενός αριθμού στο αντίθετο πρόσημο. Για παράδειγμα:
Πωλήσεις.Ποσότητα
Αυτή η λειτουργία δεν εκτελεί καμία ενέργεια στον αριθμό. Για παράδειγμα:
Πωλήσεις.Ποσότητα
Αυτή η λειτουργία προορίζεται για τον υπολογισμό της διαφοράς δύο αριθμών. Για παράδειγμα:
ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357
Αυτή η λειτουργία έχει σχεδιαστεί για τον υπολογισμό του αθροίσματος δύο αριθμών. Για παράδειγμα:
RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357
Αυτή η λειτουργία έχει σχεδιαστεί για να υπολογίζει το γινόμενο δύο αριθμών. Για παράδειγμα:
Ονοματολογία.Τιμή * 1,2 2 * 3,14
Αυτή η λειτουργία έχει σχεδιαστεί για να λαμβάνει το αποτέλεσμα της διαίρεσης ενός τελεστή με έναν άλλο. Για παράδειγμα:
Ονοματολογία.Τιμή / 1,2 2 / 3,14
Αυτή η λειτουργία έχει σχεδιαστεί για να λαμβάνει το υπόλοιπο όταν ένας τελεστής διαιρείται με έναν άλλο. Για παράδειγμα:
Ονοματολογία Τιμή % 1,2 2 % 3,14
Αυτή η λειτουργία έχει σχεδιαστεί για να ενώνει δύο χορδές. Για παράδειγμα:
Ονοματολογία.Άρθρο + “: ”+ Ονοματολογία.Όνομα
Αυτή η λειτουργία ελέγχει εάν η συμβολοσειρά ταιριάζει με το μοτίβο που πέρασε.
Η τιμή του τελεστή LIKE είναι TRUE εάν η τιμή<Выражения>ικανοποιεί το μοτίβο, και FALSE διαφορετικά.
Οι παρακάτω χαρακτήρες στο<Строке_шаблона>έχουν νόημα διαφορετικό από έναν άλλο χαρακτήρα στη γραμμή:
Οποιοδήποτε άλλο σύμβολο σημαίνει τον εαυτό του και δεν φέρει κανένα πρόσθετο φορτίο. Εάν ένας από τους χαρακτήρες που αναφέρονται πρέπει να γραφτεί ως ο ίδιος, τότε πρέπει να προηγείται<Спецсимвол>, που καθορίζεται μετά τη λέξη-κλειδί ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ (ESCAPE).
Για παράδειγμα, πρότυπο
"%ABV[abvg]\_abv%" ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ "\"
σημαίνει μια υποσυμβολοσειρά που αποτελείται από μια ακολουθία χαρακτήρων: το γράμμα A; γράμματα Β; γράμματα Β; ένα ψηφίο? ένα από τα γράμματα a, b, c ή d. κατω παυλα; γράμματα α; γράμματα β? γράμματα v. Επιπλέον, αυτή η ακολουθία μπορεί να εντοπιστεί ξεκινώντας από μια αυθαίρετη θέση στη γραμμή.
Αυτή η πράξη προορίζεται να συγκρίνει δύο τελεστές για ισότητα. Για παράδειγμα:
Sales.Counterparty = Sales.NomenclatureMainSupplier
Αυτή η πράξη προορίζεται να συγκρίνει δύο τελεστές για ανισότητα. Για παράδειγμα:
Πωλήσεις.Αντισυμβαλλόμενος<>Sales.NomenclatureMainSupplier
Αυτή η λειτουργία έχει σχεδιαστεί για να ελέγχει ότι ο πρώτος τελεστής είναι μικρότερος από τον δεύτερο. Για παράδειγμα:
SalesTurrent.Amount< ПродажиПрошлые.Сумма
Αυτή η λειτουργία έχει σχεδιαστεί για να ελέγχει ότι ο πρώτος τελεστής είναι μεγαλύτερος από τον δεύτερο. Για παράδειγμα:
SalesCurrent.Sum > SalesPast.Sum
Αυτή η λειτουργία έχει σχεδιαστεί για να ελέγχει ότι ο πρώτος τελεστής είναι μικρότερος ή ίσος με τον δεύτερο. Για παράδειγμα:
SalesTurrent.Amount<= ПродажиПрошлые.Сумма
Αυτή η λειτουργία έχει σχεδιαστεί για να ελέγχει ότι ο πρώτος τελεστής είναι μεγαλύτερος ή ίσος με τον δεύτερο. Για παράδειγμα:
SalesCurrent.Amount >= SalesPast.Amount
Αυτή η λειτουργία ελέγχει για την παρουσία μιας τιμής στη λίστα τιμών που πέρασε. Το αποτέλεσμα της πράξης θα είναι True εάν βρεθεί η τιμή ή False διαφορετικά. Για παράδειγμα:
Στοιχείο Β (&Προϊόν1, &Προϊόν2)
Η λειτουργία ελέγχει την παρουσία μιας τιμής στο καθορισμένο σύνολο δεδομένων. Το σύνολο δεδομένων επικύρωσης πρέπει να περιέχει ένα πεδίο. Για παράδειγμα:
Πωλήσεις Αντισυμβαλλόμενοι σε Αντισυμβαλλόμενους
Αυτή η λειτουργία επιστρέφει True εάν η τιμή είναι NULL. Για παράδειγμα:
Πωλήσεις.Ο αντισυμβαλλόμενος ΕΙΝΑΙ ΜΗΧΑΝΟΣ
Αυτή η λειτουργία επιστρέφει True εάν η τιμή δεν είναι NULL. Για παράδειγμα:
Οι πωλήσεις ΔΕΝ ΕΙΝΑΙ ΜΗΧΑΝΕΣ
Οι λογικές πράξεις δέχονται εκφράσεις τύπου Boolean ως τελεστές.
Η πράξη NOT επιστρέφει True εάν ο τελεστής της είναι False και False εάν ο τελεστής της είναι True. Για παράδειγμα:
NOT Document. Consignee = Document. Consignor
Η πράξη AND επιστρέφει True αν και οι δύο τελεστές είναι True και False αν ένας από τους τελεστές είναι False. Για παράδειγμα:
Document. Consignee = Document. Consignor AND Document. Consignee = &Counterparty
Η λειτουργία OR επιστρέφει True εάν ένας από τους τελεστές της είναι True και False αν και οι δύο τελεστές είναι False. Για παράδειγμα:
Document.Consignee = Document. Consignor OR Document. Consignee = &Counterparty
Οι συγκεντρωτικές συναρτήσεις εκτελούν κάποια ενέργεια σε ένα σύνολο δεδομένων.
Η συνάρτηση Sum aggregate υπολογίζει το άθροισμα των τιμών των παραστάσεων που της μεταβιβάστηκαν ως όρισμα για όλες τις εγγραφές λεπτομερειών. Για παράδειγμα:
Amount(Sales.AmountTurnover)
Η συνάρτηση Count υπολογίζει τον αριθμό των τιμών που δεν είναι NULL. Για παράδειγμα:
Ποσότητα (Πωλήσεις. Αντισυμβαλλόμενος)
Αυτή η συνάρτηση υπολογίζει τον αριθμό των διακριτών τιμών. Για παράδειγμα:
Ποσότητα (Διάφορες πωλήσεις. Αντισυμβαλλόμενος)
Η συνάρτηση παίρνει τη μέγιστη τιμή. Για παράδειγμα:
Μέγιστο (Υπόλοιπο. Ποσότητα)
Η συνάρτηση παίρνει την ελάχιστη τιμή. Για παράδειγμα:
Ελάχιστο (Υπόλοιπο. Ποσότητα)
Η συνάρτηση λαμβάνει τον μέσο όρο των μη NULL τιμών. Για παράδειγμα:
Μέσος όρος (Υπόλοιπο. Ποσότητα)
Η λειτουργία Επιλογή προορίζεται για την επιλογή μιας από πολλές τιμές όταν πληρούνται ορισμένες προϋποθέσεις. Για παράδειγμα:
Επιλέξτε Πότε Ποσό > 1000 Στη συνέχεια Ποσό Διαφορετικά 0 Τέλος
Εάν οι τύποι των τιμών που συγκρίνονται είναι διαφορετικοί μεταξύ τους, τότε οι σχέσεις μεταξύ των τιμών καθορίζονται με βάση την προτεραιότητα των τύπων:
Οι σχέσεις μεταξύ διαφορετικών τύπων αναφοράς καθορίζονται με βάση τους αριθμούς αναφοράς των πινάκων που αντιστοιχούν σε έναν συγκεκριμένο τύπο.
Εάν οι τύποι δεδομένων είναι ίδιοι, τότε οι τιμές συγκρίνονται σύμφωνα με τους ακόλουθους κανόνες:
Οποιαδήποτε πράξη στην οποία ένας από τους τελεστές είναι NULL θα παράγει ένα αποτέλεσμα NULL.
Υπάρχουν εξαιρέσεις:
Οι λειτουργίες έχουν τις ακόλουθες προτεραιότητες (η πρώτη γραμμή έχει τη χαμηλότερη προτεραιότητα):
Η συνάρτηση Υπολογισμός έχει σχεδιαστεί για να υπολογίζει μια έκφραση στο πλαίσιο μιας συγκεκριμένης ομαδοποίησης. Η συνάρτηση έχει τις ακόλουθες παραμέτρους:
ΣΕ σε αυτό το παράδειγμαΤο αποτέλεσμα θα είναι η αναλογία του ποσού για το πεδίο "Sales.SumTurnover" της εγγραφής ομαδοποίησης προς το ποσό του ίδιου πεδίου σε ολόκληρη τη διάταξη.
Η λειτουργία έχει σχεδιαστεί για να λαμβάνει το τρέχον επίπεδο εγγραφής.
Επίπεδο()
Λάβετε τον επόμενο αριθμό σειράς.
NumberByOrder()
Επιστρέφει τον επόμενο τακτικό αριθμό στην τρέχουσα ομαδοποίηση.
NumberByOrderInGroup()
Λάβετε μια μορφοποιημένη συμβολοσειρά της τιμής που περάσατε.
Η συμβολοσειρά μορφής ορίζεται σύμφωνα με συμβολοσειρά μορφής 1C: Επιχείρηση.
Επιλογές:
Μορφή (Αναλώσιμα τιμολόγια. Ποσό εγγράφου, "NPV=2")
Επιλογές:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Month")
Αποτέλεσμα:
01.10.2002 0:00:00
Η συνάρτηση έχει σχεδιαστεί για να εξάγει μια συγκεκριμένη ημερομηνία από μια δεδομένη ημερομηνία.
Επιλογές:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Week")
Αποτέλεσμα:
13.10.2002 23:59:59
Η συνάρτηση έχει σχεδιαστεί για να προσθέτει μια συγκεκριμένη τιμή σε μια ημερομηνία.
Επιλογές:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)
Αποτέλεσμα:
12.11.2002 10:15:34
Η λειτουργία έχει σχεδιαστεί για να λαμβάνει τη διαφορά μεταξύ δύο ημερομηνιών.
Επιλογές:
DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAY")
Αποτέλεσμα:
Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει μια υποσυμβολοσειρά από μια συμβολοσειρά.
Επιλογές:
SUBSTRING(Λογαριασμοί.Διεύθυνση, 1, 4)
Η συνάρτηση έχει σχεδιαστεί για να προσδιορίζει το μήκος μιας συμβολοσειράς.
Παράμετρος:
Γραμμή (Αντισυμβαλλόμενοι. Διεύθυνση)
Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει το έτος από μια τιμή τύπου ημερομηνίας.
Παράμετρος:
ΕΤΟΣ (Έξοδα. Ημερομηνία)
Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει τον αριθμό τριμήνου από μια τιμή τύπου Ημερομηνίας. Ο αριθμός τριμήνου συνήθως κυμαίνεται από 1 έως 4.
Παράμετρος
Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει τον αριθμό μήνα από μια τιμή τύπου Ημερομηνίας. Ο αριθμός του μήνα κυμαίνεται συνήθως από 1 έως 12.
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα του έτους από μια τιμή τύπου Date. Η ημέρα του έτους κυμαίνεται κανονικά από 1 έως 365 (366).
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα του μήνα από μια τιμή τύπου Date. Η ημέρα του μήνα κυμαίνεται κανονικά από 1 έως 31.
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει τον αριθμό της εβδομάδας του έτους από μια τιμή τύπου Ημερομηνίας. Οι εβδομάδες του έτους αριθμούνται ξεκινώντας από το 1.
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα της εβδομάδας από μια τιμή τύπου Ημερομηνίας. Η κανονική ημέρα της εβδομάδας κυμαίνεται από 1 (Δευτέρα) έως 7 (Κυριακή).
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ώρα της ημέρας από μια τιμή τύπου Ημερομηνίας. Η ώρα της ημέρας κυμαίνεται από 0 έως 23.
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει τα λεπτά της ώρας από μια τιμή τύπου Ημερομηνίας. Το λεπτό της ώρας κυμαίνεται από 0 έως 59.
Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει το δευτερόλεπτο του λεπτού από μια τιμή τύπου ημερομηνίας. Το δευτερόλεπτο του λεπτού κυμαίνεται από 0 έως 59.
Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει έναν τύπο από μια έκφραση που μπορεί να περιέχει έναν σύνθετο τύπο. Εάν η παράσταση περιέχει έναν τύπο διαφορετικό από τον απαιτούμενο τύπο, θα επιστραφεί NULL.
Επιλογές:
Express(Data.Props1, "Number(10,3)")
Αυτή η συνάρτηση επιστρέφει την τιμή της δεύτερης παραμέτρου εάν η τιμή της πρώτης παραμέτρου είναι NULL.
Διαφορετικά, θα επιστραφεί η τιμή της πρώτης παραμέτρου.
YesNULL(Ποσό(Πωλήσεις.ΠοσόΚύκλος), 0)
Μια έκφραση μηχανής σύνθεσης δεδομένων μπορεί να περιέχει κλήσεις σε συναρτήσεις καθολικών μονάδων κοινής διαμόρφωσης. Δεν απαιτείται πρόσθετη σύνταξη για την κλήση τέτοιων συναρτήσεων.
Σε αυτό το παράδειγμα, η συνάρτηση "AbbreviatedName" θα κληθεί από τη λειτουργική μονάδα γενικής διαμόρφωσης.
Λάβετε υπόψη ότι η χρήση κοινών λειτουργιών μονάδας επιτρέπεται μόνο εάν έχει καθοριστεί η κατάλληλη παράμετρος επεξεργαστή σύνθεσης δεδομένων.
Επιπλέον, οι συναρτήσεις κοινών λειτουργικών μονάδων δεν μπορούν να χρησιμοποιηθούν σε προσαρμοσμένες εκφράσεις πεδίων.
Υπό το φως της επερχόμενης έκδοσης της 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επί ΜΗΔΕΝΙΚΟ.
Επιλογές
Τύπος: Γραμμή. Η έκφραση που πρέπει να αξιολογηθεί.
Τύπος: Γραμμή. Περιέχει το όνομα της ομάδας στο πλαίσιο της οποίας θα αξιολογηθεί η έκφραση. Εάν χρησιμοποιείται μια κενή συμβολοσειρά ως όνομα ομαδοποίησης, ο υπολογισμός θα εκτελεστεί στο πλαίσιο της τρέχουσας ομαδοποίησης. Εάν η συμβολοσειρά GeneralTotal χρησιμοποιείται ως όνομα ομάδας, ο υπολογισμός θα εκτελεστεί στο πλαίσιο του γενικού συνόλου. Διαφορετικά, ο υπολογισμός θα εκτελεστεί στο πλαίσιο της γονικής ομάδας με το ίδιο όνομα.
Για παράδειγμα:
Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "Total")
Σε αυτό το παράδειγμα, το αποτέλεσμα θα είναι ο λόγος του αθροίσματος ανά πεδίο Πωλήσεις.ΠοσόΚύκλοςομαδοποίηση εγγραφών στο άθροισμα του ίδιου πεδίου σε ολόκληρη τη διάταξη.
Τύπος: Γραμμή. Η παράμετρος μπορεί να λάβει τις ακόλουθες τιμές:
· σύνολο— η έκφραση θα υπολογιστεί για όλες τις εγγραφές ομαδοποίησης.
· Ιεραρχία— η έκφραση θα αξιολογηθεί για τη γονική ιεραρχική εγγραφή, εάν υπάρχει, και για ολόκληρη την ομαδοποίηση, εάν δεν υπάρχει γονική ιεραρχική εγγραφή.
· Ομαδοποίηση— η έκφραση θα αξιολογηθεί για την τρέχουσα εγγραφή ομαδοποίησης.
· GroupingNonResource— κατά τον υπολογισμό μιας συνάρτησης για μια εγγραφή ομάδας ανά πόρους, η έκφραση θα υπολογιστεί για την πρώτη εγγραφή ομάδας της αρχικής ομαδοποίησης.
Κατά τον υπολογισμό μιας συνάρτησης CalculateExpression() με νόημα GroupingNonResourceγια ομαδικές εγγραφές που δεν ομαδοποιούνται κατά πόρους, η συνάρτηση υπολογίζεται με τον ίδιο τρόπο που θα υπολογίζονταν εάν η τιμή της παραμέτρου ήταν ίση με την τιμή Ομαδοποίηση.
Το εργαλείο δημιουργίας διάταξης σύνθεσης δεδομένων, όταν δημιουργεί μια διάταξη σύνθεσης δεδομένων κατά την έξοδο ενός πεδίου πόρων με το οποίο εκτελείται η ομαδοποίηση στη διάταξη, τοποθετεί μια έκφραση στη διάταξη που υπολογίζεται χρησιμοποιώντας τη συνάρτηση CalculateExpression() , υποδεικνύοντας την παράμετρο GroupingNonResource. Για άλλους πόρους, οι συνήθεις εκφράσεις πόρων τοποθετούνται στην ομαδοποίηση πόρων.
Τύπος: Γραμμή. Υποδεικνύει από ποια εγγραφή θα πρέπει να ξεκινά το θραύσμα, σε ποιες συναρτήσεις έκφρασης συγκεντρωτικών θα πρέπει να υπολογίζονται και από ποια εγγραφή να λαμβάνονται τιμές πεδίου εκτός των συναρτήσεων συγκεντρωτικών. Η τιμή μπορεί να είναι ένα από τα ακόλουθα:
· Πρώτα
· Τελευταίο (Τελευταίο)
· Προηγούμενος
· Επόμενο (Επόμενο)
· Ρεύμα
· LimitingValue(BoundaryValue) LimitingValue
Τύπος: Γραμμή. Υποδεικνύει σε ποια εγγραφή πρέπει να συνεχιστεί το θραύσμα, στην οποία πρέπει να υπολογιστούν συναρτήσεις αθροιστικής έκφρασης. Η τιμή μπορεί να είναι ένα από τα ακόλουθα:
· Πρώτα. Είναι απαραίτητο να αποκτήσετε την πρώτη εγγραφή ομαδοποίησης. Μετά τη λέξη σε αγκύλες, μπορείτε να καθορίσετε μια έκφραση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση από την αρχή της ομαδοποίησης. Η τιμή που προκύπτει πρέπει να είναι ακέραιος μεγαλύτερος από το μηδέν. Για παράδειγμα, First(3) - λήψη της τρίτης εγγραφής από την αρχή της ομαδοποίησης.
Εάν η πρώτη εγγραφή είναι εκτός ομαδοποίησης, τότε θεωρείται ότι δεν υπάρχουν εγγραφές. Για παράδειγμα, εάν υπάρχουν 3 εγγραφές και θέλετε να πάρετε το First(4), τότε θεωρείται ότι δεν υπάρχουν εγγραφές.
· Τελευταίο (Τελευταίο). Πρέπει να λάβετε την τελευταία εγγραφή ομαδοποίησης. Μετά τη λέξη σε αγκύλες, μπορείτε να καθορίσετε μια έκφραση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση από το τέλος της ομαδοποίησης. Η τιμή που προκύπτει πρέπει να είναι ακέραιος μεγαλύτερος από το μηδέν. Για παράδειγμα, Last(3) - λήψη της τρίτης εγγραφής από το τέλος της ομάδας.
Αν τελευταίο ρεκόρυπερβαίνει την ομαδοποίηση, θεωρείται ότι δεν υπάρχουν εγγραφές. Για παράδειγμα, εάν υπάρχουν 3 εγγραφές και θέλετε να πάρετε το Last(4), τότε θεωρείται ότι δεν υπάρχουν εγγραφές.
· Προηγούμενος. Πρέπει να λάβετε την προηγούμενη εγγραφή ομαδοποίησης. Μετά τη λέξη σε αγκύλες, μπορείτε να καθορίσετε μια έκφραση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση από την τρέχουσα εγγραφή ομαδοποίησης. Για παράδειγμα, Προηγούμενο(2) - λήψη του προηγούμενου από την προηγούμενη εγγραφή.
Εάν η προηγούμενη εγγραφή υπερβαίνει την ομαδοποίηση (για παράδειγμα, για τη δεύτερη εγγραφή ομαδοποίησης πρέπει να λάβετε Previous(3)), τότε λαμβάνεται η πρώτη εγγραφή ομαδοποίησης.
Κατά την ανάκτηση της προηγούμενης εγγραφής για ένα σύνολο ομαδοποίησης, θεωρείται ότι λαμβάνεται η πρώτη εγγραφή.
· Επόμενο (Επόμενο). Πρέπει να λάβετε την επόμενη εγγραφή ομαδοποίησης. Μετά τη λέξη σε αγκύλες, μπορείτε να καθορίσετε μια έκφραση, το αποτέλεσμα της οποίας θα χρησιμοποιηθεί ως μετατόπιση προς τα εμπρός από την τρέχουσα καταχώρηση ομαδοποίησης. Για παράδειγμα, Επόμενο(2) - λήψη επόμενου από την επόμενη εγγραφή.
Εάν η επόμενη εγγραφή υπερβαίνει την ομαδοποίηση, τότε θεωρείται ότι δεν υπάρχουν εγγραφές. Για παράδειγμα, εάν υπάρχουν 3 καταχωρήσεις και η τρίτη καταχώρηση λάβει Next() , τότε θεωρείται ότι δεν υπάρχουν καταχωρήσεις.
Όταν ληφθεί η επόμενη εγγραφή για το σύνολο της ομαδοποίησης, θεωρείται ότι δεν υπάρχει εγγραφή.
· Ρεύμα. Πρέπει να λάβετε την τρέχουσα εγγραφή.
Κατά την ανάκτηση για ένα σύνολο ομαδοποίησης, λαμβάνεται η πρώτη εγγραφή.
· LimitingValue(BoundaryValue). Η ανάγκη λήψης μιας εγγραφής με την καθορισμένη τιμή. Μετά τη λέξη LimitingValueσε αγκύλες πρέπει να υποδείξετε την έκφραση με την τιμή της οποίας θέλετε να ξεκινήσετε το τμήμα, το πρώτο πεδίο παραγγελίας.
Η πρώτη εγγραφή της οποίας η τιμή του πεδίου παραγγελίας είναι μεγαλύτερη ή ίση με την καθορισμένη τιμή θα επιστραφεί ως εγγραφή. Για παράδειγμα, εάν το πεδίο Περίοδος χρησιμοποιείται ως πεδίο παραγγελίας και έχει τις τιμές 01/01/2010, 02/01/2010, 03/01/2010 και θέλετε να λάβετε LimitingValue(DateTime(2010, 1, 15)), τότε θα ληφθεί ένα αρχείο με ημερομηνία 02/01/2010.
Τύπος: Γραμμή. Παραθέτει εκφράσεις, διαχωρισμένες με κόμμα, που περιγράφουν τους κανόνες ταξινόμησης. Εάν δεν καθορίζεται, τότε η σειρά εκτελείται με τον ίδιο τρόπο όπως για την ομαδοποίηση για την οποία αξιολογείται η έκφραση. Μετά από κάθε έκφραση μπορείτε να καθορίσετε μια λέξη-κλειδί Ηλικία(για παραγγελία σε αύξουσα σειρά), Φθίνων(για παραγγελία με φθίνουσα σειρά) και Αυτόματη παραγγελία(για να ταξινομήσετε τα πεδία αναφοράς με τα πεδία με τα οποία θέλετε να παραγγείλετε το αντικείμενο αναφοράς). Λέξη Αυτόματη παραγγελίαμπορεί να χρησιμοποιηθεί όπως με τη λέξη Ηλικία, έτσι και με τη λέξη Φθίνων.
Τύπος: Γραμμή. Το ίδιο με την παράμετρο Ταξινόμηση. Χρησιμοποιείται για την οργάνωση ιεραρχικών εγγραφών. Εάν δεν καθορίζεται, το πρόγραμμα δημιουργίας διάταξης δημιουργεί την παραγγελία σύμφωνα με τη σειρά που καθορίζεται στην παράμετρο Ταξινόμηση.
Τύπος: Γραμμή. Καθορίζει τον κανόνα για τον προσδιορισμό της προηγούμενης ή της επόμενης εγγραφής σε περίπτωση που υπάρχουν πολλές εγγραφές με την ίδια τιμή παραγγελίας:
· Χωριστάυποδεικνύει ότι χρησιμοποιείται μια ακολουθία διατεταγμένων εγγραφών για τον προσδιορισμό της προηγούμενης και της επόμενης εγγραφής. Προεπιλεγμένη τιμή.
· Μαζίυποδεικνύει ότι η προηγούμενη και η επόμενη εγγραφή καθορίζονται με βάση τις τιμές των παραστάσεων σειράς.
Για παράδειγμα, εάν η ακολουθία που προκύπτει είναι ταξινομημένη κατά ημερομηνία:
№ | ημερομηνία | Πλήρες όνομα | Εννοια |
1 | 1 Ιανουαρίου 2001 |
Ιβάνοφ Μ. |
10 |
2 | 02 Ιανουαρίου 2001 | Πετρόφ Σ. | 20 |
3 | 03 Ιανουαρίου 2001 | Σιντόροφ Ρ. | 30 |
4 | 04 Ιανουαρίου 2001 | Πετρόφ Σ. | 40 |
Χωριστά, Οτι:
§ η προηγούμενη καταχώρηση στην καταχώρηση 3 θα είναι η καταχώριση 2.
Τρέχον, Τρέχον(αντίστοιχα, παράμετροι ΑρχήΚαι Τέλος), τότε για την εγγραφή 2 αυτό το κομμάτι θα αποτελείται από μία εγγραφή 2. Η έκφραση θα είναι ίση με 20.
Εάν η τιμή της παραμέτρου είναι Μαζί, Οτι:
§ η προηγούμενη καταχώρηση στην καταχώρηση 3 θα είναι η καταχώριση 1.
§ εάν το τμήμα υπολογισμού ορίζεται ως Τρέχον, Τρέχον(αντίστοιχα, παράμετροι ΑρχήΚαι Τέλος), τότε για την εγγραφή 2 αυτό το τμήμα θα αποτελείται από τις εγγραφές 2 και 3. Έκφραση CalculateExpression("Sum(Value)", Current, Current)θα ισούται με 50.
Όταν καθορίζετε μια τιμή παραμέτρου ίση με Μαζί, σε παραμέτρους ΑρχήΚαι Τέλοςδεν μπορείτε να καθορίσετε μια μετατόπιση για θέσεις Πρώτο, Τελευταίο, Προηγούμενο, Επόμενο.
CalculateExpression("Sum(SumTurnover)", "First", "Current")
Εάν θέλετε να λάβετε την τιμή ομαδοποίησης στην προηγούμενη γραμμή, μπορείτε να χρησιμοποιήσετε την ακόλουθη έκφραση:
CalculateExpression("Rate", "Previous")
Λίστα νέοςλειτουργίες:CalculateExpressionWithGroupArray(,) -
Η συνάρτηση επιστρέφει έναν πίνακα, κάθε στοιχείο του οποίου περιέχει το αποτέλεσμα της αξιολόγησης μιας παράστασης για ομαδοποίηση με βάση το καθορισμένο πεδίο.
CalculateExpressionWithGroupValueTable(,) -
Η συνάρτηση επιστρέφει έναν πίνακα τιμών, κάθε σειρά του οποίου περιέχει το αποτέλεσμα της αξιολόγησης παραστάσεων για ομαδοποίηση με βάση το καθορισμένο πεδίο
ValueFilled() - Επιστρέφει True εάν η τιμή είναι διαφορετική από την τιμή αυτού του τύπουπροεπιλογή, εκτός από NULL, εκτός από κενή αναφορά, εκτός από Undefined. Οι τιμές Boole ελέγχονται για τιμές NULL. Οι συμβολοσειρές ελέγχονται για την απουσία χαρακτήρων χωρίς κενά
Μορφή(, ) - Λήψη μιας μορφοποιημένης συμβολοσειράς της τιμής που πέρασε. Η συμβολοσειρά μορφοποίησης ορίζεται σύμφωνα με τη συμβολοσειρά μορφοποίησης του συστήματος 1C:Enterprise.
Υποσυμβολοσειρά(, , ) - Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει μια υποσυμβολοσειρά από μια συμβολοσειρά.
Μήκος γραμμής() - Η συνάρτηση έχει σχεδιαστεί για να προσδιορίζει το μήκος μιας συμβολοσειράς. Η παράμετρος είναι μια έκφραση συμβολοσειράς
Γραμμή() - Εάν ένας πίνακας μεταβιβαστεί ως παράμετρος, η συνάρτηση επιστρέφει μια συμβολοσειρά που περιέχει αναπαραστάσεις συμβολοσειράς όλων των στοιχείων του πίνακα, διαχωρισμένες με χαρακτήρες ";". Εάν ένας πίνακας τιμών μεταβιβαστεί ως παράμετρος, η συνάρτηση επιστρέφει μια συμβολοσειρά που περιέχει αναπαραστάσεις συμβολοσειρών όλων των σειρών του πίνακα τιμών, με τις αναπαραστάσεις των κελιών κάθε γραμμής να διαχωρίζονται με ";" και τις σειρές με μια νέα γραμμή χαρακτήρας. Εάν η αναπαράσταση συμβολοσειράς ενός στοιχείου είναι κενή, τότε εμφανίζεται μια συμβολοσειρά αντί για την αναπαράστασή της.
Σε αυτό το σύντομο σημείωμα θέλω να δείξω πώς μπορείτε να συνοψίσετε τιμές σε διάφορα επίπεδα ομαδοποίησης σε μια αναφορά χρησιμοποιώντας ένα σύστημα σύνθεσης δεδομένων.
Όπως φαίνεται στην εικόνα, μόνο στο επίπεδο ομαδοποίησης «Ομάδες αντικειμένων», υπολογίζεται ο πόρος «Παραγγελία», εμφανίζει πόσα πρέπει να παραγγελθούν για την τρέχουσα ομάδα αντικειμένων με βάση ορισμένες προϋποθέσεις:
Αντίστοιχα, τώρα είναι απαραίτητο να υπολογιστούν τα σύνολα για τις παραπάνω ομαδοποιήσεις («Αποθήκες», «Τύποι Αποθήκης») και το συνολικό σύνολο.
Για να το κάνετε αυτό, χρησιμοποιήστε τη συνάρτηση CalculateExpressionWithGroupArray:
EVALUATE EXPRESSIONWITHGROUPARRAY (EVALEXPRESIONWITHGROUPARRAY)
Σύνταξη:
EvaluateExpressionWithGroupArray(,)
Περιγραφή:
Η συνάρτηση επιστρέφει έναν πίνακα, κάθε στοιχείο του οποίου περιέχει το αποτέλεσμα της αξιολόγησης μιας παράστασης για ομαδοποίηση με βάση το καθορισμένο πεδίο.
Ο συνθέτης διάταξης, όταν δημιουργεί μια διάταξη, μετατρέπει τις παραμέτρους συνάρτησης σε πεδία διάταξης σύνθεσης δεδομένων. Για παράδειγμα, το πεδίο Λογαριασμός θα μετατραπεί σε DataSet.Account.
Το πρόγραμμα δημιουργίας διάταξης, όταν δημιουργεί παραστάσεις για την έξοδο ενός προσαρμοσμένου πεδίου του οποίου η έκφραση περιέχει μόνο τη συνάρτηση CalculateArrayWithGroupArray(), δημιουργεί την έκφραση εξόδου έτσι ώστε οι πληροφορίες εξόδου να ταξινομούνται. Για παράδειγμα, για ένα προσαρμοσμένο πεδίο με την έκφραση:
CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty")
Το πρόγραμμα δημιουργίας διάταξης θα δημιουργήσει την ακόλουθη έκφραση για έξοδο:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("Προβολή(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))
Επιλογές:
Τύπος: String. Η έκφραση που πρέπει να αξιολογηθεί. Συμβολοσειρά, για παράδειγμα, Amount(AmountTurnover).
Τύπος: String. Ομαδοποίηση εκφράσεων πεδίων – εκφράσεις πεδίων ομαδοποίησης, διαχωρισμένες με κόμμα. Για παράδειγμα, ανάδοχος, συμβαλλόμενο μέρος.
Τύπος: String. Μια έκφραση που περιγράφει την επιλογή που εφαρμόζεται σε εγγραφές λεπτομερειών. Η έκφραση δεν υποστηρίζει τη χρήση συγκεντρωτικών συναρτήσεων. Για παράδειγμα, DeletionFlag = False.
Τύπος: String. Μια έκφραση που περιγράφει την επιλογή που εφαρμόζεται σε ομαδικές εγγραφές. Για παράδειγμα, Amount(AmountTurnover) > &Parameter1.
Παράδειγμα:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));
Μια λεπτομερής περιγραφή της σύνταξης της συνάρτησης βρίσκεται στη διεύθυνση http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Τώρα, για τον υπολογισμό, αντιγράφουμε το πεδίο "Παραγγελία", με διαφορετικές τιμές "Υπολογισμός κατά...", χρησιμοποιώντας τις ακόλουθες εκφράσεις, σημειώστε ότι σε κάθε υψηλότερο επίπεδο χρησιμοποιούνται οι τιμές των επιπέδων κάτω από τις ομαδοποιήσεις .
Ως αποτέλεσμα, έχουμε την ακόλουθη κατασκευή:
Γεια σου, αγαπητέ αναγνώστη! Έχουμε ένα άλλο μάθημα για τα βασικά του συστήματος διάταξης. Σε εξοικειώσατε με τις λειτουργίες της γλώσσας Εκφράσεις SKD, είδε τα χαρακτηριστικά του συστήματος διάταξης και επίσης κατανόησε τις βασικές ρυθμίσεις των πεδίων διάταξης. Τώρα θα δούμε νέο υλικό. Πηγαίνω!
Στήλη "Τύπος τιμής"Σας επιτρέπει να καθορίσετε τον τύπο δεδομένων για το πεδίο διάταξης. Γιατί να καθορίσετε τον τύπο, για παράδειγμα, για το πεδίο "Ονοματολογία", εάν γνωρίζετε ήδη τι τύπο είναι; Αυτό είναι απαραίτητο εάν το πεδίο διάταξης είναι σύνθετου τύπου. Μπορείτε να επιλέξετε έναν συγκεκριμένο τύπο και, στη συνέχεια, κατά την επιλογή από αυτό το πεδίο, θα επιλεγούν τιμές αυτού του τύπου.
Στήλη "Διαθέσιμες τιμές"σας επιτρέπει να καθορίσετε τις τιμές που είναι διαθέσιμες για επιλογή και να περιορίσετε την επιλογή του χρήστη σε ορισμένα όρια.
Στήλη "Ντεκόρ"σας επιτρέπει να καθορίσετε τη σχεδίαση ενός πεδίου διάταξης χωρίς τη χρήση διατάξεων. Μπορείτε να καθορίσετε το χρώμα της γραμματοσειράς, το χρώμα του πλαισίου, τον προσανατολισμό του κειμένου κ.λπ.
Στήλη "Επιλογές επεξεργασίας"Σας επιτρέπει να καθορίσετε τον τρόπο επεξεργασίας του πεδίου διάταξης. Για παράδειγμα, μπορείτε να καθορίσετε μια γρήγορη επιλογή στοιχείων από μια λίστα σε μια επιλογή. Από προεπιλογή, ένα πεδίο διάταξης κληρονομεί όλες τις επιλογές επεξεργασίας από το αντικείμενο μεταδεδομένων.
Στην καρτέλα "Υπολογιζόμενα πεδία" της σύνθεσης δεδομένων, μπορείτε να δημιουργήσετε τα δικά σας υπολογισμένα πεδία.
Γιατί χρειάζεστε υπολογισμένα πεδία όταν μπορείτε να τα δημιουργήσετε σε επίπεδο ερωτήματος; Δεν μπορούν να περιγραφούν όλα τα πεδία χρησιμοποιώντας ένα ερώτημα. Εάν χρειάζεται να δημιουργήσετε ένα σύνθετο πεδίο από διαφορετικά σύνολα δεδομένων, για παράδειγμα, ένα ερώτημα και ένα αντικείμενο, τότε δεν μπορείτε να κάνετε χωρίς υπολογισμένα πεδία. Δεν μπορείτε να προσθέσετε ένα πεδίο σύνθεσης δεδομένων εάν η προέλευση δεδομένων είναι ένα ερώτημα και η αυτόματη συμπλήρωση είναι ενεργοποιημένη, αλλά χρησιμοποιώντας τα υπολογισμένα πεδία μπορείτε να προσθέσετε όσα πεδία θέλετε.
Στη στήλη "Έκφραση" του υπολογιζόμενου πεδίου, πρέπει να γράψετε μια αυθαίρετη έκφραση που χρησιμοποιεί τα πεδία σύνθεσης δεδομένων, έχοντας πρόσβαση στη διαδρομή τους (η στήλη "Διαδρομή" στην καρτέλα "Σύνολα δεδομένων"). Είτε μπορείτε να χρησιμοποιήσετε συναρτήσεις μαθηματικού μετασχηματισμού είτε να αποκτήσετε πρόσβαση στις συναρτήσεις κοινών λειτουργικών μονάδων. Για παράδειγμα, ας γράψουμε στη στήλη «Διαδρομή δεδομένων» το όνομα του υπολογιζόμενου πεδίου «Απόκλιση» και στο πεδίο «Έκφραση» τα ακόλουθα.
Ένας από τους πιο σημαντικούς τομείς του επιχειρηματικού λογισμικού είναι η αναφορά. Η μοίρα μιας επιχείρησης μπορεί να εξαρτάται (και όχι με μεταφορική έννοια!) από το πόσο εύκολο είναι να προσαρμόσετε μια υπάρχουσα αναφορά στις μεταβαλλόμενες ανάγκες της επιχείρησης (και της νομοθεσίας) ή να δημιουργήσετε μια νέα, είτε πρόκειται για αναφορά για την εφορία ή ένα διάγραμμα της εξάρτησης της ζήτησης αγαθών από την εποχή και άλλους παράγοντες . Ένα ισχυρό και ευέλικτο σύστημα αναφοράς που διευκολύνει την εξαγωγή των απαραίτητων δεδομένων από το σύστημα, την παρουσίασή τους σε κατανοητή μορφή, επιτρέποντας στον τελικό χρήστη να διαμορφώσει εκ νέου μια τυπική αναφορά για να δει τα δεδομένα με νέο φως - αυτό είναι το ιδανικό που κάθε επιχειρηματικό σύστημα θα πρέπει να επιδιώξει.
Στην πλατφόρμα 1C:Enterprise, ένας μηχανισμός που ονομάζεται «Σύστημα Σύνθεσης Δεδομένων» (συντομογραφία ως DCS) είναι υπεύθυνος για τη δημιουργία αναφορών. Σε αυτό το άρθρο θα προσπαθήσουμε να δώσουμε Σύντομη περιγραφήιδέες και αρχιτεκτονική του μηχανισμού ACS και των δυνατοτήτων του.
Το ACS είναι ένας μηχανισμός που βασίζεται σε μια δηλωτική περιγραφή των αναφορών. Το σύστημα ελέγχου πρόσβασης έχει σχεδιαστεί για τη δημιουργία αναφορών και την εμφάνιση πληροφοριών με πολύπλοκη δομή. Παρεμπιπτόντως, εκτός από την ανάπτυξη αναφορών, ο μηχανισμός ACS χρησιμοποιείται επίσης στο 1C:Enterprise σε μια δυναμική λίστα, ένα μέσο εμφάνισης πληροφοριών λίστας με πλούσια λειτουργικότητα(εμφάνιση επίπεδων και ιεραρχικών λιστών, υπό όρους σχεδιασμός σειρών, ομαδοποιήσεων κ.λπ.).
Μία από τις ιδέες που αποτέλεσαν τη βάση του συστήματος ελέγχου πρόσβασης ήταν η ευελιξία και η προσαρμογή των αναφορών, η οποία ήταν προσβάσιμη τόσο στον προγραμματιστή όσο και στον τελικό χρήστη. Στην ιδανική περίπτωση, θα ήθελα να δώσω στον τελικό χρήστη πρόσβαση στο ίδιο σύνολο εργαλείων σχεδίασης αναφορών με τον προγραμματιστή. Θα ήταν λογικό να δημιουργηθεί ένα ενιαίο σύνολο εργαλείων διαθέσιμο σε όλους. Λοιπόν, δεδομένου ότι τα εργαλεία απαιτούν τη συμμετοχή του τελικού χρήστη, σημαίνει ότι η χρήση προγραμματισμού σε αυτά θα πρέπει να μειωθεί στο ελάχιστο (είναι καλύτερο να εξαλειφθεί εντελώς) και οι οπτικές ρυθμίσεις πρέπει να χρησιμοποιηθούν στο μέγιστο.
Είναι εύκολο να δείτε ανάλογα ενοτήτων τυπικά για ερωτήματα SQL - SELECT, FROM, GROUP BY, ORDER BY.
Ταυτόχρονα, η γλώσσα ερωτημάτων περιέχει έναν σημαντικό αριθμό επεκτάσεων που στοχεύουν να αντικατοπτρίζουν τις ιδιαιτερότητες των χρηματοοικονομικών και οικονομικών προβλημάτων και να ελαχιστοποιούν την προσπάθεια που απαιτείται για την ανάπτυξη λύσεων εφαρμογών:
Υπάρχουν επίσης ειδικές επεκτάσεις γλώσσας ερωτήματος για συστήματα ελέγχου πρόσβασης. Η επέκταση πραγματοποιείται χρησιμοποιώντας ειδικές συντακτικές οδηγίες που περικλείονται σε σγουρά στηρίγματα και τοποθετούνται απευθείας στο σώμα της αίτησης. Χρησιμοποιώντας επεκτάσεις, ο προγραμματιστής καθορίζει ποιες λειτουργίες θα μπορεί να εκτελέσει ο τελικός χρήστης κατά την προσαρμογή της αναφοράς.
Για παράδειγμα:
Παράδειγμα:
Για παράδειγμα, μπορείτε να προσθέσετε ένα ερώτημα στο σχήμα σύνθεσης δεδομένων ως σύνολο δεδομένων και να καλέσετε τον κατασκευαστή ερωτήματος, το οποίο σας επιτρέπει να δημιουργήσετε γραφικά ένα ερώτημα αυθαίρετης πολυπλοκότητας:
Το αποτέλεσμα της εκκίνησης του σχεδιαστή ερωτήματος θα είναι το κείμενο ερωτήματος (στη γλώσσα ερωτήματος 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, ο χρήστης μπορεί να προσθέσει σύνθετες επιλογές στην αναφορά (οι οποίες θα προστεθούν στο αίτημα στα σωστά σημεία), σχεδιασμό υπό όρους (επιτρέποντας στα εμφανιζόμενα πεδία να μορφοποιηθούν διαφορετικά - με γραμματοσειρά, χρώμα κ.λπ., ανάλογα με τις τιμές τους ) και πολλα ΑΚΟΜΑ. .
Η διαδικασία κατασκευής και δημιουργίας μιας αναφοράς μπορεί να περιγραφεί συνοπτικά ως εξής:
Η διαδικασία δημιουργίας αναφοράς με χρήση του μηχανισμού ACS
Προσπαθούμε να ελαχιστοποιήσουμε τον όγκο των δεδομένων αναφοράς που μεταφέρονται από τον διακομιστή στην εφαρμογή πελάτη. Κατά την εμφάνιση δεδομένων σε ένα έγγραφο υπολογιστικού φύλλου, όταν ανοίγουμε ένα έγγραφο υπολογιστικού φύλλου, μεταφέρουμε από τον διακομιστή μόνο εκείνες τις γραμμές που βλέπει ο χρήστης στην αρχή του εγγράφου. Καθώς ο χρήστης κινείται κατά μήκος των γραμμών του εγγράφου, τα δεδομένα που λείπουν μεταφορτώνονται από τον διακομιστή στον πελάτη.
Ρύθμιση λειτουργίας εμφάνισης στο χρόνο σχεδίασης
Εμφάνιση της ρύθμισης σε λειτουργία Γρήγορης πρόσβασης κατά τη διάρκεια εκτέλεσης (κάτω από το κουμπί Δημιουργία)