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

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

Στην περίπτωση που η επιλογή γίνεται από πραγματικό τραπέζι, δεν προκύπτουν δυσκολίες. Η επεξεργασία των δεδομένων γίνεται απολύτως ασήμαντη:

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


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

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

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

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

Είναι δυνατόν να σταματήσετε αμέσως, στο στάδιο της κατασκευής ενός εικονικού πίνακα, να χρησιμοποιείτε περιττά δεδομένα; Αποδεικνύεται ότι είναι δυνατό. Για αυτό ακριβώς έχουν σχεδιαστεί οι παράμετροι εικονικού πίνακα:

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

Ποια είναι η διαφορά μεταξύ των τιμών της παραμέτρου εικονικού πίνακα "Μέθοδος προσθήκης";
Όταν η Μέθοδος Πρόσθεσης έχει οριστεί σε "κινήσεις", τότε θα επιστραφούν μόνο εκείνες οι περίοδοι στις οποίες υπήρξαν κινήσεις. Όταν έχει οριστεί "Κινήσεις και Όρια Περιόδου", τότε θα προστεθούν 2 εγγραφές στις παραπάνω κινήσεις: κινήσεις στην αρχή και στο τέλος της περιόδου που καθορίζεται στις παραμέτρους VT. Το πεδίο "Καταχωρητής" θα είναι κενό για αυτές τις 2 εγγραφές.

Πληροφορίες που λαμβάνονται από τον ιστότοπο

Η γλώσσα ερωτημάτων στο 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 μετατρέπει οποιεσδήποτε τιμές σε τύπος χορδής, και οι ΣΥΝΔΕΣΜΟΙ ΑΝΑΠΑΡΑΓΩΓΗΣ αποτελούν μόνο αναφορά. Η ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΝΑΦΟΡΑΣ συνιστάται να χρησιμοποιείται σε ερωτήματα συστήματος σύνθεσης δεδομένων για βελτιστοποίηση, εκτός εάν, φυσικά, το πεδίο δεδομένων αναφοράς σχεδιάζεται να χρησιμοποιηθεί σε επιλογές.

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

ΕΞΠΡΕΣ

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

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

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Τύπος ΔραστηριότηταςForTaxAccountingCosts

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

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

ΔΙΑΦΟΡΑ

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

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

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

Ο τύπος δεδομένων σε ένα ερώτημα μπορεί να προσδιοριστεί ως εξής: χρησιμοποιώντας τις συναρτήσεις TYPE() και VALUETYPE() ή χρησιμοποιώντας λογικός τελεστήςΣΥΝΔΕΣΜΟΣ. Οι δύο λειτουργίες είναι παρόμοιες.

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

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

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

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

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

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

Συνδέσεις

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

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

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

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

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

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

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

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

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

ΑΠΟ

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

ΜΕ

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

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

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

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

ΑΠΟ
Κατάλογος Αντισυμβαλλόμενοι AS Πελάτες

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

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

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

Σωματεία

Οι κατασκευές 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 Document,
Πωλήσεις Αγαθών και Υπηρεσιών Αγαθών Ποσότητα 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).

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

Περιγραφή της κονσόλας ερωτημάτων 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.

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

Εάν η δημοσίευσή μου είναι χρήσιμη για εσάς, μην ξεχάσετε να της δώσετε ένα συν :-)

Ακολουθεί ένας αναλυτής για όλες τις εργασίες της συλλογής(μια σελίδα που περιέχει συνδέσμους προς νήματα φόρουμ για κάθε εργασία)
http://chistov.spb.ru/forum/16-969-1

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

Ας ξεκινήσουμε λοιπόν:


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

1. Τελική εκφόρτωση βάση πληροφοριών(αρχείο dt)
2. Επεξηγηματική σημείωση

Δεν πρέπει να υπάρχει τίποτα άλλο, κανένα ενδιάμεσο αντίγραφο κ.λπ.

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

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


Χρήση του συμπλεκτικού χαρακτήρα σε ερωτήματα.

Μερικές φορές είναι πιο γρήγορο να πληκτρολογείτε από ένα πρόσθετο πληκτρολόγιο παρά να αλλάζετε τη διάταξη εμπρός και πίσω, εξοικονομώντας χρόνο
& = Alt+38

*************************************************************************************************
Χρησιμοποιώντας το TimePoint() στα ερωτήματα

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

Στιγμή = ?(Λειτουργία διέλευσης = Λειτουργία δημοσίευσης εγγράφου. Λειτουργικό, Απροσδιόριστο, Στιγμή χρόνου());

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

Ο κωδικός είναι:

Movement.RegisterName.Write = True; Movements.RegisterName.Clear();

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

Movement.RegisterName.Write();

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

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

Movement.RegisterName.Write = True; Movements.RegisterName.Clear(); Movement.RegisterName.Write();

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

1) Τακτικός ελεγχόμενος αποκλεισμός, παλιά μέθοδος επεξεργασίας εγγράφων (Αντικείμενο αποκλεισμού δεδομένων)

Ορίστε εάν τα υπόλοιπα πρώτα ελέγχονται και μετά διαγράφονται.
Στην περίπτωση που χρειάζεται να έχουμε κάποια στοιχεία από το μητρώο για να σχηματίσουμε κίνηση.


Παράδειγμα:

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


1. Ορίστε ένα κλείδωμα χρησιμοποιώντας το αντικείμενο Data Lock
2. Διαβάστε τα υπόλοιπα
3. Ελέγχουμε τη δυνατότητα διαγραφής
4. Δημιουργούμε κινήσεις, για παράδειγμα, διαγράφουμε αγαθά
5. Μετά την ανάρτηση του εγγράφου, η φραγή αφαιρείται αυτόματα (η φραγή ισχύει ως μέρος της συναλλαγής ανάρτησης και αφαιρείται αυτόματα από το σύστημα). Δηλαδή, δεν χρειάζεται να ξεκλειδώσετε ειδικά το αντικείμενο.

2) Νέα μεθοδολογία επεξεργασίας εγγράφων (χρησιμοποιώντας την ιδιότητα LockForChange = True)

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

Παράδειγμα:
Ας εξετάσουμε τη λειτουργία της πώλησης ενός προϊόντος.
Στο παραστατικό - ποσότητα, στο μητρώο - μόνο ποσότητα
Έτσι, γνωρίζουμε την ποσότητα των αγαθών από το έγγραφο.
Σχηματίζουμε κινήσεις με την ποσότητα που ορίζεται στο έγγραφο και τις καταγράφουμε. Στη συνέχεια, διαβάζουμε το μητρώο, κοιτάμε τα υπόλοιπα και αναλύουμε αν υπάρχουν αρνητικά. Εάν υπάρχει, εμφανίστε ένα σφάλμα και ορίστε το Refusal = True.

Δηλαδή, η σειρά έχει ως εξής:
1. Για να μετακινηθείτε στον καταχωρητή, ορίστε την ιδιότητα BlockForChange = True
2. Δημιουργούμε κινήσεις - διαγράψτε τα εμπορεύματα
3. Καταγράψτε τις κινήσεις
4. Διαβάστε το μητρώο και βεβαιωθείτε ότι δεν υπάρχουν αρνητικά υπόλοιπα. Αν υπάρχει, τότε διέγραψαν το πλεόνασμα, αν όχι, τότε όλα είναι καλά.

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

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

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

*************************************************************************************************
Αποκλεισμός δεδομένων (μέθοδος αποκλεισμού Νο. 1 από την παραπάνω περιγραφή)

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

Μοιάζει κάπως έτσι:

Κλείδωμα = NewDataLock; Locking Element = Locking.Add("Accumulation Register.GoodsInWarehouses"); LockElement.Mode = DataLockMode.Exclusive; BlockingElement.DataSource = PM; Locking Element.UseFromDataSource("Nomenclature", "Nomenclature"); Lock.Lock();

*************************************************************************************************
Είναι καλύτερα να ονομάζετε το τμήμα του πίνακα των εγγράφων απλώς "TC"

Υπάρχει μόνο ένα τμήμα πίνακα στο 99% των εγγράφων. Ένα τέτοιο ενιαίο όνομα επιτραπέζια μέρηΘα σας βοηθήσει να εξοικονομήσετε πολύ χρόνο γιατί:
1) Πολύ σύντομο - γράψτε γρήγορα
2) Το ίδιο για όλα τα έγγραφα, δεν χρειάζεται να θυμάστε πώς λέγεται όταν γράφετε κώδικα

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

Γενικά χρησιμοποιούσα δειγματοληψία σε όλες τις εργασίες.

Η δειγματοληψία είναι πιο βέλτιστη για το σύστημα από την άποψη της απόδοσης, καθώς είναι «ακονισμένη» μόνο για την ανάγνωση δεδομένων (σε αντίθεση με το TK).

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

Αποτέλεσμα = Query.Run(); Αν δεν είναι Result.Empty() Τότε Select = Result.Select(TravelQueryResult.ByGrouping); ... Τέλος εαν;

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

Αποτέλεσμα = Query.Run(); If Not Result.Empty() Στη συνέχεια Select = Result.Select(); Selection.Next(); Μέθοδος διαγραφής κόστους = Sample.Cost Write-Off Method; τέλος εαν;

*************************************************************************************************
Έγγραφο «Λειτουργία» για λογιστική εργασία

Είναι απαραίτητο να δημιουργηθεί ένα έγγραφο Λειτουργίας για λογιστικές εργασίες.

Απενεργοποιούμε εντελώς την ανάρτηση (στις ιδιότητες "Αποστολή = Άρνηση"), υποδεικνύουμε ότι κάνει κινήσεις στο λογιστικό μητρώο και σύρουμε τις κινήσεις στη φόρμα.

*************************************************************************************************
Άμεση επεξεργασία εγγράφων:

Πρέπει να είναι περιλαμβάνεται:
Σε λειτουργικό και λογιστικό. η λογιστική για τα έγγραφα πρέπει να είναι ενεργοποιημένη (εκτός από το έγγραφο «Λειτουργία», βλ. παρακάτω).

Πρέπει να είναι απενεργοποιημένο:
σε εργασίες υπολογισμού δεν έχει νόημα για έγγραφο μισθοδοσίας.

Για το έγγραφο "Λειτουργία", η ανάρτηση θα πρέπει να απενεργοποιηθεί εντελώς (στις ιδιότητες του εγγράφου "Ανάρτηση = Απαγόρευση"),
αφού γράφει απλά γράφει δεδομένα απευθείας στο μητρώο όταν γράφει.

*************************************************************************************************
Προϋπόθεση σε αίτημα του εντύπου "Είτε η καθορισμένη ονοματολογία είτε οποιαδήποτε, εάν δεν προσδιορίζεται"

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

Ονοματολογία = &Ονοματολογία Ή &Ονοματολογία = Τιμή (Directory.Nomenclature.EmptyLink)

Αλλά θα ήταν πιο βέλτιστο και σωστό να μεταμορφωθεί αυτή η συνθήκη (ευχαριστώ yukon):


Request.Text = Request.Text + "WHERE Nomenclature = &Nomenclature";

τέλος εαν;

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

If ValueFilled (Ονοματολογία) Τότε
Query1.Selection.Add("Item = &Nomenclature");
Request.SetParameter("Nomenclature", Nomenclature);
τέλος εαν;

*************************************************************************************************
Σύνδεση πινάκων σε ερωτήματα:

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

Εάν θέλετε να επισυνάψετε έναν πίνακα χωρίς όρους, τότε στην καρτέλα συνθηκών απλώς γράψτε τη συνθήκη "TRUE".
Σε αυτήν την περίπτωση, ο πίνακας θα ενωθεί ακριβώς.

*************************************************************************************************
Χρησιμοποιώντας το σχέδιο τύπων χαρακτηριστικών (PVC):

1. Χρήση ως μηχανισμός για την περιγραφή των χαρακτηριστικών των αντικειμένων.

1.1. Δημιουργούμε PVC. Αυτά θα είναι Τύποι Χαρακτηριστικών (για παράδειγμα, χρώμα, μέγεθος, μέγιστη ταχύτητα κ.λπ.). Στις ρυθμίσεις, επιλέξτε όλους τους πιθανούς τύπους χαρακτηριστικών τιμών και, εάν είναι απαραίτητο, δημιουργήστε το αντικείμενο από το σημείο 1.2 και υποδείξτε το επίσης στις ρυθμίσεις.

1.2. Για πρόσθετες τιμές PVC, δημιουργούμε έναν δευτερεύοντα κατάλογο AdditionalValues ​​of Characteristics (ή απλά Values ​​of Characteristics).
Θα αποθηκεύσει χαρακτηριστικά εάν δεν βρίσκονται σε υπάρχοντες καταλόγους. Ενδέχεται να μην το δημιουργήσουμε εάν όλα τα χαρακτηριστικά που χρειαζόμαστε βρίσκονται σε υπάρχοντες καταλόγους ή αυτές οι τιμές μπορούν να αναπαρασταθούν από στοιχειώδεις τύπους δεδομένων. Στις ρυθμίσεις PVC υποδεικνύουμε ότι αυτός ο κατάλογος θα χρησιμοποιηθεί για πρόσθετους σκοπούς. αξίες χαρακτηριστικών.

1.3. Δημιουργούμε έναν καταχωρητή πληροφοριών, ο οποίος στην πραγματικότητα συνδέει τρία αντικείμενα:
- Το αντικείμενο στο οποίο συνδέουμε τον μηχανισμό χαρακτηριστικών
- Χαρακτηριστικά τύπου (τύπου PVC)
- Τιμή χαρακτηριστικών (τύπος - χαρακτηριστικό, αυτός είναι ένας νέος τύπος που εμφανίστηκε στο σύστημα μετά τη δημιουργία του PVC
και περιγράφοντας όλους τους πιθανούς τύπους δεδομένων που μπορεί να λάβει μια χαρακτηριστική τιμή).
Στο μητρώο πληροφοριών, υποδεικνύουμε ότι ο Χαρακτηριστικός Τύπος είναι ο κάτοχος της Χαρακτηριστικής Τιμής (σύνδεση με την παράμετρο επιλογής), καθώς και η σύνδεση τύπου για την Χαρακτηριστική Τιμή, πάλι από τον Τύπο Χαρακτηριστικού.

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

2. Χρήση PVC για τη δημιουργία ενός μηχανισμού δευτερεύοντος συνόλου για το λογιστικό μητρώο .

2.1. Δημιουργούμε PVC TypesSubconto.

2.2. Δημιουργούμε έναν δευτερεύοντα κατάλογο ValuesSubConto (όπως και με τα χαρακτηριστικά, θα περιέχει τιμές subconto αν δεν υπάρχουν σε άλλους καταλόγους).

2.3. Η επικοινωνία γίνεται με χρήση λογιστικού σχεδίου.

*************************************************************************************************
Πόροι λογιστικού μητρώου:

Ποσό - ισολογισμός,
Ποσότητα - εκτός ισολογισμού και σχετίζεται με το λογιστικό χαρακτηριστικό Ποσοτική

*************************************************************************************************
Πίνακες εικονικού λογιστικού μητρώου:

Κύκλος εργασιών: κύκλος εργασιών ενός μόνο λογαριασμού
TurnoverDtKt: κύκλος εργασιών μεταξύ δύο οποιωνδήποτε λογαριασμών, δηλαδή όλων των ίδιων συναλλαγών για την περίοδο.

*************************************************************************************************
Συναλλαγματική λογιστική σε λογιστικά μητρώα - πώς να εφαρμόσετε:

Δημιουργούμε ένα λογιστικό χαρακτηριστικό «νόμισμα» στο λογιστικό σχέδιο.
Στο λογιστικό μητρώο δημιουργούμε επιπλέον:
- Διάσταση νομίσματος (απαγόρευση λευκών αξιών, εκτός ισολογισμού, λογιστικό χαρακτηριστικό - νόμισμα)
- πόρος CurrencyAmount (εκτός ισολογισμού, λογιστικό χαρακτηριστικό - νόμισμα, θα αποθηκεύσει το ποσό σε νόμισμα, δηλαδή 100 $ για παράδειγμα)
Ολα.

Έτσι η δομή του μητρώου είναι:

Μετρήσεις:
- Νόμισμα
Πόροι
- Ποσότητα
- Ποσό (ποσό σε ρούβλια)
- CurrencyAmount (ποσό σε νόμισμα)

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

*************************************************************************************************
Όταν ορίζουμε τις παραμέτρους ενός εικονικού πίνακα για να λάβουμε ένα κομμάτι του τελευταίου, επιβάλλουμε όρους στις διαστάσεις και όχι στους πόρους.

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

*************************************************************************************************
Η έννοια του πόρου και οι λεπτομέρειες στο μητρώο υπολογισμού

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

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

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

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

StartDate of CurrentMonth = Start of Month(TexLineMainAccruals.ActionPeriodStart); CurrentMonthEndDate = EndMonth(TexLineMainAccruals.ActionPeriodStart); CurrentMonth = Ημερομηνία; whileDateStartCurrentMonth<= НачалоМесяца(ТекСтрокаОсновныеНачисления.ПериодДействияКонец) Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаОсновныеНачисления.ВидРасчета; Движение.ПериодДействияНачало = Макс(ДатаНачалаТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияНачало); Движение.ПериодДействияКонец = КонецДня(Мин(ДатаОкончанияТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияКонец)); Движение.ПериодРегистрации = Дата; Движение.Сотрудник = ТекСтрокаОсновныеНачисления.Сотрудник; Движение.Подразделение = ТекСтрокаОсновныеНачисления.Подразделение; Движение.Сумма = 0; Движение.КоличествоДней = 0; Движение.График = ТекСтрокаОсновныеНачисления.График; Движение.Параметр = ТекСтрокаОсновныеНачисления.Параметр; Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(Дата, -3)); Движение.БазовыйПериодКонец = КонецДня(КонецМесяца(ДобавитьМесяц(Дата, -1))); ДатаНачалаТекМесяца = НачалоМесяца(ДобавитьМесяц(ДатаНачалаТекМесяца, 1)); ДатаОкончанияТекМесяца = КонецМесяца(ДатаНачалаТекМесяца); КонецЦикла; КонецЕсли;

*************************************************************************************************
Δημιουργία γραφήματος Gantt:

Τοποθετούμε ένα στοιχείο του τύπου «Γράφημα Gantt» στη φόρμα, το ονομάζουμε DG, μετά δημιουργούμε την εντολή «Δημιουργία» και γράφουμε τα εξής στη μονάδα φόρμας:

Διαδικασία &OnClient Generate(Command) GenerateOnServer(); Τέλος διαδικασίας &Στον διακομιστή Διαδικασία GenerateOn Server() DG.Clear(); DG.Update = False; Request = New Request("SELECT |BasicAccrualsActualActionPeriod.Employee, |BasicAccrualsActualActionPeriod.CalculationType, |BasicAccrualsActualActionPeriod.ActionPeriodStart AS ActionPeriodStart, |BasicAccrualsActualActionPeriod.CalculationType, |BasicAccrualsActualActionPeriod.ActionPeriodStart AS ActionPeriodStart. ctionsEnd |FROM |Calculation Register.BasicAccruals.ActualPeriodActions AS BasicAccrualsActualPeriodActions |WHERE |Βασικά AccrualsActualPeriodActions.PeriodActions BETWEEN &StartDate ΚΑΙ &Ημερομηνία λήξης "); Query.SetParameter("StartDate", Period.StartDate); Request.SetParameter("EndDate", Period.EndDate); Select = Query.Run().Select(); Ενώ Selection.Next() Loop Point = DG.SetPoint(Selection.Employee); Series = DG.SetSeries(Selection.CalculationType); Τιμή = DG.GetValue(Point, Series); Interval = Value.Add(); Interval.Start = Sample.PeriodActionStart; Interval.End = Sample.ActionPeriodEnd; EndCycle; DG.Update = True; Τέλος Διαδικασίας

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

*************************************************************************************************
Επεξεργασία εγγραφών «αντιστροφής» σε εργασίες υπολογισμού:

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

Εγγραφές προσθήκης = Movements.MainAccruals.GetAddition(); // Δεν χρειάζεται να καταγράψετε κινήσεις για να λάβετε την προσθήκη

Για κάθε γραμμή τεχνολογίας από τον κύκλο προσθηκών εγγραφών
Record = Movements.MainAccruals.Add();
FillPropertyValues(Record, TechString);
Record.RegistrationPeriod = TechString.RegistrationPeriodReversal;
Record.ActionPeriodStart = TechString.ActionPeriodStartReverse;
Record.ActionPeriodEnd = TechString.ActionPeriodEndReversal;
Τέλος Κύκλου

Και κατά τον υπολογισμό των εγγραφών, εισάγετε επιταγές:

Αν TechMotion.Αναστροφή Τότε
CurrentMovement.Sum = - CurrentMovement.Amount;
τέλος εαν;

*************************************************************************************************
Πώς να προσδιορίσετε τι περιλαμβάνεται στα κύρια δεδουλευμένα και τι περιλαμβάνεται στα πρόσθετα δεδουλευμένα στις εργασίες υπολογισμού.

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

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

Παράδειγμα OH:
- Μισθός
- Κάτι που υπολογίζεται από τον αριθμό των εργάσιμων ημερών (και για αυτό πρέπει να χρησιμοποιήσετε πρόγραμμα): είτε στην περίοδο ισχύος (όπως ο μισθός) είτε στην περίοδο βάσης

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

Δηλαδή: τα δεδουλευμένα για τον υπολογισμό των οποίων χρησιμοποιείται το πρότυπο χρόνου (ίσως και γεγονός) είναι OH, και για τα οποία χρειάζονται πραγματικά δεδομένα ή τίποτα είναι DN.

Ή με άλλα λόγια:

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

*************************************************************************************************
Προσθέστε τη δυνατότητα ανοίγματος της ενσωματωμένης ενότητας βοήθειας "Εργασία με βιβλία αναφοράς" στη φόρμα λίστας του καταλόγου "Ονοματολογία".

Εκτελέστε την εντολή στη φόρμα:

&OnClient
Βοήθεια διαδικασίας (εντολή)
OpenHelp("v8help://1cv8/EnterprWorkingWithCatalogs");
Τέλος Διαδικασίας

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

*************************************************************************************************
Εφαρμογή της αλληλεπίδρασης μεταξύ μορφών, για παράδειγμα, επιλογή:

1. Από την τρέχουσα φόρμα, ανοίξτε την επιθυμητή χρησιμοποιώντας τη μέθοδο «OpenForm()», περνώντας τη δομή με παραμέτρους ως δεύτερη παράμετρο (αν χρειάζεται). Η τρίτη παράμετρος μπορεί να περάσει έναν σύνδεσμο σε αυτήν τη φόρμα - ThisForm.

2. Στην ανοιχτή φόρμα, στον χειριστή «When CreatedOnServer()», μπορούμε να συλλάβουμε τις παραμέτρους που πέρασαν στο βήμα 1 μέσω του «Parameters.[ParameterName]». Η φόρμα που ξεκίνησε το άνοιγμα αυτής της φόρμας θα είναι προσβάσιμη μέσω του αναγνωριστικού «Ιδιοκτήτης» (αν, φυσικά, καθορίστηκε στο βήμα 1).

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

*************************************************************************************************
Κύκλος ζωής των παραμέτρων φόρμας

Όλες οι παράμετροι που μεταφέρθηκαν στη φόρμα τη στιγμή του ανοίγματός της είναι ορατές μόνο στη διαδικασία "When CreateOnServer".
Αφού δημιουργηθούν, όλες οι παράμετροι καταστρέφονται και δεν είναι πλέον διαθέσιμες στη φόρμα.
Η εξαίρεση αφορά τις παραμέτρους που δηλώνονται στο πρόγραμμα επεξεργασίας φόρμας με το χαρακτηριστικό "Key Parameter".
Καθορίζουν τη μοναδικότητα της φόρμας.
Αυτή η παράμετρος θα υπάρχει όσο υπάρχει η ίδια η φόρμα.

*************************************************************************************************
Χρήση της διεπαφής Taxi

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

*************************************************************************************************

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

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

Μητρώα συσσώρευσηςστο σύστημα 1C: Enterprise χωρίζονται σε δύο τύπους: μητρώα συσσώρευσης αποφάγιακαι μητρώα συσσώρευσης σ.α.λ.

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

Όπως υποδηλώνει το όνομα, ορισμένοι προορίζονται να αποκτήσουν υπόλοιπα από μια συγκεκριμένη ημερομηνία και οι δεύτεροι προορίζονται να αποκτήσουν κύκλο εργασιών για μια επιλεγμένη περίοδο. Ανάλογα με τον τύπο του καταχωρητή συσσώρευσης, η πλατφόρμα 1C:Enterprise δημιουργεί ένα διαφορετικό σύνολο εικονικών πινάκων. Σε αυτό το άρθρο θα εξετάσουμε την εργασία με εικονικούς πίνακες καταχωρητών συσσώρευσης. Για να γίνει αυτό, θα δημιουργήσουμε ένα μητρώο για τη συσσώρευση υπολοίπων - Προϊόντα Παραμένεικαι το μητρώο συσσώρευσης επαναστάσεων - Κύκλος εργασιών προϊόντων.

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

Μητρώο συσσώρευσης επαναστάσεων

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

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

Εικονικό τραπέζι Κύκλος εργασιών

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

Αφήστε το μητρώο μας να έχει τις ακόλουθες εγγραφές

Ας επιστρέψουμε στον σχεδιαστή ερωτήματος και ας ξεκινήσουμε επιλέγοντας απλώς από τον πίνακα ΠροϊόνταΚύκλος εργασιών.Κύκλος εργασιώνόλα τα πεδία

Κατά συνέπεια, το αίτημα θα μοιάζει με αυτό:

SELECT ProductsTurnoverTurnover.Warehouse, ProductsTurnoverTurnover.Product, ProductsTurnoverTurnover.QuantityTurnover FROM RegisterAccumulation.ProductsTurnover.Turnover(,) AS ProductsTurnoverTurnover

Το αποτέλεσμα του ερωτήματος μοιάζει με αυτό:

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

Για να γίνει αυτό, εξαιρούμε την ιδιότητα από το αίτημα Στοκ

SELECT ProductsTurnoverTurnover.Product, ProductTurnoverTurnover.QuantityTurnover FROM RegisterAccumulation.ProductsTurnover.Turnover(,) AS ProductsTurnoverTurnover

και ως αποτέλεσμα θα μας απομένουν μόνο δύο γραμμές

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

Μετά από αυτό, το αρχικό μας αίτημα θα λάβει την ακόλουθη μορφή

SELECT GoodsTurnover.Warehouse, GoodsTurnover.Product, GoodsTurnover.QuantityTurnover FROM RegisterAccuulation.GoodsTurnover.Turnover(&Έναρξη Περιόδου, &Τέλος Περιόδου, Αποθήκη =ASWareT

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

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

FROM RegisterAccumulations.ProductsTurnover.Turnover(,) HOW ProductsTurnoverTurnover WHERE ProductsTurnoverTurnover.Warehouse = &Warehouse

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

Μετά από αυτό, παρατηρούμε ότι ένα πεδίο εμφανίζεται στα πεδία του πίνακα Περίοδος.

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

SELECT ProductsTurnoverTurnover.Period, ProductsTurnoverTurnover.Warehouse, ProductsTurnover.Product, ProductsTurnoverTurnover.QuantityTurnover FROM RegisterAccumulation.ProductsTurnover.Turnover(, Month,Turnover) ASTurn

Εκτελούμε το αίτημα:

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

Μητρώο συσσώρευσης υπολοίπου

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

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

Εικονικό τραπέζι Κύκλος εργασιών

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

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

Υπόλοιπα εικονικού τραπεζιού

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

Ας δούμε ένα μικρό παράδειγμα. Έχουμε τις ακόλουθες εγγραφές στο μητρώο:

Ας επιλέξουμε όλα τα διαθέσιμα πεδία και ας ορίσουμε το τέλος Ιουνίου ως ημερομηνία λήψης υπολοίπων. Δεν θα επιλέξουμε βάσει μετρήσεων. Τότε το κείμενο της αίτησης θα μοιάζει με αυτό:

ΕΠΙΛΕΞΤΕ ΠροϊόνταΥπολείμματαΥπολείμματα.Αποθήκη, ΠροϊόνταΥπολείμματαΥπολείμματα.Προϊόν, ΠροϊόνταΥπολείμματαΥπολείμματα.ΠοσότηταΥπολείμματα ΑΠΟ RegistrationAccumulations.ProductsRemainings.Remainings(&DateRemainings,) AS ProductsRemainingRemainings.

Και αφού το εκτελέσουμε παίρνουμε αυτό το αποτέλεσμα

Εικονικός πίνακας Υπόλοιπα και Κύκλοι Εργασιών

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

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