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

18.08.2023

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

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

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

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

Κυριολεκτικά

Η έκφραση μπορεί να περιέχει κυριολεκτικά. Οι ακόλουθοι τύποι κυριολεκτικών είναι δυνατοί:

  • Γραμμή;
  • Αριθμός;
  • Ημερομηνία
  • Boolean.

Γραμμή

Μια κυριολεκτική συμβολοσειρά γράφεται με χαρακτήρες "", για παράδειγμα:

“Στρινγκ κυριολεκτικά”

Εάν χρειάζεται να χρησιμοποιήσετε τον χαρακτήρα «» μέσα σε μια συμβολοσειρά κυριολεκτικά, θα πρέπει να χρησιμοποιήσετε δύο τέτοιους χαρακτήρες.

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

“Κυριολεκτικά ““σε εισαγωγικά”””

Αριθμός

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

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 δευτερόλεπτα

Boolean

Οι τιμές Boole μπορούν να γραφτούν χρησιμοποιώντας τα κυριολεκτικά True (True), False (False).

Εννοια

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

Τιμή (Τύπος λογαριασμού. Ενεργός)

Λειτουργίες σε αριθμούς

Unary -

Αυτή η λειτουργία προορίζεται να αλλάξει το πρόσημο ενός αριθμού στο αντίθετο πρόσημο. Για παράδειγμα:

Πωλήσεις.Ποσότητα

Unary +

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

Πωλήσεις.Ποσότητα

Δυαδικό -

Αυτή η λειτουργία προορίζεται για τον υπολογισμό της διαφοράς δύο αριθμών. Για παράδειγμα:

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 διαφορετικά.

Οι παρακάτω χαρακτήρες στο<Строке_шаблона>έχουν νόημα διαφορετικό από έναν άλλο χαρακτήρα στη γραμμή:

  • % - ποσοστό: μια ακολουθία που περιέχει μηδέν ή περισσότερους αυθαίρετους χαρακτήρες.
  • _ - υπογράμμιση: ένας αυθαίρετος χαρακτήρας.
  • […] - ένας ή περισσότεροι χαρακτήρες σε αγκύλες: ένας χαρακτήρας, οποιοσδήποτε από αυτούς που αναφέρονται στις αγκύλες. Η απαρίθμηση μπορεί να περιέχει εύρη, για παράδειγμα a-z, που σημαίνει έναν αυθαίρετο χαρακτήρα που περιλαμβάνεται στο εύρος, συμπεριλαμβανομένων των άκρων του εύρους.
  • [^...] - σε αγκύλες ένα εικονίδιο άρνησης ακολουθούμενο από έναν ή περισσότερους χαρακτήρες: οποιοσδήποτε χαρακτήρας εκτός από αυτούς που παρατίθενται μετά το εικονίδιο άρνησης.

Οποιοδήποτε άλλο σύμβολο σημαίνει τον εαυτό του και δεν φέρει κανένα πρόσθετο φορτίο. Εάν ένας από τους χαρακτήρες που αναφέρονται πρέπει να γραφτεί ως ο ίδιος, τότε πρέπει να προηγείται<Спецсимвол>, που καθορίζεται μετά τη λέξη-κλειδί ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ (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)

Λειτουργία ελέγχου της παρουσίας μιας τιμής σε ένα σύνολο δεδομένων

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

Πωλήσεις Αντισυμβαλλόμενοι σε Αντισυμβαλλόμενους

Λειτουργία ελέγχου μιας τιμής για NULL

Αυτή η λειτουργία επιστρέφει True εάν η τιμή είναι NULL. Για παράδειγμα:

Πωλήσεις.Ο αντισυμβαλλόμενος ΕΙΝΑΙ ΜΗΧΑΝΟΣ

Λειτουργία ελέγχου μιας τιμής για ανισότητα 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 (χαμηλότερο);
  • Boolean;
  • Αριθμός;
  • Ημερομηνία
  • Γραμμή;
  • Τύποι αναφοράς

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

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

  • Για τον τύπο Boolean η τιμή TRUE είναι μεγαλύτερη από την τιμή FALSE.
  • Ο τύπος Αριθμός έχει τους συνήθεις κανόνες σύγκρισης για τους αριθμούς.
  • Για τον τύπο Date, οι προηγούμενες ημερομηνίες είναι μικρότερες από τις μεταγενέστερες.
  • για τον τύπο String - σύγκριση συμβολοσειρών σύμφωνα με τα καθιερωμένα εθνικά χαρακτηριστικά της βάσης δεδομένων·
  • Οι τύποι αναφοράς συγκρίνονται με βάση τις τιμές τους (αριθμός εγγραφής κ.λπ.).

Εργασία με τιμή NULL

Οποιαδήποτε πράξη στην οποία ένας από τους τελεστές είναι NULL θα παράγει ένα αποτέλεσμα NULL.

Υπάρχουν εξαιρέσεις:

  • Η λειτουργία AND θα επιστρέψει NULL μόνο εάν κανένας από τους τελεστές δεν είναι False.
  • Η λειτουργία OR θα επιστρέψει NULL μόνο εάν κανένας από τους τελεστές της δεν είναι True.

Προτεραιότητες λειτουργίας

Οι λειτουργίες έχουν τις ακόλουθες προτεραιότητες (η πρώτη γραμμή έχει τη χαμηλότερη προτεραιότητα):

  • B, IS NULL, IS NOT NULL.
  • =, <>, <=, <, >=, >;
  • Binary +, Binary – ;
  • *, /, %;
  • Unary +, Unary -.

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

Υπολογίζω

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

  • Εκφραση. Πληκτρολογήστε String. Περιέχει μια υπολογισμένη έκφραση.
  • Ομαδοποίηση. Πληκτρολογήστε String. Περιέχει το όνομα της ομάδας στο πλαίσιο της οποίας θα αξιολογηθεί η έκφραση. Εάν χρησιμοποιείται μια κενή συμβολοσειρά ως όνομα ομαδοποίησης, ο υπολογισμός θα εκτελεστεί στο πλαίσιο της τρέχουσας ομαδοποίησης. Εάν η συμβολοσειρά GrandTotal χρησιμοποιείται ως όνομα ομάδας, ο υπολογισμός θα εκτελεστεί στο πλαίσιο του γενικού συνόλου. Διαφορετικά, ο υπολογισμός θα εκτελεστεί στο πλαίσιο της γονικής ομάδας με το ίδιο όνομα. Για παράδειγμα:
Sum(Sales.SumTurnover) / Υπολογισμός("Sum(Sales.SumTurnover)", "Total")

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

Επίπεδο

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

Επίπεδο()

NumberInOrder

Λάβετε τον επόμενο αριθμό σειράς.

NumberByOrder()

NumberInOrderInGrouping

Επιστρέφει τον επόμενο τακτικό αριθμό στην τρέχουσα ομαδοποίηση.

NumberByOrderInGroup()

Μορφή

Λάβετε μια μορφοποιημένη συμβολοσειρά της τιμής που περάσατε.

Η συμβολοσειρά μορφής ορίζεται σύμφωνα με συμβολοσειρά μορφής 1C: Επιχείρηση.

Επιλογές:

  • Εννοια;
  • Μορφοποίηση συμβολοσειράς.

Μορφή (Αναλώσιμα τιμολόγια. Ποσό εγγράφου, "NPV=2")

Αρχή περιόδου

Επιλογές:

    • Λεπτό;
    • Ημέρα;
    • Μια εβδομάδα;
    • Μήνας;
    • Τέταρτο;
    • Δεκαετία;
    • Μισός χρόνος.

StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Month")

Αποτέλεσμα:

01.10.2002 0:00:00

Τέλος Περιόδου

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

Επιλογές:

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Καθορισμένη ημερομηνία.
  • Τύπος περιόδου. Πληκτρολογήστε String. Περιέχει μία από τις τιμές:
    • Λεπτό;
    • Ημέρα;
    • Μια εβδομάδα;
    • Μήνας;
    • Τέταρτο;
    • Δεκαετία;
    • Μισός χρόνος.

EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Week")

Αποτέλεσμα:

13.10.2002 23:59:59

AddToDate

Η συνάρτηση έχει σχεδιαστεί για να προσθέτει μια συγκεκριμένη τιμή σε μια ημερομηνία.

Επιλογές:

  • Τύπος μεγέθυνσης. Πληκτρολογήστε String. Περιέχει μία από τις τιμές:
    • Λεπτό;
    • Ημέρα;
    • Μια εβδομάδα;
    • Μήνας;
    • Τέταρτο;
    • Δεκαετία;
    • Μισός χρόνος.
  • Ποσό – κατά πόσο χρειάζεστε για να αυξήσετε την ημερομηνία. Τύπος Αριθμός. Το κλασματικό μέρος αγνοείται.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Month", 1)

Αποτέλεσμα:

12.11.2002 10:15:34

Διαφορά ημερομηνίας

Η λειτουργία έχει σχεδιαστεί για να λαμβάνει τη διαφορά μεταξύ δύο ημερομηνιών.

Επιλογές:

  • Εκφραση. Πληκτρολογήστε Ημερομηνία. Αρχική ημερομηνία.
  • Εκφραση. Πληκτρολογήστε Ημερομηνία. Ημερομηνία αφαίρεσης.
  • Τύπος διαφοράς. Πληκτρολογήστε String. Περιέχει μία από τις τιμές:
    • Δεύτερος;
    • Λεπτό;
    • Ημέρα;
    • Μήνας;
    • Τέταρτο;

DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAY")

Αποτέλεσμα:

Υποσυμβολοσειρά

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

Επιλογές:

  • Γραμμή. Πληκτρολογήστε String. Η συμβολοσειρά από την οποία εξάγεται η υποσυμβολοσειρά.
  • Θέση. Τύπος Αριθμός. Η θέση του χαρακτήρα από την οποία ξεκινά η υποσυμβολοσειρά που θα εξαχθεί από τη συμβολοσειρά.
  • Μήκος. Τύπος Αριθμός. Μήκος της εκχωρημένης υποσυμβολοσειράς.

SUBSTRING(Λογαριασμοί.Διεύθυνση, 1, 4)

Μήκος γραμμής

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

Παράμετρος:

  • Γραμμή. Πληκτρολογήστε String. Μια συμβολοσειρά της οποίας το μήκος καθορίζεται.

Γραμμή (Αντισυμβαλλόμενοι. Διεύθυνση)

Ετος

Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει το έτος από μια τιμή τύπου ημερομηνίας.

Παράμετρος:

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται το έτος.

ΕΤΟΣ (Έξοδα. Ημερομηνία)

Τέταρτο

Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει τον αριθμό τριμήνου από μια τιμή τύπου Ημερομηνίας. Ο αριθμός τριμήνου συνήθως κυμαίνεται από 1 έως 4.

Παράμετρος

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται το τρίμηνο
ΤΡΙΜΗΝΟ (Έξοδα. Ημερομηνία)

Μήνας

Αυτή η συνάρτηση έχει σχεδιαστεί για να εξάγει τον αριθμό μήνα από μια τιμή τύπου Ημερομηνίας. Ο αριθμός του μήνα κυμαίνεται συνήθως από 1 έως 12.

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται ο μήνας.
MONTH(Έξοδα.Ημερομηνία)

Ημέρα του Χρόνου

Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα του έτους από μια τιμή τύπου Date. Η ημέρα του έτους κυμαίνεται κανονικά από 1 έως 365 (366).

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται η ημέρα του έτους.
DAYYEAR(Λογαριασμός Εξόδων.Ημερομηνία)

Ημέρα

Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα του μήνα από μια τιμή τύπου Date. Η ημέρα του μήνα κυμαίνεται κανονικά από 1 έως 31.

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται η ημέρα του μήνα.
DAY (Έξοδα. Ημερομηνία)

Μια εβδομάδα

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

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζονται οι αριθμοί της εβδομάδας.
ΕΒΔΟΜΑΔΑ (Έξοδα.Ημερομηνία)

Ημέρα της εβδομάδας

Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει την ημέρα της εβδομάδας από μια τιμή τύπου Ημερομηνίας. Η κανονική ημέρα της εβδομάδας κυμαίνεται από 1 (Δευτέρα) έως 7 (Κυριακή).

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται η ημέρα της εβδομάδας.
ΗΜΕΡΑ ΤΗΣ ΕΒΔΟΜΑΔΑΣ (Ημερομηνία τιμολογίου εξόδων)

Ωρα

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

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται η ώρα της ημέρας.
HOUR(Έξοδα.Ημερομηνία)

Λεπτό

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

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζεται το λεπτό της ώρας.
MINUTE(Έξοδα.Ημερομηνία)

Δεύτερος

Αυτή η συνάρτηση έχει σχεδιαστεί για να λαμβάνει το δευτερόλεπτο του λεπτού από μια τιμή τύπου ημερομηνίας. Το δευτερόλεπτο του λεπτού κυμαίνεται από 0 έως 59.

  • Ημερομηνία Πληκτρολογήστε Ημερομηνία. Η ημερομηνία κατά την οποία καθορίζονται τα δευτερόλεπτα του λεπτού.
SECOND (Έξοδα.Ημερομηνία)

Εξπρές

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

Επιλογές:

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

Express(Data.Props1, "Number(10,3)")

IsNull

Αυτή η συνάρτηση επιστρέφει την τιμή της δεύτερης παραμέτρου εάν η τιμή της πρώτης παραμέτρου είναι 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, είδε τα χαρακτηριστικά του συστήματος διάταξης και επίσης κατανόησε τις βασικές ρυθμίσεις των πεδίων διάταξης. Τώρα θα δούμε νέο υλικό. Πηγαίνω!

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

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

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

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

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

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

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

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

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

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


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


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

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

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