Δημιουργία και εργασία με αιτήματα (για αρχάριους). Δημιουργία και εργασία με αιτήματα (για αρχάριους) 1s 8.3 εάν υπάρχει αίτημα

Ο προγραμματισμός 1C αποτελείται από περισσότερα από τη σύνταξη ενός προγράμματος. Το 1C είναι ένα πλινθίο ενεργειών και δεδομένων χρήστη με τα οποία εργάζεται.

Τα δεδομένα αποθηκεύονται σε μια βάση δεδομένων. Τα ερωτήματα 1C είναι ένας τρόπος για να ανακτήσετε δεδομένα από μια βάση δεδομένων για να τα εμφανίσετε στον χρήστη σε μια φόρμα ή να τα επεξεργαστείτε.

Το θεμελιώδες μέρος της έκθεσης είναι το αίτημα 1C. Στην περίπτωση μιας αναφοράς, το ACS είναι το μεγαλύτερο μέρος της αναφοράς.

Κάτσε κάτω. Να πάρει μια ανάσα. Ηρέμησε. Τώρα θα σας πω τα νέα.

Για να προγραμματίσετε σε 1C, δεν αρκεί να γνωρίζετε τη γλώσσα προγραμματισμού 1C. Πρέπει επίσης να γνωρίζετε τη γλώσσα ερωτήματος 1C.

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

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

Πώς χρησιμοποιούνται τα αιτήματα 1C

Όταν ένας χρήστης εκκινεί το 1C σε λειτουργία Enterprise, δεν υπάρχει ούτε ένα γραμμάριο δεδομένων στον τρέχοντα πελάτη. Επομένως, όταν χρειάζεται να ανοίξετε έναν κατάλογο, το 1C ζητά δεδομένα από τη βάση δεδομένων, δηλαδή κάνει ένα αίτημα 1C.

Τα ερωτήματα 1C είναι:

  • Αυτόματα ερωτήματα 1C
    Δημιουργείται αυτόματα από το σύστημα. Έχετε δημιουργήσει μια φόρμα λίστας εγγράφων. Προστέθηκε μια στήλη. Αυτό σημαίνει ότι όταν ανοίγετε αυτήν τη φόρμα σε λειτουργία Enterprise, θα υπάρχει ένα ερώτημα και θα ζητηθούν τα δεδομένα για αυτήν τη στήλη.
  • Ημιαυτόματα ερωτήματα 1C
    Υπάρχουν πολλές μέθοδοι (συναρτήσεις) στη γλώσσα 1C, όταν γίνεται πρόσβαση, γίνεται ένα ερώτημα στη βάση δεδομένων. Για παράδειγμα.GetObject()
  • Μη αυτόματα ερωτήματα 1C (που γράφτηκε από τον προγραμματιστή ειδικά ως ερώτημα)
    Μπορείτε να γράψετε μόνοι σας ένα αίτημα 1C σε κώδικα και να το εκτελέσετε.

Δημιουργία και εκτέλεση ερωτημάτων 1C

Ένα αίτημα 1C είναι το πραγματικό κείμενο του αιτήματος στη γλώσσα αιτήματος 1C.
Το κείμενο μπορεί να γραφτεί με στυλό. Δηλαδή, πάρε το και γράψε το (αν ξέρεις αυτή τη γλώσσα).

Δεδομένου ότι το 1C προωθεί την έννοια του οπτικού προγραμματισμού, όπου πολλά ή σχεδόν όλα μπορούν να γίνουν χωρίς να γράψετε κώδικα με το χέρι, υπάρχει ένα ειδικό αντικείμενο Query Constructor που σας επιτρέπει να σχεδιάσετε το κείμενο ενός ερωτήματος χωρίς να γνωρίζετε τη γλώσσα του ερωτήματος. Ωστόσο, τα θαύματα δεν συμβαίνουν - για αυτό πρέπει να ξέρετε πώς να συνεργαστείτε με τον κατασκευαστή.

Μόλις το κείμενο του αιτήματος 1C είναι έτοιμο, πρέπει να εκτελεστεί. Για το σκοπό αυτό υπάρχει ένα αντικείμενο στον κώδικα 1C Request(). Εδώ είναι ένα παράδειγμα:

Request = New Request();
Query.Text = "ΕΠΙΛΟΓΗ
| Ονοματολογία.Σύνδεσμος
|ΑΠΟ
| Κατάλογος.Ονοματολογία AS Nomenclature
|ΠΟΥ
| Ονοματολογία.Υπηρεσία";
Select = Query.Run().Select();

Αναφορά(Επιλογή.Σύνδεσμος);
EndCycle;

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

Το αποτέλεσμα μπορεί να μεταφορτωθεί σε έναν κανονικό πίνακα:
Fetch = Query.Run().Unload(); //Αποτέλεσμα – πίνακας τιμών

Ή απλώς πηγαίνετε γραμμή προς γραμμή.
Select = Query.Run().Select();
Ενώ Βρόχος Select.Next().
//Κάντε κάτι με τα αποτελέσματα του ερωτήματος
EndCycle;

Εργασία με αιτήματα 1C

Βασικές αρχές των ερωτημάτων 1C

Βασικές αρχές κατασκευής ενός αιτήματος 1C –
ΕΠΙΛΕΞΤΕ Λίστα Πεδίων ΑΠΟ Τίτλος Πίνακα WHERE Συνθήκες

Ένα παράδειγμα κατασκευής ενός τέτοιου αιτήματος 1C:

ΕΠΙΛΕΓΩ
//λίστα πεδίων προς επιλογή
Σύνδεσμος,
Ονομα,
Κώδικας
ΑΠΟ
//όνομα του πίνακα από τον οποίο επιλέγουμε δεδομένα
//list of tables είναι μια λίστα αντικειμένων στο παράθυρο του διαμορφωτή
Κατάλογος.Ονοματολογία
ΟΠΟΥ
//δείχνετε επιλογή
Τύπος προϊόντος = &Υπηρεσία //επιλογή κατά εξωτερική τιμή
Ή Υπηρεσία // Χαρακτηριστικό «Υπηρεσία» τύπου Boolean, επιλογή με τιμή True
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
//Ταξινόμηση
Ονομα

Λίστα πινάκων 1C

Μπορείτε να δείτε τα ονόματα των πινάκων στο παράθυρο του διαμορφωτή. Απλώς πρέπει να γράψετε "Κατάλογος" αντί για "Κατάλογοι", για παράδειγμα "Κατάλογος. Ονοματολογία" ή "Έγγραφο. Πωλήσεις αγαθών και υπηρεσιών" ή "Μητρώο συσσώρευσης. Πωλήσεις".

Υπάρχουν πρόσθετοι πίνακες (εικονικοί) για καταχωρητές που σας επιτρέπουν να λάβετε τους τελικούς αριθμούς.

Information Register.RegisterName.Last Slice(&Date) – 1C αίτημα από το μητρώο πληροφοριών, εάν είναι περιοδικό, για μια συγκεκριμένη ημερομηνία

Μητρώο συσσώρευσης. Όνομα μητρώου. Υπόλοιπα(&Ημερομηνία) – 1C αίτημα από το μητρώο υπολοίπων για μια συγκεκριμένη ημερομηνία

Μητρώο συσσώρευσης.Όνομα μητρώου.Κύκλος εργασιών (&Ημερομηνία έναρξης, &Ημερομηνία λήξης) – Αίτημα 1C από το μητρώο κύκλου εργασιών για την περίοδο από την ημερομηνία έναρξης έως την ημερομηνία λήξης.

Πρόσθετες αρχές

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

ΕΠΙΛΕΓΩ
//Quantity(FieldName) – μετράει την ποσότητα
//Πεδίο AS OtherName – μετονομάζει το πεδίο
Ποσότητα (Σύνδεσμος) AS Ποσότητα Εγγράφων που δημοσιεύτηκαν
ΑΠΟ

ΟΠΟΥ
Διεξήχθη

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

ΕΠΙΛΕΓΩ
//απλώς ένα πεδίο εγγράφου
Οργάνωση,
//μετρήστε την ποσότητα
Ποσότητα(Σύνδεσμος) AS ΠοσότηταΑνά Οργανισμούς
ΑΠΟ
Έγγραφο Πωλήσεις Αγαθών και Υπηρεσιών
ΟΠΟΥ
Διεξήχθη
ΟΜΑΔΑ ΑΠΟ

Οργάνωση

Αυτό το αίτημα 1C θα μας επιστρέψει τον αριθμό των εγγράφων για κάθε οργανισμό (ονομάζεται επίσης "κατά οργανισμό").

Ας υπολογίσουμε επιπλέον το ποσό αυτών των εγγράφων χρησιμοποιώντας ένα αίτημα 1C:

ΕΠΙΛΕΓΩ
//απλώς ένα πεδίο εγγράφου
Οργάνωση,
//μετρήστε την ποσότητα

//μετρήστε το ποσό

ΑΠΟ
Έγγραφο Πωλήσεις Αγαθών και Υπηρεσιών
ΟΠΟΥ
Διεξήχθη
ΟΜΑΔΑ ΑΠΟ
//πρέπει να χρησιμοποιηθεί εάν η λίστα των πεδίων έχει συνάρτηση count() και ένα ή περισσότερα πεδία ταυτόχρονα - τότε πρέπει να ομαδοποιήσετε με βάση αυτά τα πεδία
Οργάνωση

Αυτό το αίτημα 1C θα μας επιστρέψει επίσης το ποσό των εγγράφων.

ΕΠΙΛΕΓΩ
//απλώς ένα πεδίο εγγράφου
Οργάνωση,
//μετρήστε την ποσότητα
Ποσότητα(Σύνδεσμος) AS ΠοσότηταΑνά οργανισμούς,
//μετρήστε το ποσό
Amount(DocumentAmount) AS Amount
ΑΠΟ
Έγγραφο Πωλήσεις Αγαθών και Υπηρεσιών
ΟΠΟΥ
Διεξήχθη
ΟΜΑΔΑ ΑΠΟ
//πρέπει να χρησιμοποιηθεί εάν η λίστα των πεδίων έχει συνάρτηση count() και ένα ή περισσότερα πεδία ταυτόχρονα - τότε πρέπει να ομαδοποιήσετε με βάση αυτά τα πεδία
Οργάνωση
ΠΟ ΑΠΟΤΕΛΕΣΜΑΤΑ Γενικά

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

Εν συντομία σχετικά με τις πρόσθετες δυνατότητες της γλώσσας ερωτημάτων 1C:

  • Συνένωση δεδομένων από πολλούς πίνακες
  • Ένθετα ερωτήματα
  • Αίτημα παρτίδας
  • Δημιουργία των δικών σας εικονικών τραπεζιών
  • Ερώτημα από τον πίνακα τιμών
  • Χρήση ενσωματωμένων συναρτήσεων για λήψη και χειρισμό τιμών.

1C Query Builder

Για να μην γράψετε το κείμενο αίτησης με το χέρι, υπάρχει ένας σχεδιαστής αιτήματος 1C. Απλώς κάντε δεξί κλικ οπουδήποτε στη λειτουργική μονάδα και επιλέξτε 1C Query Designer.

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

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

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

Στην καρτέλα Παραγγελία, εμφανίζεται η ταξινόμηση. Στην καρτέλα Αποτελέσματα – συνοψίζοντας τα αποτελέσματα.

Χρησιμοποιώντας τον σχεδιαστή ερωτημάτων 1C, μπορείτε να μελετήσετε οποιοδήποτε υπάρχον ερώτημα. Για να το κάνετε αυτό, κάντε δεξί κλικ στο κείμενο ενός υπάρχοντος αιτήματος και επιλέξτε επίσης 1C Query Designer - και το αίτημα θα ανοίξει στο 1C Query Designer.

Η γλώσσα ερωτημάτων 1C 8 είναι ένα απαραίτητο εργαλείο για έναν προγραμματιστή 1C· σας επιτρέπει να γράφετε πιο συνοπτικό, απλό, κατανοητό κώδικα και να χρησιμοποιείτε λιγότερους πόρους συστήματος όταν εργάζεστε με δεδομένα. Αυτό το άρθρο ανοίγει μια σειρά μαθημάτων αφιερωμένων στη γλώσσα ερωτημάτων 1C 8. Στο πρώτο μάθημα θα εξετάσουμε τη δομή του κύριου χειριστή αυτής της γλώσσας - ΕΠΙΛΕΓΩ.Χρησιμοποιώντας αυτόν τον τελεστή, μπορείτε να δημιουργήσετε επιλογές από πίνακες βάσεων δεδομένων. Τα επιλεγμένα δεδομένα πίνακα μπορούν να ταξινομηθούν, να τοποθετηθούν οι συνθήκες σε αυτά, να συνδεθούν και να συνδυαστούν με δεδομένα από άλλους πίνακες, να ομαδοποιηθούν κατά διάφορα πεδία και πολλά άλλα.

Γλώσσα ερωτήματος 1C επιχείρηση 8 - Δομή χειριστή SELECT

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

ΕΠΙΛΕΞΤΕ [ΕΠΙΤΡΕΠΕΤΑΙ] [ΔΙΑΦΟΡΕΤΙΚΟ] [ΠΡΩΤΟ Α] [Πεδίο1] [ΩΣ Ψευδώνυμο1], [Πεδίο2] [ΩΣ Ψευδώνυμο2], ... [ΠεδίοM] [ΩΣ Ψευδώνυμο Β] [ΠΡΟΣΩΡΙΣΜΕΝΟ Όνομα πίνακα] [ΑΠΟ Πίνακα1 ΩΣ ΨευδώνυμοΠίνακας1 [[ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ ][LEFT JOIN][FULL JOIN] Table2 AS Ψευδώνυμο Πίνακας2 [[INNER JOIN][LEFT JOIN][FULL JOIN] TableC AS Ψευδώνυμο TablesC BY Expression1 [And Expression2]...[And ExpressionD]] .. ... ΑΠΟ Έκφραση1 [Και Έκφραση2]...[Και ΈκφρασηΕ]] ... [Πίνακας ΩΣ ΠίνακαςF Ψευδώνυμο] ... ] [ΟΜΑΔΑ ΑΝΑ ΟμαδοποίησηΠεδίο1[,] ... [ΟμαδοποίησηΠεδίοG]] [ΠΟΥ Έκφραση1 [ΚΑΙ Έκφραση2] ... [ΚΑΙ Έκφραση Η]] [ΕΝΩΣΗ ΟΛΩΝ...] [; ...] [ΕΥΡΕΤΗΡΙΟ ΑΠΟ Ψευδώνυμο1 ... Ψευδώνυμο Β] [ΣΥΝΟΛΟ [Συνάρτηση Συνάθροισης(Πεδίο1)][,] [Συνάρτηση Συνάθροισης(Πεδίο2)][,] ... [Συνάρτηση Συνάθροισης(Πεδίο Ι)] ΑΠΟ [ΓΕΝΙΚΑ][,] [ GroupingField1][,] ... [GroupingFieldj]]

Λέξεις-κλειδιά και μπλοκ για εργασία με πεδία

  • ΕΠΙΛΕΓΩ— λέξη-κλειδί που υποδεικνύει την αρχή του χειριστή·
  • ΕΠΙΤΡΕΠΕΤΑΙυποδεικνύει ότι η επιλογή πρέπει να περιλαμβάνει εγγραφές πίνακα που έχουν πρόσβαση ανάγνωσης για τον συγκεκριμένο χρήστη.
  • ΔΙΑΦΟΡΟΣυποδεικνύει ότι το δείγμα πρέπει να περιλαμβάνει μόνο διαφορετικές ροές (σε όλα τα πεδία). Με άλλα λόγια, οι διπλές σειρές θα εξαιρεθούν από το δείγμα.
  • ΠΡΩΤΟΣ ΑΕάν καθορίσετε αυτήν τη λέξη-κλειδί, τότε μόνο το πρώτο A από τις σειρές που επιλέγονται από το ερώτημα θα συμπεριληφθεί στην επιλογή, όπου το A είναι ένας φυσικός αριθμός.
  • Μπλοκ πεδίου— αυτό το μπλοκ υποδεικνύει τα πεδία που πρέπει να συμπεριληφθούν στην επιλογή. Αυτά τα πεδία θα είναι επιλεγμένες στήλες. Στην απλούστερη περίπτωση, το πεδίο μοιάζει με αυτό: Ψευδώνυμο Πίνακα.TableFieldName AS Ψευδώνυμο πεδίου

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

Λέξεις-κλειδιά και μπλοκ για εργασία με πίνακες

  • PUT TemporaryTableName- λέξη-κλειδί ΘΕΣΗπροορίζεται για τη δημιουργία ενός προσωρινού πίνακα με ένα συγκεκριμένο όνομα, ο οποίος θα αποθηκευτεί στη μνήμη RAM σε μια δεδομένη περίοδο λειτουργίας 1C 8 έως ότου τελειώσει ή μέχρι να καταστραφεί ο προσωρινός πίνακας. Θα πρέπει να σημειωθεί ότι τα ονόματα των προσωρινών τραπεζιών σε μία συνεδρία 1C 8 δεν πρέπει να επαναλαμβάνονται.
  • Μπλοκ πινάκων και σχέσεων— το μπλοκ υποδεικνύει όλους τους πίνακες που χρησιμοποιούνται σε αυτό το ερώτημα, καθώς και τις μεταξύ τους σχέσεις. Το μπλοκ ξεκινά με μια λέξη-κλειδί ΑΠΟ,ακολουθούμενο από το όνομα και το ψευδώνυμο του πρώτου πίνακα. Εάν αυτός ο πίνακας σχετίζεται με άλλους πίνακες, τότε υποδεικνύονται οι σχέσεις. Η γλώσσα ερωτημάτων 1C περιέχει το ακόλουθο σύνολο τύπων σύνδεσης:
    • ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ— μια εγγραφή από τον αριστερό πίνακα θα συμπεριληφθεί στην επιλογή μόνο εάν πληρούται η προϋπόθεση σύνδεσης, μια εγγραφή από τον δεξιό πίνακα θα συμπεριληφθεί στην επιλογή μόνο εάν πληρούται η προϋπόθεση σύνδεσης.
    • ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ— μια εγγραφή από τον αριστερό πίνακα θα συμπεριληφθεί στην επιλογή σε κάθε περίπτωση, μια εγγραφή από τον δεξιό πίνακα θα συμπεριληφθεί στην επιλογή μόνο εάν πληρούται η προϋπόθεση σύνδεσης.
    • ΠΛΗΡΗΣ ΣΥΝΔΕΣΗ— μια εγγραφή από τον αριστερό πίνακα θα συμπεριληφθεί πρώτα στην επιλογή σε κάθε περίπτωση, τότε μόνο εάν πληρούται η συνθήκη σύνδεσης, μια εγγραφή από τον δεξιό πίνακα θα συμπεριληφθεί πρώτα στην επιλογή σε κάθε περίπτωση και μετά μόνο εάν η συνθήκη σύνδεσης πληρούται. Σε αυτήν την περίπτωση, οι προκύπτουσες διπλές σειρές εξαιρούνται από το δείγμα.

    Μετά τον τύπο σύνδεσης, υποδεικνύεται το όνομα και το ψευδώνυμο του δεύτερου πίνακα. Ακολουθεί η λέξη-κλειδί ΜΕ, ακολουθούμενες από συνθήκες επικοινωνίας που συνδέονται μεταξύ τους από λογικούς τελεστές ΚΑΙ, Ή.Κάθε έκφραση στη συνθήκη πρέπει να επιστρέψει μια Boolean τιμή (True, False). Εάν ο πρώτος πίνακας είναι συνδεδεμένος με άλλους πίνακες εκτός του δεύτερου, τότε υποδεικνύεται ξανά ο τύπος σύνδεσης και ούτω καθεξής. Καθένας από τους πίνακες που συμμετέχουν στη σύνδεση, με τη σειρά του, μπορεί να συνδεθεί με άλλους πίνακες, αυτό φαίνεται στο διάγραμμα δομής ερωτήματος. Εάν ο πίνακας δεν σχετίζεται με τον πρώτο, τότε υποδεικνύεται χωρίς τύπο σύνδεσης, τότε ενδέχεται να ακολουθήσουν οι συνδέσεις του και ούτω καθεξής.

Λέξεις-κλειδιά και μπλοκ μετατροπής δεδομένων

  • Ομαδικό μπλοκ— αυτό το μπλοκ χρησιμοποιείται για την ομαδοποίηση σειρών πίνακα. Οι σειρές συνδυάζονται σε μία εάν οι τιμές των πεδίων που καθορίζονται μετά τη λέξη-κλειδί ΟΜΑΔΑ ΑΠΟαποδεικνύεται ότι είναι το ίδιο. Σε αυτήν την περίπτωση, όλα τα άλλα πεδία αθροίζονται, υπολογίζονται κατά μέσο όρο, μεγιστοποιούνται ή ελαχιστοποιούνται χρησιμοποιώντας συναρτήσεις συγκεντρωτικών στοιχείων. Οι αθροιστικές συναρτήσεις χρησιμοποιούνται σε ένα μπλοκ πεδίου. Παράδειγμα: Maximum(TableAlias.TableFieldName) AS FieldAlias
  • Μπλοκ κατάστασης- σε αυτό το μπλοκ μετά τη λέξη-κλειδί ΟΠΟΥΥποδεικνύονται εκφράσεις υπό όρους που χωρίζονται με λογικούς τελεστές ΚΑΙ, Ή, για να συμπεριληφθεί οποιαδήποτε από τις επιλεγμένες σειρές στο δείγμα, είναι απαραίτητο όλες οι συνθήκες στο άθροισμα να έχουν μια τιμή Αληθής.
  • ΣΥΝΔΥΑΣΤΕ ΤΑ ΠΑΝΤΑ— αυτή η λέξη-κλειδί χρησιμοποιείται για το συνδυασμό ερωτημάτων (τελεστές ΕΠΙΛΕΓΩ). Η γλώσσα ερωτημάτων 1C σάς επιτρέπει να συνδυάσετε πολλά ερωτήματα σε ένα. Για να συγχωνευθούν τα ερωτήματα, πρέπει να έχουν το ίδιο σύνολο πεδίων.
  • «;» - τα ερωτηματικά χρησιμοποιούνται για τον διαχωρισμό εντολών που είναι ανεξάρτητες μεταξύ τους ΕΠΙΛΕΓΩ;
  • ΕΥΡΕΤΗΡΙΟ ΑΠΟ— η λέξη-κλειδί χρησιμοποιείται για την ευρετηρίαση των πεδίων που καθορίζονται μετά από αυτήν·
  • Μπλοκ περίληψης— χρησιμοποιείται για την κατασκευή δειγμάτων που μοιάζουν με δέντρα. Για καθένα από τα πεδία ομαδοποίησης που καθορίζονται μετά τη λέξη-κλειδί ΜΕ,θα δημιουργηθεί μια ξεχωριστή σειρά στην επιλογή. Σε αυτή τη γραμμή, χρησιμοποιώντας συναρτήσεις συγκεντρωτικών στοιχείων, θα υπολογιστούν οι συνολικές τιμές των πεδίων που καθορίζονται μετά τη λέξη-κλειδί ΑΠΟΤΕΛΕΣΜΑΤΑ.

Θέλετε να συνεχίσετε να μαθαίνετε τη γλώσσα ερωτημάτων 1C 8; Στη συνέχεια, διαβάστε το επόμενο άρθρο.

Αίτηση .Κείμενο = "ΕΠΙΛΕΓΩ | StorageUnits.Link |ΑΠΟ | Directory.usStorageUnits ΠΩΣ touseStorageUnits // Παράδειγμα 1: σύγκριση με μια κενή τιμή boolean: |ΠΟΥ | StorageUnits.AllowSelectionFromReserveZone = False // Παράδειγμα 2. αλλά αν οριστεί αυτός ο Boolean, τότε είναι καλύτερα ως εξής: // συνθήκη για αρνητικό Boolean: |ΠΟΥ | ΟΧΙ μονάδες αποθήκευσης. Να επιτρέπεται η επιλογή από τη ζώνη αποθήκευσης // Παράδειγμα 3. επιλογή με βάση την συνθήκη ενός κενού πεδίου που έχει τον τύπο "κατάλογος συγκεκριμένου τύπου" |ΠΟΥ | StorageUnits.ActiveSelectionArea = VALUE(Directory.usSelectionArea.EmptyRef) // Παράδειγμα 3α. επιλογή με βάση την συνθήκη ενός κενού πεδίου που έχει τον τύπο "έγγραφο συγκεκριμένου τύπου" |ΠΟΥ | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // Παράδειγμα 3β. επιλογή με βάση την συνθήκη ενός κενού πεδίου που έχει τον τύπο "έγγραφα διαφορετικών τύπων" ( σύνθετο πεδίο) |ΠΟΥ | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | Ή OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | Ή... (κ.λπ. - παραθέτουμε διαδοχικά τις συνθήκες για όλους τους πιθανούς τύπους αυτού του σύνθετου πεδίου) ) // Παράδειγμα 4. ή αντίστροφα, εάν πρέπει να επιλέξετε μια συμπληρωμένη τιμή του τύπου "string", τότε η συνθήκη θα σας βοηθήσει: |ΠΟΥ | Storage Unit.Name > """" // Παράδειγμα 5. εάν πρέπει να επιλέξετε έγγραφα συγκεκριμένου τύπου, με σύνθετο τύπο δεδομένων, για παράδειγμα, στον μητρώο "RunningTasks", ο πόρος "Task" έχει έναν σύνθετο τύπο, μεταξύ των τιμών του οποίου Το έγγραφο "Επιλογή" είναι δυνατή |ΠΟΥ | EXPRESS(Information RegisterExecutedTasks.Task AS Document.Selection) LINK Document.Selection // Παράδειγμα 5α. Ένα άλλο παρόμοιο παράδειγμα όταν πρέπει να επιλέξετε έγγραφα συγκεκριμένου τύπου | ΕΠΙΛΟΓΗ | ΠΟΤΕ ΓΙΝΕΤΑΙ ΕΚΦΡΑΣΗ (ag Αντιστοιχία Εγγράφων. Έγγραφο DocumentBU AS. Παραλαβή Αγαθών και Υπηρεσιών) ΣΥΝΔΕΣΜΟΣ Έγγραφο. Παραλαβή Αγαθών και Υπηρεσιών | ΤΟΤΕ ""Παραλαβή Αγαθών και Υπηρεσιών"" | ΠΟΤΕ ΝΑ ΕΚΦΡΑΣΤΕ (ag Αντιστοιχία εγγράφων. DocumentBU AS Document. Sales of Goods and Services) LINK Document. Πωλήσεις αγαθών και υπηρεσιών | ΤΟΤΕ ""Πωλήσεις Αγαθών και Υπηρεσιών"" | ΑΛΛΑ """" | ΤΕΛΟΣ ΩΣ Προβολή εγγράφου // Παράδειγμα 6. επιλογή κατά συνθήκη μιας απροσδιόριστης τιμής: |ΠΟΥ | SavedSettings.User = UNDEFINED // Παράδειγμα 7. επιλογή ανά τύπο κίνησης "Εισερχόμενα" του μητρώου συσσώρευσης, "Έξοδα" - ομοίως): |ΠΟΥ | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // Παράδειγμα 8. Πώς να υποδείξετε σε ένα αίτημα ότι δεν υπάρχει ανάγκη να εκτελέσετε το αίτημα (για παράδειγμα, πρέπει να επιστρέψετε μέσω προγραμματισμού, ανάλογα με κάποια συνθήκη, ένα κενό αποτέλεσμα αιτήματος - Request.Text = StrReplace(Request.Text, "WHERE Doc.Link = &DocumentLink" , "WHERE IS THE LIE");). Για να το κάνετε αυτό, απλώς προσθέστε τη συνθήκη "Where is False". Παρεμπιπτόντως, ανεξάρτητα από τον όγκο των δεδομένων που ζητούνται στο δείγμα, ένα τέτοιο αίτημα θα εκτελεστεί άμεσα. |ΠΟΥ ΕΙΝΑΙ ΤΟ ΨΕΜΑ // Παράδειγμα 9. Έλεγχος ότι το αποτέλεσμα του ερωτήματος περιέχει δεδομένα: Αν όχιΑίτηση.Εκτέλεση().Αδειάζω() Επειτα // Παράδειγμα 10. επιλογή με βάση μια κενή ημερομηνία: |ΠΟΥ | tbStrings.CancellationDate = DATETIME(1, 1, 1)

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

1C Λειτουργίες γλώσσας ερωτήματος

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

1. Λειτουργία ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ- αυτή η συνάρτηση δημιουργεί ένα σταθερό πεδίο με τον τύπο "Ημερομηνία".

Σύνταξη: ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Παράδειγμα χρήσης:

2. Λειτουργία ΔΙΑΦΟΡΑ ΗΜΕΡΟΜΗΝΙΑΣ- επιστρέφει τη διαφορά μεταξύ δύο ημερομηνιών σε μία από τις διαστάσεις (έτος, μήνας, ημέρα, ώρα, λεπτό, δευτερόλεπτο). Η μέτρηση μεταβιβάζεται ως παράμετρος.

Σύνταξη: ΔΙΑΦΟΡΑ(<Дата1>, <Дата2>, <Тип>)

Παράδειγμα χρήσης:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days";

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

Σύνταξη: VALUE(<Имя>)

Παράδειγμα χρήσης:

Request.Text = "SELECT //προκαθορισμένο στοιχείο | VALUE(Directory.Currencies.Dollar) AS Dollar, //empty link | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //τιμή μεταφοράς | VALUE(Transfer . Νομικό άτομο. Ατομικό) AS Individual, //προκαθορισμένος λογαριασμός | VALUE(Λογαριασμός. Αυτοφερόμενο. Υλικά) AS Account_10" ;

4. Λειτουργία SELECT- έχουμε μπροστά μας ένα ανάλογο της κατασκευής IF, το οποίο χρησιμοποιείται στον κώδικα, μόνο αυτό χρησιμοποιείται σε ερωτήματα 1C.

Σύνταξη: ΕΠΙΛΟΓΗ ΠΟΤΕ<Выражение>ΕΠΕΙΤΑ<Выражение>ΣΕ ΔΙΑΦΟΡΕΤΙΚΗ ΠΕΡΙΠΤΩΣΗ<Выражение>ΤΕΛΟΣ

Παράδειγμα χρήσης:

Request.Text = //αν το ποσό είναι μεγαλύτερο από 7500, τότε θα πρέπει να υπάρχει έκπτωση 300 ρούβλια, //οπότε εάν ενεργοποιηθεί η συνθήκη τότε η συνάρτηση //επιστρέφει Sum - 300 //διαφορετικά το αίτημα θα επιστρέψει απλά Sum "ΕΠΙΛΟΓΗ | ΕΠΙΛΕΞΤΕ | ΟΤΑΝ TCReceipts.Amount > 7500 | THEN TCReceipts.Amount - 300 | ELSE TCReceipts.Amount | ΤΕΛΟΣ ΩΣ ΠοσόΜε Έκπτωση | ΑΠΟ | Έγγραφο.Παραλαβή αγαθώνΥπηρεσίες.TCReceiptsAS"

5. Λειτουργία EXPRESS- σας επιτρέπει να εκφράσετε ένα σταθερό πεδίο με έναν συγκεκριμένο τύπο.

Σύνταξη: EXPRESS (Όνομα πεδίου AS TypeName)

Παράδειγμα χρήσης:

Query.Text = "ΕΠΙΛΟΓΗ ΔΙΑΦΟΡΩΝ | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | WHEN Sales.Registrar LINK Document.Expense | ΤΟΤΕ EXPRESS(Sales.Registrar AS Document.Implementation) | ΤΕΛΟΣ | ... | END AS Number | FROM | RegisterAcumulations.Purchases AS Purchases";

Υπάρχει άλλη επιλογή για τη χρήση της συνάρτησης EXPRESS σε πεδία μικτών τύπων, πού εμφανίζονται; Το απλούστερο παράδειγμα είναι ο «Καταχωρητής» για οποιοδήποτε μητρώο. Γιατί λοιπόν μπορεί να χρειαστεί να προσδιορίσουμε τον τύπο στον καταχωρητή; Ας εξετάσουμε την κατάσταση όταν επιλέγουμε το πεδίο "Αριθμός" από τον καταχωρητή, από ποιον πίνακα θα επιλεγεί ο αριθμός; Η σωστή απάντηση όλων! Επομένως, για να λειτουργεί γρήγορα το ερώτημά μας, θα πρέπει να καθορίσουμε έναν ρητό τύπο χρησιμοποιώντας τη συνάρτηση EXPRESS

Παράδειγμα χρήσης:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. Λειτουργία ISNULL(εναλλακτική ορθογραφία ISNULL) - εάν το πεδίο είναι τύπου NULL, τότε αντικαθίσταται με τη δεύτερη παράμετρο της συνάρτησης.

Σύνταξη: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Παράδειγμα χρήσης:

Σημειώστε επίσης ότι είναι σκόπιμο να αντικαθιστάτε ΠΑΝΤΑ τον τύπο NULL με κάποια τιμή, γιατί Η σύγκριση με τον τύπο NULL επιστρέφει πάντα FALSE ακόμα κι αν συγκρίνετε NULL με NULL. Τις περισσότερες φορές, οι τιμές NULL σχηματίζονται ως αποτέλεσμα της ένωσης πινάκων (όλοι οι τύποι ενώσεων εκτός από τους εσωτερικούς).

Query.Text = //Επιλέξτε ολόκληρο το στοιχείο και τα υπόλοιπά του //αν δεν υπάρχει υπόλοιπο σε κάποιο στοιχείο, τότε θα υπάρχει ένα πεδίο //NULL το οποίο θα αντικατασταθεί με την τιμή 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remainder | FROM | Κατάλογος. Ονοματολογία AS Αρ.

7. Λειτουργία ΑΝΤΙΠΡΟΣΩΠΗΣΗΣ- σας επιτρέπει να λάβετε μια αναπαράσταση του πεδίου αιτήματος.

Σύνταξη: ΕΚΤΕΛΕΣΗ(<НаименованиеПоля>)

Παράδειγμα χρήσης:

Query.text = "Επιλογή | Αντιπροσώπευση (freeRemainingRemains.Nomenclature) ως ονοματολογία, εκπροσώπηση (freeRemainingRemaining.WareHouse) ως αποθήκη, |

Κατασκευάζει στη γλώσσα ερωτημάτων 1C

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

1. ΣΥΝΔΕΣΜΟΣ Κατασκευής- είναι ένας λογικός τελεστής για τον έλεγχο ενός τύπου αναφοράς. Συχνότερα συναντάται κατά τον έλεγχο ενός πεδίου σύνθετου τύπου έναντι ενός συγκεκριμένου τύπου. Σύνταξη: ΣΥΝΔΕΣΜΟΣ<Имя таблицы>

Παράδειγμα χρήσης:

Request.Text = //εάν ο τύπος τιμής εγγραφής είναι παραλαβή παραστατικού, //τότε το ερώτημα θα επιστρέψει "Παραλαβή αγαθών", διαφορετικά "Πωλήσεις αγαθών" "ΕΠΙΛΟΓΗ | ΕΠΙΛΕΞΤΕ | ΟΤΑΝ Υπολείπεται.Σύνδεσμος Καταχωρητή Έγγραφο. Παραλαβή ΑγαθώνΥπηρεσίες | ΜΕΤΑ ""Απόδειξη" | ΑΛΛΟ ""Κατανάλωση"" | ΤΕΛΟΣ ΩΣ Είδος Κίνησης | ΑΠΟ | Μητρώο συσσώρευσης. Υπόλοιπα Προϊόντα σε Αποθήκες ΩΣ Υπολείμματα" ;

2. Σχεδιασμός ΜΕΤΑΞΥ- αυτός ο τελεστής ελέγχει εάν η τιμή είναι εντός του καθορισμένου εύρους.

Σύνταξη: ΜΕΤΑΞΥ<Выражение>ΚΑΙ<Выражение>

Παράδειγμα χρήσης:

Request.Text = //λήψη ολόκληρης της ονοματολογίας της οποίας ο κωδικός βρίσκεται στην περιοχή από 1 έως 100 "ΕΠΙΛΟΓΗ | Ονοματολογία.Σύνδεσμος |FROM | Κατάλογος.Ονοματολογία ΩΣ Ονοματολογία |ΠΟΥ | Ονοματολογία.Κωδικός Μεταξύ 1 ΚΑΙ 100" ;

3. Κατασκευή Β και Β ΙΕΡΑΡΧΙΑ- ελέγξτε εάν η τιμή βρίσκεται στη λίστα μεταφερόμενων (πίνακες, πίνακες τιμών κ.λπ. μπορούν να μεταφερθούν ως λίστα). Ο τελεστής IN HIERARCHY σάς επιτρέπει να προβάλετε την ιεραρχία (ένα παράδειγμα χρήσης του Λογαριασμού).

Σύνταξη: ΣΕ(<СписокЗначений>), ΣΤΗΝ ΙΕΡΑΡΧΙΑ(<СписокЗначений>)

Παράδειγμα χρήσης:

Request.Text = //επιλέξτε όλους τους δευτερεύοντες λογαριασμούς του λογαριασμού "SELECT | Self-supporting. Link AS Account | FROM | Chart of Account. Self-supporting AS Self-supporting | WHERE | Self-supporting. Link IN HIERARCHY VALUE (Γράφημα Λογαριασμοί. Αυτοφερόμενο. Αγαθά)";

4. Σχεδιασμός ΠΑΡΟΜΟΙΟ- Αυτή η συνάρτηση μας επιτρέπει να συγκρίνουμε μια συμβολοσειρά με ένα μοτίβο συμβολοσειράς.

Σύνταξη: ΑΡΕΣΕΙ "<ТекстШаблона>"

Επιλογές μοτίβου σειράς:

% - μια ακολουθία που περιέχει οποιονδήποτε αριθμό αυθαίρετων χαρακτήρων.

Ένας αυθαίρετος χαρακτήρας.

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

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

Παράδειγμα χρήσης:

Ερώτημα.Κείμενο = //βρείτε ολόκληρη την ονοματολογία που περιέχει τη ρίζα TABUR και ξεκινά //είτε με μικρό ή κεφαλαίο γράμμα t "ΕΠΙΛΟΓΗ | Ονοματολογία. Σύνδεσμος | ΑΠΟ | Κατάλογος. Ονοματολογία ΩΣ Ονοματολογία | ΠΟΥ | Προϊόντα. Όνομα LIKE "" [Tt ]abur%""" ;

5. Σχεδιασμός ΕΠΙΤΡΕΠΕΤΑΙ- αυτός ο χειριστής σάς επιτρέπει να επιλέξετε μόνο εκείνες τις εγγραφές από τη βάση δεδομένων για τις οποίες ο καλών έχει άδεια ανάγνωσης. Αυτά τα δικαιώματα διαμορφώνονται σε επίπεδο εγγραφής (RLS).

Σύνταξη: ΕΠΙΤΡΕΠΕΤΑΙ γράφεται μετά τη λέξη-κλειδί ΕΠΙΛΟΓΗ

Παράδειγμα χρήσης:

Request.Text = "ΕΠΙΛΟΓΗ ΕΠΙΤΡΕΠΩΝ | Αντισυμβαλλόμενοι. Σύνδεσμος | ΑΠΟ | Κατάλογος. Αντισυμβαλλόμενοι ΩΣ Αντισυμβαλλόμενοι";

6. Σχεδιασμός ΔΙΑΦΟΡΟΙ- σας επιτρέπει να επιλέξετε εγγραφές στις οποίες δεν υπάρχουν διπλότυπες εγγραφές.

Σύνταξη: ΔΙΑΦΟΡΕΣ γράφεται μετά τη λέξη-κλειδί ΕΠΙΛΟΓΗ

Παράδειγμα χρήσης:

Request.Text = //επιλέγει εγγραφές στις οποίες ο αναγνώστης έχει δικαιώματα "ΕΠΙΛΟΓΗ ΔΙΑΦΟΡΩΝ | Αντισυμβαλλόμενοι. Όνομα | ΑΠΟ | Κατάλογος. Αντισυμβαλλόμενοι ΩΣ Αντισυμβαλλόμενοι" ;

Επίσης, η ΔΙΑΦΟΡΙΚΗ κατασκευή μπορεί να χρησιμοποιηθεί με τον χειριστή ALLOWED και άλλους χειριστές.

Παράδειγμα χρήσης:

Request.Text = //επιλέγει διάφορες εγγραφές στις οποίες ο αναγνώστης έχει δικαιώματα "ΕΠΙΛΟΓΗ ΕΠΙΤΡΕΠΩΝ ΔΙΑΦΟΡΩΝ | Αντισυμβαλλόμενοι. Όνομα | ΑΠΟ | Κατάλογος. Αντισυμβαλλόμενοι ΩΣ Αντισυμβαλλόμενοι";

7. Σχεδιασμός ΠΡΩΤΑ- επιλέγει τον αριθμό των εγγραφών που καθορίζονται στην παράμετρο από το αποτέλεσμα του ερωτήματος.

Σύνταξη: ΠΡΩΤΟΣ<число>

Παράδειγμα χρήσης:

Request.Text = //επιλέξτε τους πρώτους 4 αριθμούς CCD από τον κατάλογο "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Σχεδιασμός ΓΙΑ ΑΛΛΑΓΗ- σας επιτρέπει να κλειδώσετε ένα τραπέζι, λειτουργεί μόνο σε συναλλαγές (σχετικό μόνο για αυτόματα κλείδωμα).

Σύνταξη: ΓΙΑ ΑΛΛΑΓΗ<НаименованиеТаблицы>

Παράδειγμα χρήσης:

Ερώτημα.Κείμενο = "ΕΠΙΛΟΓΗ | Ελεύθερα υπολείμματα. Ονοματολογία, | Δωρεάν υπολείμματα. Αποθήκη, | Ελεύθερα υπολείμματα. Απομένουν σε απόθεμα | ΑΠΟ | Μητρώο συσσωρεύσεων. Δωρεάν υπολείμματα. Υπολείμματα ΩΣ Ελεύθερα υπολείμματα Υπολείμματα | ΓΙΑ ΑΛΛΑΓΗ | . Δωρεάν υπολείμματα.

9. Σχεδιασμός ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ- οργανώνει δεδομένα ανά συγκεκριμένο πεδίο. Εάν το πεδίο είναι σύνδεσμος, τότε κατά τη ρύθμιση της σημαίας ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΓΕΛΙΑΗ ταξινόμηση θα γίνει κατά αναπαράσταση συνδέσμου· εάν η σημαία είναι απενεργοποιημένη, τότε οι σύνδεσμοι ταξινομούνται με βάση την αρχαιότητα της διεύθυνσης συνδέσμου στη μνήμη.

Σύνταξη: ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ<НаименованиеПоля>ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΓΕΛΙΑ

Παράδειγμα χρήσης:

Query.Text = "ΕΠΙΛΟΓΗ | Ελεύθερα υπολείμματα. Ονοματολογία AS Ονοματολογία, | Ελεύθερα υπολείμματα. Αποθήκη AS Αποθήκη, | Ελεύθερα υπολείμματα που απομένουν. Σε απόθεμα | ΑΠΟ | Ονοματολογία | ΑΥΤΟΜΑΤΗ ΑΝΑΚΤΗΣΗ ΠΑΡΑΓΓΕΛΙΩΝ";

10. Σχεδιασμός GROUP BY- χρησιμοποιείται για την ομαδοποίηση συμβολοσειρών ερωτήματος κατά συγκεκριμένα πεδία. Τα αριθμητικά πεδία πρέπει να χρησιμοποιούνται με οποιαδήποτε αθροιστική συνάρτηση.

Σύνταξη: ΟΜΑΔΑ ΑΠΟ<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Παράδειγμα χρήσης:

Query.Text = "ΕΠΙΛΟΓΗ | ProductsInWarehouses.Ονοματολογία AS Ονοματολογία, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS INSTTOCK |FROM | RegisterAcumulations.ProductsInWarehouses AS ProductsInWarehouses. σ.Αποθήκη" ;

11. Σχεδιασμός HAVING- σας επιτρέπει να εφαρμόσετε μια αθροιστική συνάρτηση σε μια συνθήκη επιλογής δεδομένων, παρόμοια με την κατασκευή WHERE.

Σύνταξη: ΕΧΟΝΤΑΣ<агрегатная функция с условием>

Παράδειγμα χρήσης:

Query.Text = //επιλέγει ομαδοποιημένες εγγραφές όπου το πεδίο InStock είναι μεγαλύτερο από 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK.FROM | RegisterAccumulationSItemsInStocks | ΟΜΑΔΑ ΑΝΑ | ΠροϊόνταΣτιςΑποθήκες.Ονοματολογία, | ΠροϊόνταΣτιςΑποθήκες.Αποθήκη | |ΔΙΑΘΕΣΙΜΟ | ΠΟΣΟ(ΠροϊόνταΣτιςΑποθήκες.Σε Απόθεμα) > 3" ;

12. Κατασκευές ΔΕΙΚΤΗΣ ΑΠΟ- χρησιμοποιείται για την ευρετηρίαση του πεδίου ερωτήματος. Ένα ερώτημα με ευρετηρίαση χρειάζεται περισσότερο χρόνο για να ολοκληρωθεί, αλλά επιταχύνει την αναζήτηση μέσω ευρετηριασμένων πεδίων. Μπορεί να χρησιμοποιηθεί μόνο σε εικονικούς πίνακες.

Σύνταξη: ΕΥΡΕΤΗΡΙΟ ΑΠΟ<Поле1, ... , ПолеN>

Παράδειγμα χρήσης:

Query.Text = "ΕΠΙΛΟΓΗ | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | ΕΥΡΕΤΗΡΙΟ ΑΠΟ | Ts.NameOS, | Ts .CodeOS";

13. Σχεδιασμός ΠΟΥ- σας επιτρέπει να επιβάλετε μια συνθήκη σε οποιαδήποτε πεδία επιλογής. Το αποτέλεσμα θα περιλαμβάνει μόνο εγγραφές που ικανοποιούν την προϋπόθεση.

Σύνταξη: ΟΠΟΥ<Условие1 ОператорЛогСоединения УсловиеN>

Παράδειγμα χρήσης:

Query.Text = //επιλέγονται όλες οι εγγραφές με CompensationRemaining<>0 και //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPOREmains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains ensationRPOstat ki |ΠΟΥ |ΑποζημίωσηRPORαπομένει.ΑποζημίωσηΥπόλοιπο<>0 | Και CompensationRPOREemains.AmountForCalcCompRemaining> 100" ;

14. Σχεδιαστικά ΑΠΟΤΕΛΕΣΜΑΤΑ... ΓΕΝΙΚΑ- χρησιμοποιείται για τον υπολογισμό των συνόλων· η σχεδίαση καθορίζει τα πεδία με τα οποία θα υπολογιστούν τα σύνολα και θα εφαρμοστούν συγκεντρωτικές συναρτήσεις στα συνολικά πεδία. Όταν χρησιμοποιούνται σύνολα για κάθε πεδίο μετά την κατασκευή TOTAL, τα δεδομένα ομαδοποιούνται. Υπάρχει μια προαιρετική ΓΕΝΙΚΗ κατασκευή· η χρήση της παρέχει επίσης πρόσθετη ομαδοποίηση. Θα δείτε ένα παράδειγμα του αποτελέσματος του αιτήματος παρακάτω.

Σύνταξη: ΑΠΟΤΕΛΕΣΜΑΤΑ<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>ΜΕ<ОБЩИЕ> <Поле1, ... , ПолеN>

Παράδειγμα χρήσης:

αίτημα Διακανονισμός ΜΕ Αντισυμβαλλομένους. Υπόλοιπα ΩΣ Υπολογισμοί | ΣΥΝΟΛΟ | ΠΟΣΟ (Υπόλοιπο) | Λογισμικό | ΓΕΝΙΚΑ, | Τύπος συμφωνίας";

Το σχήμα περιγράφει τις ομαδοποιήσεις που σχηματίστηκαν κατά την εκτέλεση του αιτήματος, το επάνω αναφέρεται στην ενότητα ΓΕΝΙΚΑ και το δεύτερο στο πεδίο Τύπος συμφωνίας συμφωνίας αντισυμβαλλομένου.

Σε αυτό το άρθρο θα εξετάσουμε το θέμα των ένθετων πινάκων στη γλώσσα ερωτημάτων 1C.

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

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

Ας επεκτείνουμε αυτόν τον πίνακα

Και σε αυτό βλέπουμε το τμήμα πίνακα "Υπηρεσίες".

Ας επιλέξουμε ολόκληρο αυτό το μέρος του πίνακα.

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

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

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

Ας κάνουμε κλικ στο OK στον σχεδιαστή και ας δούμε πώς θα μοιάζει το αίτημά μας.

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

Ας εκπληρώσουμε το αίτημα.

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

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

Ας δούμε πώς θα εκτελεστεί ένα τέτοιο αίτημα.

Το μόνο πράγμα είναι ότι αυτός ο αστερίσκος δεν θα αποθηκευτεί αν ανοίξουμε τον κατασκευαστή ερωτήματος.

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

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

Παρακάτω είναι ένα μικρό παράδειγμα κώδικα που λειτουργεί με ένθετο πίνακα:


&Στον διακομιστή
Διαδικασία FillOnServer()
Request = Νέο αίτημα;
Αίτηση. Κείμενο = "ΕΠΙΛΕΓΩ
| Πώληση προϊόντος. Σύνδεσμος,
| Πώληση προϊόντων.προϊόντων.(
| Προϊόν,
| Ποσότητα
|ΑΠΟ
| Έγγραφο. Πώληση προϊόντων ΠΩΣ ΝΑ ΠΩΛΗΣΕΤΕ Προϊόντα"
;
Ανάκτηση = Ερώτημα. Τρέξιμο(). Επιλέγω();
Επιλογή αντίο. Επόμενο() Βρόχο
TopLine of the Tree = Πώληση προϊόντων. GetItems();
NewRow = TopRowTree. Προσθήκη();
Νέα γραμμή. Σύνδεσμος = Επιλογή. Σύνδεσμος;
TableProducts = Επιλογή. Εμπορεύματα;
SelectionProducts = TableProducts. Επιλέγω();
Ενώ Επιλογή Προϊόντων. Επόμενο() Βρόχο
TreeChildRow = NewRow. GetItems();
ProductRow = ChildTreeRow. Προσθήκη();
ProductString. Σύνδεσμος = Επιλογή προϊόντος. Προϊόν;
ProductString. Ποσότητα = Στοιχεία δείγματος. Ποσότητα ;
EndCycle;
EndCycle;
Τέλος Διαδικασίας

Επιτρέψτε μου να εξηγήσω τον παραπάνω κώδικα.

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

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

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

Αυτό είναι το αποτέλεσμα που θα επιστρέψει αυτός ο κωδικός

Έχετε ακόμα ερωτήσεις;

Θα τις απαντήσετε μόνοι σας όταν μελετήσετε το μάθημά μου “Queries in 1C for Beginners”. Όπου αυτά και πολλά άλλα θέματα συζητούνται αναλυτικότερα. Όλες οι πληροφορίες δίνονται σε απλή και προσβάσιμη μορφή και είναι κατανοητές ακόμα και σε όσους δεν είναι ιδιαίτερα εξοικειωμένοι με τον προγραμματισμό σε 1C.

Κωδικός προσφοράς για έκπτωση 20%: hrW0rl9Nnx

Υποστηρίξτε το έργο μου δίνοντας οποιοδήποτε ποσό

Εγγραφείτε στις ομάδες μου.