1c υπολογισμένα πεδία. Γλώσσα έκφρασης συστήματος σύνθεσης δεδομένων (1Cv8). Η λειτουργία ελέγχου μιας τιμής για μη NULL

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

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


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

    Λίγο ιστορία

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

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

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

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

    Δύο γλώσσες

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

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

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

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

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

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

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

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

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

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

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

    Παράδειγμα:

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

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

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

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

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

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


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

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


    Σχεδιαστής Αναφορών


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

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

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

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


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

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

    Ρυθμίσεις χρήστη

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


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


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

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

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

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

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

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

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

    2. Ρυθμίστε τα υπολογισμένα πεδία στο ACS

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

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

    Περιγραφή των ίδιων των νέων χαρακτηριστικών:

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

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

    2. COMPUTE EXPRESSION()

    Σύνταξη:

    Υπολογισμός έκφρασης(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

    Περιγραφή:

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

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

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

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

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

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

    Επιλογές

    <Выражение>

    __________________________

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

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

    __________________________

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

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

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

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

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

    _________________________

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

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

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

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

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

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

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

    <Начало>

    _____________________

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

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

    <Конец>

    ____________________

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

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

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

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

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

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

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

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

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

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

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

    · Τρέχον (Τρέχον) . Πρέπει να λάβετε την τρέχουσα καταχώρηση.

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

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

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

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

    _____________________

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

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

    _____________________

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

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

    ____________________

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

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

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

    Για παράδειγμα, εάν η ακολουθία που προκύπτει είναι ταξινομημένη κατά ημερομηνία:
    |ημερομηνία|Πλήρες όνομα|Εννοια
    1 | 1 Ιανουαρίου 2001 | Ivanov M. | 10
    2 | 02 Ιανουαρίου 2001 | Petrov S. | 20
    3 | 03 Ιανουαρίου 2001 | Sidorov R. | τριάντα
    4 | 04 Ιανουαρίου 2001 | Petrov S. | 40

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

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

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

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

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

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

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

    CalculateExpression("Amount(AmountTurnover)", "First", "Current")

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

    CalculateExpression("Course", "Previous")

    Λίστα νέων χαρακτηριστικών:

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

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

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

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

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

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

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

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

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

    [πρέπει να εγγραφείτε για να δείτε τον σύνδεσμο]

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

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

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

    Ο στόχος αυτού του μαθήματος θα είναι:

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

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

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

    Είδος αρχείου - εξωτερική έκθεση:

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

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

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

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

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

    στην καρτέλα " τραπέζια"σύρετε το τραπέζι" Τροφή" από την πρώτη στήλη στη δεύτερη:

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

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

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

    Διαμόρφωση ρυθμίσεων παρουσίασης αναφοράς

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

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

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

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

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

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

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

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

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

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

    Μπράβο, αυτό είναι πολύ καλύτερο.

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

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

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

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

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

    Αποθήκευση και δημιουργία αναφοράς:

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

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

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

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

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

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

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

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

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

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

    Αποθήκευση και δημιουργία αναφοράς:

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

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

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

    Αποθήκευση και δημιουργία αναφοράς:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    &AtClient

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

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

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

    Διαδικασία λήξης

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

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

    DocumentObject = FormAttributeToValue("Object");

    //τοποθετούμε το τμήμα του πίνακα Goods στη δομή με το όνομα GoodsSKD με τον ίδιο τρόπο που υποδείξαμε το όνομα του αντικειμένου που περιέχει τα δεδομένα στο ίδιο το ACS

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

    DataSet.Insert("SKD Goods", DocumentObject.Goods);

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

    OurLayout = DocumentObject.GetLayout(“SKD”);

    Settings = OurLayout.Default Settings;

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

    Layout Layout Builder = Νέο Εργαλείο δημιουργίας διάταξης διάταξης δεδομένων.

    LayoutLayout = LayoutComposer.Run(OurLayout, Settings);

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

    DataCompositionProcessor = Νέος DataCompositionProcessor;

    DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

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

    ReportDocument = Νέο Έγγραφο υπολογιστικού φύλλου.

    OutputProcessor = Νέος OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;

    OutputProcessor.SetDocument(ReportDocument);

    OutputProcessor.Output(DataCompositionProcessor);

    ReturnDocumentReport;

    EndFunctions

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

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

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

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

    Όταν επικοινωνήσουμε, θα λάβουμε:

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

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

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

    ­­- μονοπάτι, καθορίστε το όνομα του χαρακτηριστικού με το οποίο θα αναφερθούμε σε αυτό στο ACS, για παράδειγμα, στο Υπολογισμένα πεδία;

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

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

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

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

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

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

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

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

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

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

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

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

    Επιλογές:

    • Εκφραση. Τύπος Γραμμή;
    • ομαδοποίηση. Τύπος Γραμμή;
    • Τύπος Υπολογισμού. Τύπος Γραμμή;
    • Αρχή
    • Τέλος. Μια συμβολοσειρά που περιέχει μία από τις επιλογές.
    • Ταξινόμηση. Γραμμή;
    • Ιεραρχική Ταξινόμηση;
    • Χειρισμός Παραγγελίας Ίδιων Αξιών

    Μας ενδιαφέρουν οι παράμετροι 4 και 5 ( ΑρχήΚαι Τέλος). Η έκφραση θα μοιάζει με αυτό:

    isNULL((ΥΠΟΛΟΓΙΣΜΟΣ ΕΚΦΡΑΣΗΣ("Τιμή", "Προηγούμενο", "Προηγούμενο") - Τιμή), 0)

    Εδώ υπολογίζουμε την προηγούμενη τιμή του πεδίου Τιμήκαι αφαιρέστε την τρέχουσα τιμή του πεδίου από αυτό Τιμή. Φυσικά, για την πρώτη εγγραφή, η προηγούμενη τιμή δεν θα υπολογιστεί και το αποτέλεσμα της αφαίρεσης με την τιμή του τρέχοντος πεδίου θα είναι Null, έτσι ώστε όλα να είναι "καθαρά" χρησιμοποιούμε τη συνάρτηση isNULL (isNull) για να μετατρέψουμε το Null σε μηδέν. .

    Τοποθετήστε έναν πίνακα τιμών σε ένα κελί εγγράφου υπολογιστικού φύλλου

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

    Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε τη συνάρτηση: ComputeExpressionGroupedValueTable() , το οποίο έχει παραμέτρους:

    • Εκφρασηείναι η έκφραση που πρέπει να αξιολογηθεί. Πληκτρολογήστε String. Μια γραμμή μπορεί να περιέχει πολλές εκφράσεις που χωρίζονται με κόμμα. Κάθε έκφραση μπορεί να ακολουθείται από την προαιρετική λέξη-κλειδί AS και το όνομα της στήλης του πίνακα τιμών. Για παράδειγμα: "Contractor, Amount(AmountTurnover) As SalesVolume".
    • Ομάδες εκφράσεων πεδίων- ομαδοποίηση εκφράσεων πεδίων διαχωρισμένων με κόμματα. Για παράδειγμα, "Εργολάβος, συμβαλλόμενο μέρος"?
    • Επιλογή εγγραφήςείναι μια έκφραση που εφαρμόζεται σε λεπτομερείς εγγραφές. Για παράδειγμα, "DeletionMark = False";
    • Επιλογή Ομαδοποίησης- επιλογή που εφαρμόζεται σε ομαδικές εγγραφές. Για παράδειγμα: "Amount(AmountTurnover) > &Parameter1".

    Για να γίνει αυτό, δημιουργούμε ένα υπολογισμένο πεδίο στο οποίο θα εμφανίσουμε τον πίνακα που προκύπτει και, στη συνέχεια, τοποθετούμε αυτό το πεδίο στους πόρους με την έκφραση CalculateExpressionGroupedValueTable ("Ονοματολογία, ποσότητα")

    Αριθμητικές στήλες

    Ένα παράδειγμα του τρόπου αρίθμησης των στηλών στο SKD.

    Η ουσία της λύσης:

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

    ΣΠΟΥΔΑΙΟΣ!

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

    Για να λάβετε το αποτέλεσμα, πρέπει να δημιουργήσετε ένα υπολογισμένο πεδίο με την έκφραση "Υπάλληλος" + Μορφή(NPP,"FH=3; FH=")και το υπολογιζόμενο όνομα πεδίου, στο οποίο είναι εύκολο να τοποθετηθεί ο Υπάλληλος, στη συνέχεια τοποθετούμε το πεδίο Πλήρες όνομασε έναν πόρο με μια έκφραση Μέγιστο (πλήρες όνομα)ή απλά Πλήρες όνομα- καμία διαφορά

    Εναλλασσόμενες ομάδες με χρωματική επισήμανση

    Κάπου στο Mista ή στο ίδιο 1Cskd.ru υπήρχε μια ερώτηση πώς να τονίσω διαφορετικό χρώμαχορδές που σχηματίζουν ομάδες

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

    Υπολογισμός έκφρασης("Ποσότητα (Διαφορετικά στοιχεία)","Πρώτο", "Προηγούμενο","Μαζί") % 2

    Μετράμε τον αριθμό των διαφορετικών "ομαδοποιήσεων" του πεδίου Ονοματολογία, οι ομαδοποιήσεις μπορούν να μετρηθούν ορίζοντας την τιμή της παραμέτρου ProcessingSameOrderValues ​​= "Together"

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

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

    Στο ίδιο 1CSkd.ru υπήρχε ένα τέτοιο θέμα στο οποίο ο συγγραφέας ζητά βοήθεια για να κάνει μια αναφορά, όπου σε μία από τις στήλες απαιτείται μια λίστα χαρακτηριστικών (μεγέθη παπουτσιών) με τον αριθμό τους. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

    Αυτό επιτυγχάνεται χρησιμοποιώντας την ίδια λειτουργία Υπολογισμός ExpressionWith GroupingArray()

    Σε αυτό το παράδειγμα, η συνάρτηση μοιάζει με αυτό:

    Υπολογισμός ExpressionWith GroupingArray("Characteristic of Nomenclature.Description +
    ""("" + Μορφή(Αριθμός υπολοίπου,""CH=0"") + "")""",
    ,
    "ValueFilled(FeatureNomenclature)")

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

    Ενώστε δύο πίνακες με κλειδί String = Number

    Ή μια παραλλαγή του τρόπου μετατροπής μιας τιμής τύπου αριθμού σε συμβολοσειρά στο SKD

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

    Για να μετατρέψετε έναν αριθμό σε συμβολοσειρά, απλώς χρησιμοποιήστε τη συνάρτηση γλώσσας έκφρασης του συστήματος σύνθεσης δεδομένων SKD Γραμμή()ή Μορφή()

    Για να μετατρέψετε μια συμβολοσειρά σε αριθμό, μπορείτε να χρησιμοποιήσετε τη συνάρτηση Υπολογίζω()

    Ταξινόμηση κατά συμβολοσειρά ως κατά αριθμό

    Στο παράδειγμά μου, θα εμφανίσω απλώς τον κατάλογο των υπαλλήλων, ταξινομώντας τον κατά αριθμός προσωπικού(κώδικας)

    Το αποτέλεσμα θα μοιάζει με αυτό:

    Αυτό επιτυγχάνεται δημιουργώντας ένα υπολογισμένο πεδίο και χρησιμοποιώντας τη συνάρτηση γλώσσας έκφρασης SKD Υπολογίζω()

    1. Δημιουργήστε ένα υπολογισμένο πεδίο TabNumberNumber, με την έκφραση: Υπολογισμός (Employee.Code)
    2. Ταξινόμηση κατά αυτό το πεδίο

    Στην πραγματικότητα, αυτή είναι η μετατροπή μιας συμβολοσειράς σε αριθμό χρησιμοποιώντας τη συνάρτηση της γλώσσας έκφρασης SKD Υπολογίζω()

    Σας συμβουλεύω επίσης να δείτε τα "Βίντεο σεμινάρια στο skd" (που αναζητούνται εύκολα στο Google)

    Κατά την ανάπτυξη, χρησιμοποιώ ένα μετατρεπόμενο .