1c ψευδώνυμο αναμενόμενο αίτημα. Χρήση επιλογών που βασίζονται σε μη ευρετηριασμένα πεδία

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

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

Σχέδιο εργασίας με αίτημα

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

  1. Δημιουργία αντικειμένου αιτήματος και ορισμός του κειμένου αίτησης.
  2. Ρύθμιση παραμέτρων αιτήματος.
  3. Εκτέλεση αιτήματος και λήψη του αποτελέσματος.
  4. Παράκαμψη του αποτελέσματος αιτήματος και επεξεργασία των ληφθέντων δεδομένων.

1. Αντικείμενο Αίτησηέχει την ιδιοκτησία Κείμενο, στο οποίο πρέπει να αντιστοιχίσετε το κείμενο αίτησης.

// Επιλογή 1
Request = New Request;
Αίτηση . Κείμενο =
"ΕΠΙΛΕΓΩ
| Συναλλαγματικές ισοτιμίες. Περίοδος,
| Συναλλαγματικές ισοτιμίες. Νόμισμα,
| Συναλλαγματικές ισοτιμίες
|ΑΠΟ

|ΠΟΥ
;

// Επιλογή 2
Request = New Request("ΕΠΙΛΕΓΩ
| Συναλλαγματικές ισοτιμίες. Περίοδος,
| Συναλλαγματικές ισοτιμίες. Νόμισμα,
| Συναλλαγματικές ισοτιμίες
|ΑΠΟ
| Μητρώο Πληροφοριών.Συναλλαγματικές Τιμές ΩΣ Τιμές Νομισμάτων
|ΠΟΥ
| Συναλλαγματικές ισοτιμίες. Νόμισμα = &Νόμισμα");

2. Η ρύθμιση των τιμών των παραμέτρων πραγματοποιείται χρησιμοποιώντας τη μέθοδο SetParameter(< Имя>, < Значение>) . Οι παράμετροι στο κείμενο της αίτησης υποδεικνύονται με το σύμβολο " & και χρησιμοποιούνται συνήθως σε συνθήκες επιλογής (ενότητα WHERE) και σε παραμέτρους εικονικού πίνακα.

Αίτηση);

3. Μετά την εκχώρηση του κειμένου και τη ρύθμιση των παραμέτρων, πρέπει να εκτελεστεί η αίτηση και να ληφθεί το αποτέλεσμα εκτέλεσης. Η εκτέλεση εκτελείται με τη μέθοδο Execute(), η οποία επιστρέφει ένα αντικείμενο Αποτέλεσμα ερωτήματος. Από το αποτέλεσμα του ερωτήματος μπορείτε:

  • λάβετε μια επιλογή χρησιμοποιώντας τη μέθοδο Επιλογή (< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • μεταφορτώστε τιμές σε πίνακα τιμών ή δέντρο τιμών χρησιμοποιώντας τη μέθοδο Μεταφόρτωση (< ТипОбхода>) .

// Λήψη δείγματος

Δείγμα = Αποτέλεσμα ερωτήματος. Επιλέγω();

// Λήψη πίνακα τιμών
RequestResult = Αίτημα. Τρέξιμο();
Τραπέζι = Αποτέλεσμα ερωτήματος. Ξεφορτώνω();

4. Μπορείτε να παρακάμψετε την επιλογή αποτελεσμάτων ερωτήματος χρησιμοποιώντας έναν βρόχο:

Αντίο Βρόχος Sample.Next().
Αναφορά(Επιλογή.Μάθημα);
EndCycle;

Ένα πλήρες παράδειγμα εργασίας με ένα αίτημα μπορεί να μοιάζει με αυτό:

// Στάδιο 1. Δημιουργία αιτήματος και ρύθμιση του κειμένου αίτησης
Request = New Request;
Αίτηση . Κείμενο =
"ΕΠΙΛΕΓΩ
| Συναλλαγματικές ισοτιμίες. Περίοδος,
| Συναλλαγματικές ισοτιμίες. Νόμισμα,
| Συναλλαγματικές ισοτιμίες
|ΑΠΟ
| Μητρώο Πληροφοριών.Συναλλαγματικές Τιμές ΩΣ Τιμές Νομισμάτων
|ΠΟΥ
| Συναλλαγματικές ισοτιμίες. Νόμισμα = &Νόμισμα";

// Στάδιο 2. Ρύθμιση παραμέτρων
Αίτηση . SetParameter ("Νόμισμα" , ΕπιλεγμένοΝόμισμα);

// Στάδιο 3. Εκτέλεση του ερωτήματος και λήψη του δείγματος
RequestResult = Αίτημα. Τρέξιμο();
Δείγμα = Αποτέλεσμα ερωτήματος. Επιλέγω();

// Διέλευση της επιλογής
Αντίο Βρόχος Sample.Next().
Αναφορά(Επιλογή.Μάθημα);
EndCycle;

Σύνθεση του κειμένου της αίτησης

Το κείμενο της αίτησης αποτελείται από πολλές ενότητες:

  1. Περιγραφή αιτήματος— λίστα με επιλέξιμα πεδία και πηγές δεδομένων·
  2. Συγχώνευση ερωτημάτων— εκφράσεις «ΕΝΩΣΩ» και «ΕΝΩΝΩ ΟΛΟΥΣ»·
  3. Οργάνωση αποτελεσμάτων— η έκφραση «ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ...»·
  4. Αυτόματη παραγγελία— την έκφραση «ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΓΕΛΙΑ»·
  5. Περιγραφή αποτελεσμάτων- την έκφραση «ΑΠΟΤΕΛΕΣΜΑΤΑ ... ΑΠΟ …».

Μόνο η πρώτη ενότητα είναι υποχρεωτική.

Προσωρινοί πίνακες και ερωτήματα παρτίδας

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

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

ManagerVT = New TemporaryTablesManager;
Request = New Request;
Αίτηση . TemporaryTablesManager = VTManager;

Αίτηση . Κείμενο =
"ΕΠΙΛΕΓΩ
| Νομίσματα.Κωδικός,
| Νομίσματα.Όνομα
|Τόπος σε νόμισμα
|ΑΠΟ
| Directory.Currencies AS Currency";

RequestResult = Αίτημα. Εκτέλεση();

Για να χρησιμοποιήσετε τον προσωρινό πίνακα VTVcurrency σε άλλα ερωτήματα, πρέπει να εκχωρήσετε έναν κοινό προσωρινό διαχειριστή πίνακα σε αυτά τα ερωτήματα—VT Manager.

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

Για ομαδικά ερωτήματα, είναι διαθέσιμη η μέθοδος ExecuteBatch(), η οποία εκτελεί όλα τα ερωτήματα και επιστρέφει μια σειρά αποτελεσμάτων. Οι προσωρινοί πίνακες σε ένα ερώτημα δέσμης θα αντιπροσωπεύονται από έναν πίνακα με μία σειρά και μία στήλη "Count", ο οποίος αποθηκεύει τον αριθμό των εγγραφών. Για τον εντοπισμό σφαλμάτων παρτίδων αιτημάτων, μπορείτε να χρησιμοποιήσετε τη μέθοδο Εκτέλεση Παρτίδας ΜΕ ΕΝΔΙΑΜΕΣΑ ΔΕΔΟΜΕΝΑ() : Επιστρέφει τα πραγματικά περιεχόμενα των προσωρινών πινάκων, όχι τον αριθμό των εγγραφών.

// Παράδειγμα εργασίας με αίτημα παρτίδας
Request = New Request;
Αίτηση . Κείμενο =
"ΕΠΙΛΕΓΩ
| Νομίσματα.Όνομα
|ΑΠΟ
| Directory.Currencies AS Currency
|;
|ΕΠΙΛΟΓΗ
| Ονοματολογία.Όνομα
|ΑΠΟ
| Κατάλογος Ονοματολογία AS Nomenclature";

BatchResult = Αίτημα. ExecuteBatch();

Νομίσματα TZ =PacketResult[ 0]. Ξεφορτώνω();
TZNomenclature = Αποτέλεσμα πακέτου[ 1 ]. Ξεφορτώνω();

// Ένα παράδειγμα χρήσης προσωρινών πινάκων σε μια αίτηση παρτίδας
Request = New Request;
Αίτηση . Κείμενο =
"ΕΠΙΛΕΓΩ
| Προϊόντα Link HOW TO Product
|ΤΟΠΟΘΕΤΗΣΗ WTT Products
|ΑΠΟ
| Κατάλογος.Ονοματολογία HOW Products
|ΠΟΥ
| Products.Manufacturer = &Manufacturer
|;
|ΕΠΙΛΟΓΗ
| VTTProducts.Product,
| Επαγγελματική Σχολή Ποσότητα,
| Επαγγελματική Σχολή. Τιμή,
| Επαγγελματική σχολή.Σύνδεσμος AS DocumentReceipts
|ΑΠΟ
| Προϊόντα VT AS Προϊόντα VT
| ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ Έγγραφο Παραλαβής Αγαθών και Υπηρεσιών AS PTU
| Λογισμικό VTProducts.Product = PTU.Nomenclature"
;

Αίτηση . SetParameter( "Κατασκευαστής", Κατασκευαστής);

RequestResult = Αίτημα. Τρέξιμο();
Δείγμα = Αποτέλεσμα ερωτήματος. Επιλέγω();

Αντίο Βρόχος Sample.Next().

EndCycle;

Εικονικοί πίνακες

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

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

  • Για πληροφορίες εγγραφές:
    • SliceFirst(<Период>, <Условие>) — οι παλαιότερες εγγραφές για την καθορισμένη ημερομηνία·
    • SliceLast(<Период>, <Условие>) — τα πιο πρόσφατα αρχεία για την καθορισμένη ημερομηνία·
  • Για μητρώα συσσώρευσης:
    • Αποφάγια(<Период>, <Условие>) — υπόλοιπα κατά την καθορισμένη ημερομηνία·
    • επαναστάσεις (<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) - Συναλλαγές περιόδου.
    • RemainsAndTurnover(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) — υπόλοιπα και κύκλος εργασιών για την περίοδο·
  • Για λογιστικά μητρώα:
    • Αποφάγια(<Период>, <УсловиеСчета>, <Субконто>, <Условие>) — υπόλοιπα κατά την καθορισμένη ημερομηνία στο πλαίσιο λογαριασμού, διαστάσεων και υπολογαριασμών.
    • επαναστάσεις (<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) — κύκλος εργασιών για την περίοδο στο πλαίσιο λογαριασμών, επιμετρήσεων, αντι. accounts, subconto, cor. subconto?
    • RemainsAndTurnover(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) — υπόλοιπα και κύκλος εργασιών ανά λογαριασμό, επιμετρήσεις και υπολογαριασμούς.
    • Κύκλος εργασιώνDtKt(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) — κύκλος εργασιών για την περίοδο ανά λογαριασμό Dt, λογαριασμός Kt, Subconto Dt, Subconto Kt.
    • MovementsSubconto(<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) — κινήσεις μαζί με τιμές υποσυμβολισμού.
  • Για μητρώα υπολογισμού:
    • Βάση(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) — βασικά στοιχεία του μητρώου υπολογισμού.
    • Data Graphics(<Условие>)—δεδομένα γραφήματος.
    • ActualActionPeriod(<Условие>) είναι η πραγματική περίοδος ισχύος.

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

Κατασκευαστής ερωτήματος

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

Οι κατασκευαστές μπορούν επίσης να κληθούν από το κύριο μενού Κείμενο.

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

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

Αντικείμενο RequestSchema

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

  • SetQueryText(< Текст>) — συμπληρώνει την ιδιότητα Request Packet με βάση το μεταδιδόμενο κείμενο αίτησης.
  • GetQueryText() - επιστρέφει το κείμενο αιτήματος που δημιουργήθηκε με βάση την ιδιότητα Request Package.
  • FindParameters() - επιστρέφει τις παραμέτρους αιτήματος.

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

ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
Νομίσματα.Κωδ

Ο ενσωματωμένος κώδικας γλώσσας μπορεί να μοιάζει με αυτό:

RequestScheme = Νέο RequestScheme;
Πακέτο 1 = RequestScheme. RequestBatch[ 0 ];
Χειριστής 1 = Πακέτο 1. Χειριστές[ 0];
// προσθήκη πηγής
RegisterTable = Operator1. Πηγές. Προσθήκη( "Κατάλογος. Νομίσματα", "Νομίσματα" );
// προσθήκη πεδίων
Σύνδεσμος Πεδίου = Χειριστής 1. Επιλεγμένα πεδία. Add("Currencies.Link" , 0 );
Κωδικός πεδίου = Χειριστής 1. Επιλεγμένα πεδία. Add("Currencies.Code", 1);
// καθορίζοντας ψευδώνυμα πεδίου
Πακέτο 1 . Στήλες[ 0 ]. Ψευδώνυμο = "Νόμισμα" ;
Πακέτο 1 . Στήλες[ 1 ]. Ψευδώνυμο = "Κωδικός" ;
// προσθήκη συνθήκης
Χειριστής 1 . Επιλογή. Προσθήκη( "NOT FlagDeletion");
// προσθήκη παραγγελίας
Πακέτο 1 . Σειρά. Add(FieldCode);
RequestText = RequestScheme. GetQueryText();

; Ένθετα ερωτήματα (σε ανάπτυξη).

Παραλαβή αγαθών και υπηρεσιώνΚαι Επιστροφή αγαθών στον προμηθευτήγια την καθορισμένη περίοδο.

Νέες καρτέλες: Σωματεία/Ψευδώνυμα.

Θεωρητικό μέρος του μαθήματος Νο 4

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

Στον σχεδιαστή, μεταβείτε στην καρτέλα Σωματεία/Ψευδώνυμα. Έχει σχεδιαστεί για να δημιουργεί συνδέσεις ερωτημάτων και να ορίζει ψευδώνυμα για πεδία ερωτήματος. Απαιτούνται ψευδώνυμα πεδίων εάν δεν είστε ικανοποιημένοι με τα τυπικά ονόματα πεδίων βάσης δεδομένων. Εάν ένα πεδίο ερωτήματος αποτελείται μόνο από ένα πεδίο πίνακα βάσης δεδομένων, τότε δεν απαιτείται ψευδώνυμο για αυτό. Εάν χρησιμοποιήσατε συναρτήσεις γλώσσας ερωτήματος κατά τη δημιουργία ενός πεδίου, τότε απαιτείται ψευδώνυμο για ένα τέτοιο πεδίο. Ο σχεδιαστής ερωτημάτων δημιουργεί τυπικά ψευδώνυμα για τέτοια πεδία Πεδίο1…ΠεδίοΝ, αυτά τα ψευδώνυμα μπορούν να αντικατασταθούν με αυτά που σας βολεύουν.

Ας δούμε τις ενότητες της καρτέλας Σωματεία/Ψευδώνυμα:

  • Αιτήσεων(κόκκινο πλαίσιο). Αυτή η ενότητα περιέχει έναν πίνακα που εμφανίζει όλα τα συνδυασμένα ερωτήματα Χρησιμοποιώντας το μενού που βρίσκεται πάνω από αυτήν την ενότητα, μπορείτε να προσθέσετε νέα, να αντιγράψετε υπάρχοντα, να διαγράψετε επιλεγμένα και επίσης να αλλάξετε τις θέσεις τους. Όταν προσθέτετε ή αντιγράφετε ένα αίτημα, ο σχεδιαστής μεταβαίνει στην καρτέλα Πίνακες και πεδία, όπου μπορείτε να καθορίσετε πίνακες βάσης δεδομένων και τα απαιτούμενα πεδία για ένα νέο ερώτημα. Μπορείτε να κάνετε εναλλαγή μεταξύ ερωτημάτων χρησιμοποιώντας τις καρτέλες που θα εμφανίζονται στη δεξιά πλευρά του σχεδιαστή καθώς προστίθενται νέα ερωτήματα 1c.

  • Στο τραπέζι Αιτήσεωνδύο στήλες:
    • Ονομα. Ρυθμίστε αυτόματα στη μορφή Αίτημα 1…Αίτημα N;
    • Χωρίς διπλότυπα. Ορίστε εάν είναι απαραίτητο να εξαιρεθούν οι διπλότυπες σειρές κατά τη συγχώνευση με ένα προηγούμενο ερώτημα. Αξίζει να σημειωθεί ότι αυτή η σημαία θα ενεργήσει μόνο για τη συγχώνευση του αιτήματος στο οποίο έχει οριστεί με το προηγούμενο αίτημα.

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

Πρακτικό μέρος του μαθήματος Νο 4

Ας δούμε τη λύση του προβλήματος που δόθηκε στην αρχή του μαθήματος. Να σας υπενθυμίσω τις προϋποθέσεις:

Εργασία: χρησιμοποιήστε ένα ερώτημα για να επιλέξετε όλα τα δημοσιευμένα έγγραφα Παραλαβή αγαθών και υπηρεσιώνΚαι Επιστροφή αγαθών στον προμηθευτήγια την καθορισμένη περίοδο.

  1. Ας δημιουργήσουμε ένα νέο αίτημα.
  2. Ας ξεκινήσουμε τον σχεδιαστή ερωτημάτων.
  3. Ας επιλέξουμε έναν πίνακα Παραλαβή Αγαθών και Υπηρεσιώναπό το νήμα Τεκμηρίωση;
  4. Από το τραπέζι Παραλαβή Αγαθών και Υπηρεσιώνεπιλέξτε ένα πεδίο Σύνδεσμος;
  5. Ας πάμε στην καρτέλα Συνθήκες;
  6. Στο κεφάλαιο Πεδία, ας ανοίξουμε το νήμα Παραλαβή Αγαθών και Υπηρεσιώνχρησιμοποιώντας το κουμπί "+",
  7. Ας βρούμε τα στηρίγματα ημερομηνίακαι σύρετέ το στην ενότητα συνθηκών, επιλέξτε τον τελεστή σύγκρισης Μεταξύκαι υποδεικνύουν τις παραμέτρους για την αρχή και το τέλος της περιόδου, για παράδειγμα Αρχή περιόδουΚαι Τέλος Περιόδου;
  8. Ας πάμε στην καρτέλα Σωματεία/Ψευδώνυμα.
  9. Προσθήκη νέου αιτήματος, επισήμανση Χωρίς διπλότυπαΔεν χρειάζεται να το θίξουμε, καθώς χρησιμοποιούμε διαφορετικούς τύπους εγγράφων.

  10. Το 1C Query Builder θα μεταβεί αυτόματα στην καρτέλα Πίνακες και πεδία. Στη δεξιά πλευρά του παραθύρου θα δείτε ότι το δεύτερο αίτημα συμμετοχής είναι ενεργό.


  11. Ας επαναλάβουμε τα σημεία 1 - 7 για τον πίνακα Επιστροφή αγαθών στον προμηθευτή;
  12. Ας πάμε ξανά στην καρτέλα Σωματεία/Ψευδώνυμα. Στον πίνακα των ψευδωνύμων μπορείτε να δείτε ότι τα πεδία ΣύνδεσμοςΚαι οι δύο πίνακες βρίσκονται στην ίδια σειρά, πράγμα που σημαίνει ότι οι σύνδεσμοι και στα δύο έγγραφα θα βρεθούν στην ίδια στήλη ως αποτέλεσμα του ερωτήματος.
  13. Ας αλλάξουμε το όνομα της στήλης από Σύνδεσμοςεπί Εγγραφο(ορίστε το ψευδώνυμο πεδίου). Για να το κάνετε αυτό, κάντε διπλό κλικ στο αριστερό κουμπί του ποντικιού στο όνομα του πεδίου. Μετά από αυτό μπορείτε να ορίσετε το όνομά σας, γράψτε το εκεί Εγγραφο;

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

Ως αποτέλεσμα, θα λάβουμε ένα αίτημα με το ακόλουθο κείμενο.

Ας υποθέσουμε ότι έχουμε έναν κατάλογο Ονοματολογίαμε στοιχεία: «Κωδικός», «Όνομα», «Άρθρο». Αυτός ο κατάλογος μπορεί να παρουσιαστεί με τη μορφή πίνακα, με πεδία με το ίδιο όνομα:

Ονοματολογία

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

Request.Text = "
|ΕΠΙΛΟΓΗ
| Ονοματολογία.Κωδικός,
| Ονοματολογία.Όνομα,
| Ονοματολογία.Άρθρο
|ΑΠΟ

Αποτέλεσμα ερωτήματος

Μερικές διευκρινίσεις. Στο τμήμα ΕΠΙΛΕΓΩ(ΕΠΙΛΟΓΗ) παραθέτουμε ποια πεδία συγκεκριμένων πινάκων θέλουμε να δούμε στην έξοδο. Στο κεφάλαιο ΑΠΟ(ΑΠΟ) λέμε από ποιους πίνακες να τα πάρουμε. Σημειώστε ότι η λέξη-κλειδί ΠΩΣ(AS) δηλώνουμε ψευδώνυμο για τον πίνακα Κατάλογος.Ονοματολογία, Μπορείτε να χρησιμοποιήσετε σχεδόν οποιοδήποτε όνομα, με εξαίρεση τις λέξεις-κλειδιά και τους αριθμούς της γλώσσας ερωτήματος 1C 8. Ένα ψευδώνυμο μπορεί επίσης να δηλωθεί για τα πεδία:

Request.Text = "
|ΕΠΙΛΟΓΗ
| Goods.Code AS Code,
| Goods.Όνομα AS Περιγραφή,
| Αγαθά.Άρθρο ΠΩΣ Άρθρο
|ΑΠΟ
| Κατάλογος Ονοματολογίας AS Goods"

Η έξοδος θα είναι ένας πίνακας της μορφής:

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

Request.Text = "
|ΕΠΙΛΟΓΗ *
|ΑΠΟ
| Κατάλογος Ονοματολογία AS Nomenclature";

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

Request.Text = "
|ΕΠΙΛΟΓΗ
| Κώδικας,
| Ονομα,
| κωδικός προμηθευτή
|ΑΠΟ
| Directory.Nomenclature";

Κατ 'αρχήν, το αίτημα μπορεί να μην έχει ενότητα ΑΠΟ,αλλά κατά κανόνα κανείς δεν γράφει έτσι:

Request.Text = "
|ΕΠΙΛΟΓΗ
| Directory.Nomenclature.Code,
| Directory.Nomenclature.Name,
| Directory.Nomenclature.Article";

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

Request.Text = "
|ΕΠΙΛΟΓΗ
| Ονοματολογία.Κωδικός,
| Ονοματολογία.Όνομα,
| Ονοματολογία.
//αριθμός
| 3000 AS Μέγιστο κόστος,
//ημερομηνία
| DATETIME(2013, 1, 1) AS Ημερομηνία παράδοσης,
//boolean
| Η ΑΛΗΘΕΙΑ ΩΣ ΠΛΗΡΩΜΕΝΗ,
//γραμμή
| Η "MebelStroy" ΩΣ ΚΑΤΑΣΚΕΥΑΣΤΗΣ
|ΑΠΟ
| Κατάλογος Ονοματολογία AS Nomenclature";

Οδηγίες της ενότητας SELECT

ΔΙΑΦΟΡΟΣ- υποδεικνύει ότι ως αποτέλεσμα του ερωτήματος που θέλουμε να δούμε μόνο εγγραφές με διαφορετικά πεδία θα απορριφθούν απλώς:

Request.Text = "
|ΕΠΙΛΟΓΗ ΔΙΑΦΟΡΩΝ
| Ονοματολογία.Όνομα
|ΑΠΟ
| Κατάλογος Ονοματολογία AS Nomenclature";

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

ΠΡΩΤΟΣ -υποδηλώνει ότι θέλουμε να δούμε μόνο τις πρώτες n εγγραφές στο αποτέλεσμα του ερωτήματος:

Request.Text = "
|ΕΠΙΛΟΓΗ ΠΡΩΤΩΝ 100
| Ονοματολογία.Όνομα
|ΑΠΟ
| Κατάλογος Ονοματολογία AS Nomenclature";

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

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

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

Παράδειγμα αιτήματος:

ΕΠΙΛΕΓΩ
Τράπεζες. Όνομα,
Τράπεζες.CorrAccount
ΑΠΟ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

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

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

Περιγραφή κατασκευών γλώσσας ερωτήματος

Δομή ερωτήματος

Για να λάβετε δεδομένα, αρκεί να χρησιμοποιήσετε τις κατασκευές "SELECT" και "FROM". Το απλούστερο αίτημα μοιάζει με αυτό:

SELECT * FROM Directories.Nomenclature

Όπου "*" σημαίνει επιλογή όλων των πεδίων του πίνακα και Directories.Nomenclature – το όνομα του πίνακα στη βάση δεδομένων.

Ας δούμε ένα πιο περίπλοκο και γενικό παράδειγμα:

ΕΠΙΛΕΓΩ
<ИмяПоля1>ΠΩΣ<ПредставлениеПоля1>,
Αθροισμα(<ИмяПоля2>) ΠΩΣ<ПредставлениеПоля2>
ΑΠΟ
<ИмяТаблицы1>ΠΩΣ<ПредставлениеТаблицы1>
<ТипСоединения>ΧΗΜΙΚΗ ΕΝΩΣΗ<ИмяТаблицы2>ΠΩΣ<ПредставлениеТаблицы2>
ΜΕ<УсловиеСоединениеТаблиц>

ΟΠΟΥ
<УсловиеОтбораДанных>

ΟΜΑΔΑ ΑΠΟ
<ИмяПоля1>

ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
<ИмяПоля1>

ΑΠΟΤΕΛΕΣΜΑΤΑ
<ИмяПоля2>
ΜΕ
<ИмяПоля1>

Σε αυτό το ερώτημα, επιλέγουμε τα δεδομένα των πεδίων "FieldName1" και "FieldName1" από τους πίνακες "TableName1" και "TableName", εκχωρούμε συνώνυμα στα πεδία χρησιμοποιώντας τον τελεστή "HOW" και τα συνδέουμε χρησιμοποιώντας μια συγκεκριμένη συνθήκη "TableConnectionCondition ".

Από τα ληφθέντα δεδομένα, επιλέγουμε μόνο δεδομένα που πληρούν την προϋπόθεση από το «ΠΟΥ» «Συνθήκη Επιλογής Δεδομένων» Στη συνέχεια, ομαδοποιούμε το αίτημα κατά το πεδίο «Όνομα Πεδίου1», ενώ αθροίζουμε το «Όνομα Πεδίου2». «Όνομα πεδίου1» και το τελικό πεδίο «Όνομα πεδίου2».

Το τελευταίο βήμα είναι να ταξινομήσετε το αίτημα χρησιμοποιώντας την κατασκευή ORDER BY.

Γενικά σχέδια

Ας δούμε τις γενικές δομές της γλώσσας ερωτημάτων 1C 8.2.

ΠΡΩΤΑn

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

ΕΠΙΛΕΞΤΕ ΠΡΩΤΑ 100
Τράπεζες. Όνομα,
Τράπεζες Κωδικός AS BIC
ΑΠΟ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
Τράπεζες.Όνομα

Το αίτημα θα λάβει τις πρώτες 100 καταχωρήσεις του καταλόγου «Τράπεζες», ταξινομημένες αλφαβητικά.

ΕΠΙΤΡΕΠΕΤΑΙ

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

Εάν ένας χρήστης προσπαθήσει να χρησιμοποιήσει ένα ερώτημα για να διαβάσει εγγραφές που δεν είναι προσβάσιμες σε αυτόν, θα λάβει ένα μήνυμα σφάλματος. Για να το αποφύγετε αυτό, θα πρέπει να χρησιμοποιήσετε την κατασκευή "ΕΦΑΡΜΟΓΗ", δηλαδή το αίτημα θα διαβάζει μόνο τις εγγραφές που του επιτρέπονται.

ΕΠΙΛΟΓΗ ΕΠΙΤΡΕΠΕΤΑΙ
Αποθετήριο πρόσθετων πληροφοριών
ΑΠΟ
Directory.Repository of Additional Information

ΔΙΑΦΟΡΟΣ

Η χρήση του "DIFFERENT" θα αποτρέψει την είσοδο διπλών γραμμών στο αποτέλεσμα του ερωτήματος 1C. Διπλασιασμός σημαίνει ότι όλα τα πεδία αιτημάτων ταιριάζουν.

ΕΠΙΛΕΞΤΕ ΠΡΩΤΑ 100
Τράπεζες. Όνομα,
Τράπεζες Κωδικός AS BIC
ΑΠΟ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

Άδειος Πίνακας

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

Παράδειγμα από τη βοήθεια 1C 8:

ΕΠΙΛΕΞΤΕ Σύνδεσμο.Αριθμός, ΚΕΝΟΣ ΠΙΝΑΚΑΣ.(Αρ., Είδος, Ποσότητα) ΩΣ Σύνθεση
ΑΠΟ Έγγραφο.Τιμολόγιο Εξόδων
ΣΥΝΔΥΑΣΤΕ ΤΑ ΠΑΝΤΑ
ΕΠΙΛΕΞΤΕ Σύνδεσμο.Αριθμός, Περιεχόμενα.(Αριθμός γραμμής, Προϊόν, Ποσότητα)
FROM Document.Invoice Document.Invoice.Composition.*

ISNULL

Μια πολύ χρήσιμη λειτουργία που σας επιτρέπει να αποφύγετε πολλά λάθη. Η YesNULL() σάς επιτρέπει να αντικαταστήσετε την τιμή NULL με την επιθυμητή. Χρησιμοποιείται πολύ συχνά για τον έλεγχο της παρουσίας μιας τιμής σε ενωμένους πίνακες, για παράδειγμα:

ΕΠΙΛΕΓΩ
Σύνδεσμος ονοματολογίας,
IsNULL(Item Remaining.QuantityRemaining,0) AS QuantityRemaining
ΑΠΟ


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

ISNULL(InvoiceReceived.Date, InvoiceIssued.Date)

Το HOW είναι ένας τελεστής που μας επιτρέπει να εκχωρήσουμε ένα όνομα (συνώνυμο) σε έναν πίνακα ή ένα πεδίο. Είδαμε ένα παράδειγμα χρήσης παραπάνω.

Αυτές οι κατασκευές είναι πολύ παρόμοιες - σας επιτρέπουν να λάβετε μια παράσταση συμβολοσειράς της επιθυμητής τιμής. Η μόνη διαφορά είναι ότι το REPRESENTATION μετατρέπει οποιεσδήποτε τιμές σε τύπο συμβολοσειράς, ενώ το REPRESENTATIONREF μετατρέπει μόνο τιμές αναφοράς. Η ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΝΑΦΟΡΑΣ συνιστάται να χρησιμοποιείται σε ερωτήματα συστήματος σύνθεσης δεδομένων για βελτιστοποίηση, εκτός εάν, φυσικά, το πεδίο δεδομένων αναφοράς σχεδιάζεται να χρησιμοποιηθεί σε επιλογές.

ΕΠΙΛΕΓΩ
Προβολή(Σύνδεσμος), //string, για παράδειγμα "Προηγούμενη αναφορά Αρ. 123 με ημερομηνία 10/10/2015
Προβολή (DeletionMark) AS DeleteMarkText, //string, "Yes" ή "No"
Προβολή Αναφορών(DeletionMark) AS DeleteMarkBoolean //boolean, True or False
ΑΠΟ
Έγγραφο.Αναφορά εκ των προτέρων

ΕΞΠΡΕΣ

Το Express σάς επιτρέπει να μετατρέψετε τις τιμές των πεδίων στον επιθυμητό τύπο δεδομένων. Μπορείτε να μετατρέψετε μια τιμή είτε σε αρχέγονο τύπο είτε σε τύπο αναφοράς.

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

EXPRESS (Πίνακας Κόστους. Υποσύνολο AS Κατάλογος. Είδος Δραστηριότητας Φορολογικής Λογιστικής Κόστους).

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

EXPRESS(Σχόλιο ΩΣ Γραμμή(150))

ΔΙΑΦΟΡΑ

Λάβετε 267 μαθήματα βίντεο στο 1C δωρεάν:

Ένα παράδειγμα χρήσης IS NULL σε αίτημα 1C:

ΕΠΙΛΕΞΤΕ ΑΠΟ
Αναφ
ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ RegisterAcumulations.ProductsInWarehouses.Remaining AS Υπολειπόμενο προϊόν
Software NomenclatureRef.Link = Sold GoodsCommitteesRemains.Nomenclature
ΟΠΟΥ ΔΕΝ ΥΠΟΜΕΝΟΥΝ ΠΟΣΟΤΗΤΑ ΕΙΝΑΙ ΜΗΧΑΝΗ

Ο τύπος των δεδομένων σε ένα ερώτημα μπορεί να προσδιοριστεί χρησιμοποιώντας τις συναρτήσεις TYPE() και VALUETYPE() ή χρησιμοποιώντας τον λογικό τελεστή REFERENCE. Οι δύο λειτουργίες είναι παρόμοιες.

Προκαθορισμένες τιμές

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

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

WHERE Nomenclature.Type of Nomenclature = Value(Directory.Types of Nomenclature.Product)

WHERE Αντισυμβαλλόμενοι.Τύπος Στοιχείων Επικοινωνίας = Αξία(Απαρίθμηση.Τύποι στοιχείων επικοινωνίας.Τηλέφωνο)

WHERE Υπόλοιπα Λογαριασμού. Λογαριασμός Λογαριασμού = Αξία (Λογιστικό Σχέδιο. Αυτολογιστική.Κέρδη Απώλεια)

Συνδέσεις

Υπάρχουν 4 τύποι συνδέσεων: ΑΡΙΣΤΕΡΑ, ΣΩΣΤΑ, ΠΛΗΡΕΣ, ΕΣΩΤΕΡΙΚΟ.

ΑΡΙΣΤΕΡΑ ΚΑΙ ΔΕΞΙΑ ΣΥΝΔΕΣΗ

Οι συνδέσεις χρησιμοποιούνται για τη σύνδεση δύο πινάκων με βάση μια συγκεκριμένη συνθήκη. Χαρακτηριστικό όταν ΑΡΙΣΤΕΡΑ ΣΥΜΜΕΤΟΧΗείναι ότι παίρνουμε τον πρώτο καθορισμένο πίνακα στο σύνολό του και δεσμεύουμε υπό όρους τον δεύτερο πίνακα. Τα πεδία του δεύτερου πίνακα που δεν μπορούσαν να δεσμευτούν από συνθήκη συμπληρώνονται με την τιμή ΜΗΔΕΝΙΚΟ.

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

Θα επιστρέψει ολόκληρο τον πίνακα των Αντισυμβαλλομένων και θα συμπληρώσει το πεδίο «Τράπεζα» μόνο σε εκείνα τα σημεία όπου θα πληρούται η προϋπόθεση «Αντισυμβαλλόμενοι.Όνομα = Τράπεζες.Όνομα». Εάν δεν πληρούται η προϋπόθεση, το πεδίο Τράπεζα θα οριστεί σε ΜΗΔΕΝΙΚΟ.

ΔΕΞΙΑ ΣΥΝΔΕΣΗ σε γλώσσα 1Cαπολύτως παρόμοια ΑΡΙΣΤΕΡΑ σύνδεση, με εξαίρεση μια διαφορά - σε ΔΙΚΑΙΩΜΑ ΣΥΝΔΕΣΗΣΟ «κύριος» πίνακας είναι ο δεύτερος, όχι ο πρώτος.

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗ

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗδιαφέρει από τα αριστερά και τα δεξιά στο ότι εμφανίζει όλες τις εγγραφές από δύο πίνακες και συνδέει μόνο εκείνες που μπορεί να συνδέσει κατά συνθήκη.

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

ΑΠΟ

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

ΜΕ

Η γλώσσα ερωτήματος θα επιστρέψει πλήρως και τους δύο πίνακες μόνο εάν πληρούται η προϋπόθεση για ένταξη στις εγγραφές. Σε αντίθεση με μια σύνδεση αριστερά/δεξιά, είναι δυνατό το NULL να εμφανίζεται σε δύο πεδία.

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗδιαφέρει από το πλήρες στο ότι εμφανίζει μόνο εκείνες τις εγγραφές που θα μπορούσαν να συνδεθούν σύμφωνα με μια δεδομένη συνθήκη.

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

ΑΠΟ
Κατάλογος Counterparties AS Clients

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

ΜΕ
Πελάτες.Όνομα = Τράπεζες.Όνομα

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

Σωματεία

Οι κατασκευές JOIN και JOIN ALL συνδυάζουν δύο αποτελέσματα σε ένα. Εκείνοι. το αποτέλεσμα της εκτέλεσης δύο θα «συγχωνευθεί» σε ένα, κοινό.

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

Πώς να χρησιμοποιήσετε το INDEX BY

Ωστόσο, ένα σημείο πρέπει να ληφθεί υπόψη. Η δημιουργία ενός ευρετηρίου σε έναν προσωρινό πίνακα απαιτεί επίσης χρόνο για να ολοκληρωθεί. Επομένως, συνιστάται η χρήση της κατασκευής " " μόνο εάν είναι σίγουρο ότι θα υπάρχουν περισσότερες από 1-2 εγγραφές στον προσωρινό πίνακα. Διαφορετικά, το αποτέλεσμα μπορεί να είναι το αντίθετο - η απόδοση των ευρετηριασμένων πεδίων δεν αντισταθμίζει το χρόνο που χρειάζεται για τη δημιουργία του ευρετηρίου.

ΕΠΙΛΕΓΩ
Συναλλαγματικές ισοτιμίες Τελευταία διατομή Νόμισμα AS Νόμισμα,
Συναλλαγματικές ισοτιμίες Τελευταία διατομή.
Τιμές συναλλάγματος PUT
ΑΠΟ
Πληροφορίες Εγγραφή. Τιμές νομισμάτων.Τελευταίο τμήμα(&Περίοδος,) AS Τιμές νομίσματος
ΕΥΡΕΤΗΡΙΟ ΑΠΟ
Νόμισμα
;
ΕΠΙΛΕΓΩ
ΤιμέςΟνοματολογία.Ονοματολογία,
ΤιμέςΟνοματολογίες.Τιμή,
ΤιμέςΟνοματολογίες.Νόμισμα,
Συναλλαγματικές ισοτιμίες
ΑΠΟ
Πληροφορίες Μητρώο.Ονοματολογία Τιμές.Τελευταία Φέτα(&Περίοδος,
Ονοματολογία Β (&Ονοματολογία) ΚΑΙ Τύπος Τιμής = &Τύπος Τιμής) ΩΣ Ονοματολογία Τιμής
ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ Τιμές νομισμάτων ΩΣ Τιμές νομισμάτων
Λογισμικό ΤιμέςΟνομασίες.Νόμισμα = Τιμές νομισμάτων.Νόμισμα

Ομαδοποίηση

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

Υπάρχουν οι ακόλουθες λειτουργίες:

Ποσό, Ποσότητα, Αριθμός διαφορετικών, Μέγιστο, Ελάχιστο, Μέσος όρος.

Παράδειγμα #1:

ΕΠΙΛΕΓΩ
Ονοματολογία Πωλήσεων Αγαθών και Υπηρεσιών,
SUM(Sales of Goods ServicesGoods.Quantity) AS ποσότητα,
SUM(Πωλήσεις αγαθώνΥπηρεσίεςGoods.Amount) AS Amount
ΑΠΟ

ΟΜΑΔΑ ΑΠΟ
Ονοματολογία Πωλήσεων Αγαθών και Υπηρεσιών

Το αίτημα λαμβάνει όλες τις γραμμές με αγαθά και τις συνοψίζει ανά ποσότητα και ποσά ανά είδος.

Παράδειγμα Νο. 2

ΕΠΙΛΕΓΩ
Banks.Code,
ΠΟΣΟΤΗΤΑ (ΔΙΑΦΟΡΕΣ Τράπεζες. Σύνδεσμος) ΩΣ Αριθμός Διπλότυπων
ΑΠΟ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες
ΟΜΑΔΑ ΑΠΟ
Τράπεζες.Κωδ

Αυτό το παράδειγμα θα εμφανίσει μια λίστα BIC στον κατάλογο "Banks" και θα δείξει πόσα διπλότυπα υπάρχουν για καθένα από αυτά.

Αποτελέσματα

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

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

ΕΠΙΛΕΓΩ




ΑΠΟ
Έγγραφο Πωλήσεις Αγαθών και Υπηρεσιών
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ

ΑΠΟΤΕΛΕΣΜΑΤΑ
SUM (Ποσότητα),
SUM(Sum)
ΜΕ
Ονοματολογία

Το αποτέλεσμα του ερωτήματος θα είναι το ακόλουθο ιεραρχικό:

Γενικά αποτελέσματα

Εάν πρέπει να λάβετε σύνολα για όλα τα "σύνολο", χρησιμοποιήστε τον τελεστή "ΓΕΝΙΚΑ".

ΕΠΙΛΕΓΩ
Πωλήσεις αγαθών και υπηρεσιών Ονοματολογία AS Ονοματολογία,
Πωλήσεις Αγαθών και Υπηρεσιών Έγγραφο Συνδέσμου AS,
Πωλήσεις Αγαθών και Υπηρεσιών Ποσότητα AS Ποσότητα,
Πωλήσεις Αγαθών και Υπηρεσιών Ποσό AS Ποσό
ΑΠΟ
Έγγραφο Πωλήσεις Αγαθών και Υπηρεσιών
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
Ημερομηνία Πωλήσεων Αγαθών και Υπηρεσιών
ΑΠΟΤΕΛΕΣΜΑΤΑ
SUM (Ποσότητα),
SUM(Sum)
ΜΕ
ΕΙΝΑΙ ΚΟΙΝΑ,
Ονοματολογία

Ως αποτέλεσμα της εκτέλεσης του αιτήματος, έχουμε το ακόλουθο αποτέλεσμα:

Στο οποίο 1 επίπεδο ομαδοποίησης είναι η συγκέντρωση όλων των απαραίτητων πεδίων.

Τακτοποίηση

Ο τελεστής ORDER BY χρησιμοποιείται για την ταξινόμηση του αποτελέσματος ενός ερωτήματος.

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

ΕΠΙΛΕΓΩ

ΑΠΟ
Κατάλογος.Ονοματολογία AS Nomenclature
ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ
Ονομα

Το αίτημα θα εμφανίσει μια λίστα ονομάτων στον κατάλογο ονοματολογίας, ταξινομημένη αλφαβητικά.

Αυτόματη παραγγελία

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

Εάν χρειάζεται να εμφανίσετε εγγραφές πίνακα με σταθερή σειρά, πρέπει να χρησιμοποιήσετε την κατασκευή Auto-Order.

ΕΠΙΛΕΓΩ
Ονοματολογία.Όνομα AS Όνομα
ΑΠΟ
Κατάλογος.Ονοματολογία AS Nomenclature
ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΓΕΛΙΑ

Εικονικοί πίνακες

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

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

  • κόψιμο του πρώτου?
  • περικοπή του τελευταίου.
  • αποφάγια;
  • επαναστάσεις?
  • τα υπόλοιπα και ο κύκλος εργασιών.
  • κινήσεις από subconto?
  • επαναστάσεις?
  • ταχύτητα Dt Kt;
  • αποφάγια;
  • τα υπόλοιπα και ο κύκλος εργασιών
  • υποκείμενο.
  • βάση;
  • δεδομένα γραφήματος.
  • πραγματική περίοδο ισχύος.

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

ΕΠΙΛΕΓΩ
Προϊόντα σε Αποθήκες Υπολείμματα και Κύκλος Εργασιών,
ΠροϊόνταΣτιςΑποθήκεςΥπόλοιπαΚαιΚύκλος.ΠοσότηταΑρχικήΥπολειπόμενη,
ΠροϊόνταΣτιςΑποθήκεςΥπόλοιπαΚαιΚύκλος.ΠοσότηταΚύκλος,
ΑγαθάΣτις ΑποθήκεςΥπόλοιπακαιΚύκλος εργασιών.Ποσότητα Εισερχόμενα,
ΑγαθάΣτις αποθήκεςΥπόλοιπακαιΚύκλος εργασιών.ΠοσότηταΚατανάλωση,
ΠροϊόνταΣε ΑποθήκεςΥπόλοιπαΚαιΚύκλος εργασιών.ΠοσότηταΤελικήΥπόλοιπο
ΑΠΟ
RegisterAccumulations.GoodsInWarehouses.RemainsAndTurnover AS GoodsInWarehousesRemainsAndTurnover

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

Επιλογές εικονικού πίνακα

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

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

Ένα παράδειγμα χρήσης αυτών των παραμέτρων:

Μητρώο Συσσωρεύσεων σε Αποθήκες (& Αρχή Περιόδου, & Τέλος Περιόδου, Μήνας, Κινήσεις και Σύνορα Περιόδου, Ονοματολογία = & Απαιτούμενη Ονοματολογία).

Αλγόριθμος για εικονικούς πίνακες

Για παράδειγμα, ο πιο χρησιμοποιούμενος εικονικός πίνακας τύπου "Remains" αποθηκεύει δεδομένα από δύο φυσικούς πίνακες – ισορροπίες και κινήσεις.

Όταν χρησιμοποιείτε έναν εικονικό πίνακα, το σύστημα εκτελεί τους ακόλουθους χειρισμούς:

  1. Λαμβάνουμε την πλησιέστερη υπολογισμένη τιμή ως προς την ημερομηνία και τις μετρήσεις στον πίνακα συνόλων.
  2. «Προσθέτουμε» το ποσό από τον πίνακα κινήσεων στο ποσό από τον πίνακα συνόλων.


Τέτοιες απλές ενέργειες μπορούν να βελτιώσουν σημαντικά την απόδοση του συστήματος στο σύνολό του.

Χρήση του Εργαλείου δημιουργίας ερωτημάτων

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

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

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

Περιγραφή του κατασκευαστή αιτήματος 1C

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

Καρτέλα Πίνακες και Πεδία

Αυτή η καρτέλα καθορίζει την προέλευση δεδομένων και τα πεδία που πρέπει να εμφανίζονται στην αναφορά. Στην ουσία περιγράφονται εδώ οι κατασκευές SELECT.. FROM.

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

Στο μενού περιβάλλοντος των εικονικών πινάκων, μπορείτε να ορίσετε παραμέτρους εικονικού πίνακα:

Καρτέλα Συνδέσεις

Η καρτέλα χρησιμοποιείται για να περιγράψει συνδέσεις πολλών πινάκων και δημιουργεί κατασκευές με τη λέξη ΣΥΝΔΕΣΗ.

Καρτέλα Ομαδοποίηση

Σε αυτήν την καρτέλα, το σύστημα σάς επιτρέπει να ομαδοποιήσετε και να συνοψίσετε τα απαιτούμενα πεδία του αποτελέσματος του πίνακα. Περιγράφει τη χρήση των κατασκευών GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, NUMBER OF DIFFERENT.

Καρτέλα Προϋποθέσεις

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

Καρτέλα για προχωρημένους

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

Ομαδοποίηση Επιλογή εγγραφών:

  • Πρώτα ο Ν– μια παράμετρος που επιστρέφει μόνο N εγγραφές στο ερώτημα (ο τελεστής FIRST)
  • Χωρίς διπλότυπα– διασφαλίζει τη μοναδικότητα των ληφθέντων εγγραφών (ΔΙΑΦΟΡΕΤΙΚΟΣ χειριστής)
  • Επιτρέπεται– σας επιτρέπει να επιλέξετε μόνο εκείνες τις εγγραφές που το σύστημα σας επιτρέπει να επιλέξετε λαμβάνοντας υπόψη (ΕΠΙΤΡΕΠΕΤΑΙ κατασκευή)

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

Από κάτω υπάρχει μια σημαία Κλείδωμα ληφθέντων δεδομένων για μεταγενέστερη τροποποίηση. Σας επιτρέπει να ενεργοποιήσετε τη δυνατότητα ρύθμισης κλειδώματος δεδομένων, η οποία διασφαλίζει την ασφάλεια των δεδομένων από τη στιγμή που διαβάζονται μέχρι την αλλαγή τους (σχετικό μόνο για τη λειτουργία Αυτόματου κλειδώματος, σχεδίαση ΓΙΑ ΑΛΛΑΓΗ).

Καρτέλα Συμμετοχές/Ψευδώνυμα

Σε αυτήν την καρτέλα του σχεδιαστή ερωτήματος, μπορείτε να ορίσετε τη δυνατότητα σύνδεσης διαφορετικών πινάκων και ψευδωνύμων (η κατασκευή HOW). Οι πίνακες υποδεικνύονται στην αριστερή πλευρά. Εάν ορίσετε τις σημαίες απέναντι από τον πίνακα, θα χρησιμοποιηθεί η κατασκευή UNITE, διαφορετικά - UNITE ALL (διαφορές μεταξύ των δύο μεθόδων). Στη δεξιά πλευρά, υποδεικνύεται η αντιστοιχία των πεδίων σε διαφορετικούς πίνακες, εάν η αντιστοιχία δεν έχει καθοριστεί, το ερώτημα θα επιστρέψει NULL.

Καρτέλα παραγγελίας

Αυτό καθορίζει τη σειρά με την οποία ταξινομούνται οι τιμές (ORDER BY) - φθίνουσα (DESC) ή αύξουσα (ASC).

Υπάρχει επίσης μια ενδιαφέρουσα σημαία - Αυτόματη παραγγελία(στο αίτημα - ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΓΕΛΙΑ). Από προεπιλογή, το σύστημα 1C εμφανίζει δεδομένα με "χαοτική" σειρά. Εάν ορίσετε αυτήν τη σημαία, το σύστημα θα ταξινομήσει τα δεδομένα κατά εσωτερικά δεδομένα.

Καρτέλα Παρτίδα ερωτήματος

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

Κουμπί "Ερώτημα" στον σχεδιαστή ερωτημάτων

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

Σε αυτό το παράθυρο, μπορείτε να κάνετε προσαρμογές στο αίτημα και να το εκτελέσετε.


Χρήση της Κονσόλας ερωτημάτων

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

Ας ρίξουμε μια πιο προσεκτική ματιά σε αυτό το εργαλείο.

Κατεβάστε την κονσόλα ερωτημάτων 1C

Πρώτα απ 'όλα, για να ξεκινήσετε να εργάζεστε με την κονσόλα ερωτημάτων, πρέπει να την κατεβάσετε από κάπου. Οι θεραπείες συνήθως χωρίζονται σε δύο τύπους - ελεγχόμενες μορφές και συμβατικές (ή, μερικές φορές, ονομάζονται 8.1 και 8.2/8.3).

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

Περιγραφή της κονσόλας ερωτημάτων 1C

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

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

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

Στα αριστερά, στο πεδίο «Αίτημα», μπορείτε να δημιουργήσετε νέα αιτήματα και να τα αποθηκεύσετε σε μια δομή δέντρου. Η δεύτερη ομάδα κουμπιών είναι υπεύθυνη για τη διαχείριση της λίστας των αιτημάτων. Χρησιμοποιώντας το μπορείτε να δημιουργήσετε, να αντιγράψετε, να διαγράψετε, να μετακινήσετε ένα αίτημα.

  • Εκτέλεσηαίτηση– απλή εκτέλεση και αποτελέσματα
  • Εκτέλεση πακέτου– σας επιτρέπει να προβάλλετε όλα τα ενδιάμεσα ερωτήματα σε μια δέσμη ερωτημάτων
  • Προβολή προσωρινών πινάκων– σας επιτρέπει να βλέπετε τα αποτελέσματα που επιστρέφουν τα προσωρινά ερωτήματα σε έναν πίνακα

Παράμετροι αιτήματος:

Σας επιτρέπει να ορίσετε τις τρέχουσες παραμέτρους για το αίτημα.

Στο παράθυρο των παραμέτρων ερωτήματος, τα ακόλουθα είναι ενδιαφέροντα:

  • Κουμπί Λήψη από αίτημαβρίσκει αυτόματα όλες τις παραμέτρους στο αίτημα για διευκόλυνση του προγραμματιστή.
  • Σημαία Κοινές παράμετροι για όλα τα αιτήματα– όταν εγκατασταθεί, η επεξεργασία του δεν διαγράφει τις παραμέτρους κατά τη μετάβαση από αίτημα σε αίτημα στη γενική λίστα αιτημάτων.

Ορίστε μια παράμετρο με μια λίστα τιμώνΕίναι πολύ απλό, απλά όταν επιλέγετε μια τιμή παραμέτρου, κάντε κλικ στο κουμπί διαγραφής τιμής (σταυρός), το σύστημα θα σας ζητήσει να επιλέξετε τον τύπο δεδομένων, όπου πρέπει να επιλέξετε "Λίστα τιμών":

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

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

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

Ο σχεδιαστής ερωτημάτων 1C 8 καλείται από το μενού περιβάλλοντος (δεξί κουμπί του ποντικιού) όταν κάνετε κλικ στο πεδίο εισαγωγής:

Αυτό το μενού διαθέτει επίσης χρήσιμες λειτουργίες όπως η εκκαθάριση ή η προσθήκη αλλαγών γραμμής («|») στο αίτημα ή η λήψη του κωδικού αιτήματος με αυτήν τη βολική μορφή:

Request = New Request;
Request.Text = ”
|ΕΠΙΛΟΓΗ
| Νομίσματα.Σύνδεσμος
|ΑΠΟ
| Directory.Currencies AS Currency”;
RequestResult = Request.Execute();

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



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

Βελτιστοποίηση ερωτημάτων

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

Επιλογές σε έναν εικονικό πίνακα χρησιμοποιώντας την κατασκευή WHERE

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

ΣΩΣΤΑ:

ΕΠΙΛΕΓΩ

ΑΠΟ
Μητρώο Συσσωρεύσεων Αμοιβαίοι διακανονισμοί με Συμμετέχοντες Οργανισμών (.
,
Οργάνωση = &Οργάνωση
And Individual = &Idividual) ΠΩΣ Αμοιβαίοι διακανονισμοί με Συμμετέχοντες Οργανισμών Υπόλοιπα

ΛΑΝΘΑΣΜΕΝΟΣ:

ΕΠΙΛΕΓΩ
Αμοιβαίοι διακανονισμοί με Υπόλοιπα Συμμετεχόντων Οργανισμών
ΑΠΟ
Μητρώο Συσσωρεύσεων Αμοιβαίοι διακανονισμοί με Υπόλοιπα Οργανισμών (,) ΠΩΣ Αμοιβαίοι διακανονισμοί με Συμμετέχοντες Οργανισμών
ΟΠΟΥ
Αμοιβαίοι διακανονισμοί με Συμμετέχοντες Οργανισμών Υπόλοιπα Οργανισμού = & Οργάνωσης
ΚΑΙ Αμοιβαίοι διακανονισμοί με Συμμετέχοντες Οργανισμών Υπόλοιπα Ατομική = &Ατομική

Λήψη της τιμής ενός πεδίου μιγαδικού τύπου χρησιμοποιώντας μια τελεία

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

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

ΛΑΝΘΑΣΜΕΝΟΣ:

ΕΠΙΛΕΓΩ
Σύνολο εγγραφών. Εγγραφή. Ημερομηνία,
RecordSet.Quantity
ΑΠΟ
RegisterAccumulations.ProductsOrganizations AS SetRecords

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

ΣΩΣΤΑ:

ΕΠΙΛΕΓΩ
ΕΠΙΛΟΓΗ
WHEN ProductsOrg.Registrar LINK Document.Sales of Products and Services
ΜΕΤΑ EXPRESS(ΠροϊόνταΟργανισμός.Έγγραφο Καταχωρητή AS.Πωλήσεις αγαθώνΥπηρεσίες).Ημερομηνία
WHEN GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
ΜΕΤΑ ΕΚΦΡΑΣΗ(GoodsOrg.Έγγραφο Καταχωρητή AS. Παραλαβή Υπηρεσιών Αγαθών).Ημερομηνία
ΤΕΛΟΣ ΩΣ ΗΜΕΡΟΜΗΝΙΑ,
ΠροϊόνταΟργ.Ποσότητα
ΑΠΟ
RegisterAccumulations.ProductsΟργανισμοί AS ProductsOrganization

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

ΣΩΣΤΑ:

ΕΠΙΛΕΓΩ
ΠροϊόνταΟργανισμοί.Ημερομηνία,
ΠροϊόνταΟργανισμοί.Ποσότητα
ΑΠΟ
Μητρώο Συσσωρεύσεων AS Αγαθά Οργανισμών

Υποερωτήματα σε κατάσταση ένωσης

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

ΛΑΝΘΑΣΜΕΝΟΣ:

ΕΠΙΛΕΞΤΕ…

ΑΡΙΣΤΕΡΑ ΣΥΜΜΕΤΟΧΗ (
ΕΠΙΛΟΓΗ ΑΠΟ RegisterInformation.Limits
ΟΠΟΥ …
ΟΜΑΔΑ ΑΠΟ...
) ΜΕ …

ΣΩΣΤΑ:

ΕΠΙΛΕΞΤΕ…
ΒΑΛΤΕ Όρια
ΑΠΟ Πληροφοριακά Μητρώο.Όρια
ΟΠΟΥ …
ΟΜΑΔΑ ΑΠΟ...
ΕΥΡΕΤΗ ΑΠΟ...;

ΕΠΙΛΕΞΤΕ…
ΑΠΟ Έγγραφο Πωλήσεων Αγαθών και Υπηρεσιών
LEFT JOIN Όρια
ΜΕ …;

Σύνδεση εγγραφών με εικονικούς πίνακες

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

Χρήση επιλογών που βασίζονται σε μη ευρετηριασμένα πεδία

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

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

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

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

Χρήση λογικού Ή σε συνθήκες

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

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

 

Ίσως είναι χρήσιμο να διαβάσετε: