Ενότητα για εργασία με πελάτες σε 1s. Γενικές ενότητες. Εξωτερική σημαία συμμετοχής

Το άρθρο συνεχίζει τη σειρά "Πρώτα βήματα στην ανάπτυξη στο 1C", εξετάζει λεπτομερώς τα ακόλουθα θέματα:

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

Εφαρμογή

Το άρθρο περιγράφει την πλατφόρμα 1C:Enterprise 8.3.4.496. Το υλικό είναι επίσης σχετικό με τις τρέχουσες εκδόσεις πλατφόρμας.

Ενότητες σε 1C: Enterprise 8.3

Οι μονάδες είναι εκείνα τα αντικείμενα που περιέχουν κώδικα προγράμματος.

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

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

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

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

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

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

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

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

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

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

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

Ενότητα εφαρμογής

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

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

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

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

Η μονάδα εφαρμογής δεν θα λειτουργήσει εάν το πρόγραμμα 1C εκκινηθεί, για παράδειγμα, σε λειτουργία σύνδεσης com. Σε αυτήν την περίπτωση, το παράθυρο του προγράμματος δεν δημιουργείται.

Θα πρέπει να σημειωθεί ότι στην Πλατφόρμα 8.3 υπάρχουν δύο διαφορετικές ενότητες εφαρμογών: η ενότητα Διαχειριζόμενης εφαρμογής και η ενότητα Τακτικής εφαρμογής. Τα συμβάντα λειτουργικής μονάδας διαχειριζόμενης εφαρμογής υποβάλλονται σε επεξεργασία κατά την εκκίνηση του Managed Application Thin and Thick Client και Web Client.

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

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

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

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

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

Η φόρμα θα ανοίξει Επιλογές. Στον σελιδοδείκτη Είναι κοινάπρέπει να καθοριστεί η λειτουργία επεξεργασίας διαμόρφωσης Διαχειριζόμενη εφαρμογήΚαι Τακτική εφαρμογή.

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

Λίστα συμβάντων για τα οποία μπορεί να γίνει επεξεργασία ΔιαχειρίζεταιΚαι Τακτική εφαρμογήείναι το ίδιο.

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

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

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

Υπάρχουν δύο συμβάντα που σχετίζονται με την έναρξη του συστήματος («πριν» και «στο»). Δύο συμβάντα που σχετίζονται με τον τερματισμό του συστήματος ("πριν" και "στο"). Και επίσης επεξεργασία εξωτερικών γεγονότων (για παράδειγμα, εκδηλώσεις εμπορικού εξοπλισμού).

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

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

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

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

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

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

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

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

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

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

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

Σε αντίθεση με τη μονάδα εφαρμογής, η οποία ξεκινά τη στιγμή της διαδραστικής εκκίνησης της εφαρμογής, η μονάδα εξωτερικής σύνδεσης λειτουργεί σε λειτουργία σύνδεσης COM, δηλ. όταν δημιουργείται ένα αντικείμενο 1C:Enterprise 8 και συνδέεται σε μια συγκεκριμένη βάση δεδομένων.

Αυτή η ενότητα έχει συμβάντα: Κατά την εκκίνηση του συστήματοςΚαι Κατά τον τερματισμό του συστήματος.

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

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

Στη μονάδα εξωτερικής σύνδεσης είναι δυνατό να περιγραφούν μεταβλητές εξαγωγής και μέθοδοι εξαγωγής που θα είναι διαθέσιμες στην πλευρά όπου πραγματοποιείται η εξωτερική κλήση στο 1C:Enterprise 8.3.

Δεδομένου ότι δεν υπάρχει διεπαφή χρήστη στην εξωτερική σύνδεση, το Outer Join Module έχει μεταγλωττιστεί εξ ολοκλήρου στον διακομιστή.

Ενότητα συνεδρίας

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

Μπορείτε να ανοίξετε το Session Module είτε μέσω του μενού περιβάλλοντος είτε μέσω της παλέτας ιδιοτήτων του ριζικού κόμβου.

Η ενότητα συνεδρίας παρέχει μια εκδήλωση SettingSessionParameters.

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

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

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

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

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

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

  • διαδικασία SettingSessionParametersεκτελείται όχι μόνο κατά την εκκίνηση του συστήματος, αλλά και κατά την πρόσβαση σε μη αρχικοποιημένες παραμέτρους περιόδου λειτουργίας. Εκείνοι. ο χειριστής SetSessionParameters μπορεί να κληθεί επανειλημμένα κατά τη λειτουργία της εφαρμογής.
  • εάν ο αριθμός των στοιχείων στον πίνακα παραμέτρων συνεδρίας είναι μηδέν (η διάταξη των απαιτούμενων παραμέτρων έχει τύπο δεδομένων Undefined), τότε αυτή είναι η στιγμή που εκκινείται η εφαρμογή.
  • Εφόσον το Session Module λειτουργεί σε προνομιακή λειτουργία και δεν θα υπάρχει έλεγχος των δικαιωμάτων πρόσβασης, θα πρέπει να εργαστείτε πολύ προσεκτικά με τα αντικείμενα βάσης δεδομένων, καθώς ο χρήστης μπορεί να αποκτήσει πρόσβαση σε δεδομένα που δεν πρέπει να του παρέχονται.
  • Όταν ξεκινήσει το σύστημα, δεν είναι ακόμη γνωστό με βεβαιότητα εάν η εφαρμογή θα ξεκινήσει. Σε αυτήν την περίπτωση, ενδέχεται να εκτελεστούν περιττές ενέργειες στο πρόγραμμα χειρισμού συμβάντων SetSessionParameters.

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

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

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

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

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

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

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

Ιδιοκτησία Παγκόσμιαγια γενικές ενότητες μπορεί να είναι χρήσιμο. Ωστόσο, δεν πρέπει να το χρησιμοποιείτε παντού για όλες τις κοινές ενότητες.

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

Αν η σημαία ΠαγκόσμιαΓια Γενική ενότηταδεν καθορίζεται, τότε η μεταγλώττιση αυτής της ενότητας θα πραγματοποιηθεί τη στιγμή της πρώτης κλήσης σε αυτήν (δηλαδή μετά την εκκίνηση του συστήματος).

Επιπλέον, η χρήση καθολικών κοινών λειτουργικών μονάδων επηρεάζει την κατανόηση του κώδικα. Οι μέθοδοι μιας μη καθολικής κοινής ενότητας καλούνται μέσω του ονόματος Γενική ενότητακαι το όνομα της μεθόδου, για παράδειγμα:
Cost Calculation Module.DistributeIndirectCosts();

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

Για Γενική ενότητα V Παλέτα ιδιοτήτωνμπορείτε να ορίσετε την ιδιοκτησία Προνομιούχος.

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

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

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

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

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

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

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

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

Για να το κάνετε αυτό σε μια προνομιακή Γενική ενότηταΘα πρέπει να δημιουργήσετε μια διαδικασία που έχει πρόσβαση στα απαιτούμενα δεδομένα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Από προεπιλογή, αυτή η ιδιότητα έχει οριστεί σε Do Not Use. Άλλες πιθανές τιμές: cache Κατά τη διάρκεια της κλήσης, ή Για τη διάρκεια της συνεδρίας.

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

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

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

Ενότητα φόρμας

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

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

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

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

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

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

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

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

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

Μονάδα αντικειμένου

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

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

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

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

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

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

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

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

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

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

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

Ολόκληρο το περιβάλλον της μονάδας εκτελείται στον διακομιστή.

Για τους καταχωρητές υπάρχει ένα Recordset Module.

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

Στις μονάδες Object Modules, Value Manager Modules (για σταθερές) και Recordset Modules (για καταχωρητές) μπορείτε να περιγράψετε μεθόδους που μπορούν να γίνουν εξαγώγιμες και αυτές οι μέθοδοι θα είναι προσβάσιμες από το εξωτερικό.

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

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

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

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

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

Μονάδα διαχειριστή

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

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

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

Για να πραγματοποιηθεί αυτή η κλήση, είναι απαραίτητο να αποκτήσετε τον τύπο δεδομένων Directory Manager.

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

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

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

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

Όσο για τη Μονάδα Διαχείρισης, περιγράφει κάποια κοινή ενέργεια για μια ομάδα ή για όλα τα στοιχεία ενός καταλόγου ή κάποιου εγγράφου. Για παράδειγμα, εάν πρέπει να εκτυπώσετε ένα στοιχείο καταλόγου, μπορείτε να χρησιμοποιήσετε τη μονάδα αντικειμένου.

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

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

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

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

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

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

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

1.2. Κατά την ανάπτυξη κοινών λειτουργικών μονάδων, θα πρέπει να επιλέξετε ένα από τα τέσσερα περιβάλλοντα εκτέλεσης κώδικα:

Κοινός τύπος μονάδας Παράδειγμα ονόματος Κλήση διακομιστή Υπηρέτης Εξωτερική ένωση Πελάτης
(τακτική εφαρμογή)
Πελάτης
(διαχειριζόμενη εφαρμογή)
1. ΥπηρέτηςΓενικού σκοπού (ή διακομιστή γενικού σκοπού)
2. Διακομιστής για κλήση από πελάτηGeneralPurposeCallServer
3. ΠελάτηςΠελάτης γενικού σκοπού (ή γενικού σκοπού παγκόσμια)
4. Διακομιστή-πελάτηGeneral PurposeClientServer

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

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

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

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

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

Σε ορισμένες περιπτώσεις, μπορεί να προστεθεί ένα postfix για την αποφυγή διενέξεων ονόματος με ιδιότητες καθολικού περιβάλλοντος "Υπηρέτης".
Για παράδειγμα: RoutineTasksServer, Data ExchangeServer.

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

  • Υπηρέτης(πλαίσιο ελέγχου Κλήση διακομιστήεγκατεστημένος)

Οι κοινές μονάδες διακομιστή για κλήση από πελάτη ονομάζονται σύμφωνα με τους γενικούς κανόνες για την ονομασία αντικειμένων μεταδεδομένων και πρέπει να ονομάζονται με ένα postfix "CallServer".
Για παράδειγμα: Εργασία με διακομιστή FilesCalling

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

Δείτε επίσης:Περιορισμός στη ρύθμιση της σημαίας «Κλήση διακομιστή» για κοινές μονάδες

2.3. Κοινές ενότητες πελάτηπεριέχουν επιχειρηματική λογική πελάτη (λειτουργικότητα ορίζεται μόνο για τον πελάτη) και έχουν τα ακόλουθα χαρακτηριστικά:

  • Πελάτης (διαχειριζόμενη εφαρμογή))
  • Πελάτης (κανονική εφαρμογή)

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

Οι κοινές μονάδες πελάτη ονομάζονται με ένα postfix "Πελάτης".
Για παράδειγμα: Εργασία με το FilesClient, Client General Purpose

Δείτε επίσης: ελαχιστοποίηση κώδικα που εκτελείται στον πελάτη

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

  • Πελάτης (διαχειριζόμενη εφαρμογή)
  • Υπηρέτης(πλαίσιο ελέγχου Κλήση διακομιστήεπαναφορά)
  • Πελάτης (κανονική εφαρμογή)
  • Εξωτερική ένωση

Οι κοινές μονάδες αυτού του τύπου ονομάζονται με το postfix "Διακομιστή-πελάτη".
Για παράδειγμα: Εργασία με το FilesClient, General PurposeClientServer

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

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

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

Προκειμένου να γίνει διάκριση μεταξύ κοινών λειτουργικών μονάδων ενός υποσυστήματος, που δημιουργούνται για την υλοποίηση διαδικασιών και λειτουργιών που εκτελούνται σε διαφορετικά περιβάλλοντα, συνιστάται να τους δίνονται τα postfixes που περιγράφηκαν προηγουμένως στις παραγράφους. 2.1-2.4.

Τι είναι οι ενότητες και σε τι ακριβώς προορίζονται; Η ενότητα περιέχει τον κωδικό προγράμματος. Επιπλέον, αξίζει να σημειωθεί ότι, σε αντίθεση με την πλατφόρμα 7.7, όπου ο κώδικας θα μπορούσε να βρίσκεται στις ιδιότητες των στοιχείων φόρμας και στα κελιά των πινάκων διάταξης, στην πλατφόρμα 8.x οποιαδήποτε γραμμή κώδικα πρέπει να βρίσκεται σε κάποια ενότητα . Συνήθως, μια ενότητα αποτελείται από τρεις ενότητες - μια ενότητα για την περιγραφή μεταβλητών, μια ενότητα για την περιγραφή διαδικασιών και συναρτήσεων και μια ενότητα για το κύριο πρόγραμμα. Αυτή η δομή είναι τυπική για όλες σχεδόν τις μονάδες πλατφόρμας, με ορισμένες εξαιρέσεις. Ορισμένες λειτουργικές μονάδες δεν διαθέτουν ενότητα περιγραφής μεταβλητών ή κύρια ενότητα προγράμματος. Για παράδειγμα, Session Module και οποιαδήποτε General Module.

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

Ενότητα εφαρμογής

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

Υπάρχουν δύο διαφορετικές ενότητες εφαρμογών στην πλατφόρμα 8.2. Αυτές είναι η λειτουργική μονάδα Regular Application και η ενότητα Managed Application. Ενεργοποιούνται όταν εκκινούνται διαφορετικοί πελάτες. Αυτός είναι ο τρόπος με τον οποίο ενεργοποιείται η λειτουργική μονάδα διαχειριζόμενης εφαρμογής κατά την εκκίνηση του προγράμματος-πελάτη web, του thin client και του thick client σε λειτουργία διαχειριζόμενης εφαρμογής. Και η λειτουργική μονάδα κανονικής εφαρμογής ενεργοποιείται όταν ο παχύς πελάτης εκκινείται σε κανονική λειτουργία εφαρμογής.

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

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

Μονάδα εξωτερικής σύνδεσης

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

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

Ενότητα συνεδρίας

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

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

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

Κοινές ενότητες

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

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

Ενότητα φόρμας

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

Μονάδα αντικειμένου

Αυτή η ενότητα είναι τυπική για πολλά αντικείμενα διαμόρφωσης και γενικά προορίζεται για την επεξεργασία συμβάντων αντικειμένων. Για παράδειγμα, συμβάντα για εγγραφή και διαγραφή αντικειμένων, συμβάντα για δημοσίευση εγγράφων κ.λπ.

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

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

Μονάδα διαχείρισης αντικειμένων

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

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

Σύμβολα στο διάγραμμα: O.M. Client - Client common module. Ο.Μ. Διακομιστής - Κοινόχρηστη ενότητα διακομιστή. Μ.Φ. Πελάτης - Διαδικασίες πελάτη της ενότητας φόρμας. Μ.Φ. Διακομιστής - Διαδικασίες διακομιστή της ενότητας φόρμας.

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

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

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

Παράδειγμα δομής ενότητας προγράμματος:

//******************** ΠΕΡΙΟΧΗ ΜΕΤΑΒΛΗΤΗΣ ΔΗΛΩΣΗΣ **********************

Perem Επώνυμο Εξαγωγή; / /αυτή είναι μια καθολική μεταβλητή
Αλλαγή ονόματος, πατρώνυμο; //αυτή είναι μια μεταβλητή ενότητας
Perem πλήρες όνομα; //Αυτή είναι επίσης μια μεταβλητή ενότητας και μπορεί να προσπελαστεί

//από οποιαδήποτε διαδικασία και λειτουργία της ενότητας μας

//**************** ΠΕΡΙΟΧΗ ΠΕΡΙΓΡΑΦΗ ΔΙΑΔΙΚΑΣΙΩΝ ΚΑΙ ΛΕΙΤΟΥΡΓΙΩΝ ****************

Διαδικασία Διαδικασία 1 ()
Μεταβλητό Σύνολο ; / /Το αποτέλεσμα είναι μια τοπική μεταβλητή (μεταβλητή διαδικασίας)

Σύνολο = Επώνυμο + " "+ Όνομα + " "+ Μέσο όνομα;

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

Συνάρτηση Συνάρτηση1()

// τελεστές συνάρτησης

Return(LastName + " "+ FirstName);

EndFunction

//******************** ΚΥΡΙΟ ΚΕΙΜΕΝΟ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ *********************

Επώνυμο = "Ivanov";
Όνομα = "Ιβάν";
Πατρώνυμο = "Ιβάνοβιτς";

//******************************************************************************

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

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

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

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

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

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

Ενότητα εφαρμογής (διαχειριζόμενη ή κανονική)

Η ενότητα εφαρμογής περιγράφει τις διαδικασίες (χειριστές) συμβάντων που αρχικοποιούνται στην αρχή και στο τέλος του συστήματος. Για παράδειγμα, όταν ξεκινήσει η εκτέλεση της εφαρμογής, μπορείτε να ενημερώσετε ορισμένα δεδομένα διαμόρφωσης και όταν βγείτε από την εφαρμογή, μπορείτε να ρωτήσετε εάν αξίζει να βγείτε από το πρόγραμμα καθόλου. Επιπλέον, αυτή η ενότητα παρακολουθεί συμβάντα από εξωτερικό εξοπλισμό, για παράδειγμα, εμπορικές ή φορολογικές. Αξίζει να σημειωθεί ότι η ενότητα εφαρμογής εκτελείται μόνο όταν η εφαρμογή εκκινείται διαδραστικά, δηλαδή όταν εκκινείται το παράθυρο του προγράμματος. Αυτό δεν συμβαίνει εάν η εφαρμογή εκκινηθεί σε λειτουργία σύνδεσης com.
Στην πλατφόρμα 1C 8 υπάρχουν δύο διαφορετικές ενότητες εφαρμογής. Αυτές είναι η λειτουργική μονάδα Regular Application και η ενότητα Managed Application. Ενεργοποιούνται κατά την εκκίνηση διαφορετικών πελατών. Έτσι, η λειτουργική μονάδα Managed Application ενεργοποιείται όταν ο πελάτης web, ο thin client και ο thick client εκκινούνται σε λειτουργία διαχειριζόμενης εφαρμογής. Και η λειτουργική μονάδα κανονικής εφαρμογής ενεργοποιείται όταν ο παχύς πελάτης εκκινείται σε κανονική λειτουργία εφαρμογής. Η ρύθμιση λειτουργίας εκκίνησης εφαρμογής καθορίζεται στην ιδιότητα διαμόρφωσης "Βασική λειτουργία εκκίνησης".

Μια ενότητα εφαρμογής μπορεί να περιέχει και τις 3 ενότητες - δηλώσεις μεταβλητών, περιγραφές διαδικασιών και συναρτήσεων, καθώς και το κύριο κείμενο του προγράμματος. Η ενότητα εφαρμογής έχει μεταγλωττιστεί στην πλευρά του πελάτη, γεγονός που περιορίζει σημαντικά τη χρήση πολλών τύπων δεδομένων. Μπορείτε να επεκτείνετε το περιβάλλον της μονάδας εφαρμογής χρησιμοποιώντας μεθόδους κοινών λειτουργικών μονάδων που έχουν το σύνολο ιδιοτήτων "Κλήση διακομιστή". Όλες οι μεταβλητές και οι μέθοδοι της λειτουργικής μονάδας εφαρμογής που επισημαίνονται ως εξαγωγή θα είναι διαθέσιμες σε οποιαδήποτε λειτουργική μονάδα διαμόρφωσης που εκτελείται στην πλευρά του πελάτη. Ωστόσο, όσο δελεαστικό κι αν είναι, δεν πρέπει να τοποθετήσετε μεγάλο αριθμό διαδικασιών και λειτουργιών εδώ. Όσο περισσότερος κώδικας υπάρχει σε μια δεδομένη ενότητα, τόσο μεγαλύτερος είναι ο χρόνος μεταγλώττισης και, κατά συνέπεια, ο χρόνος εκκίνησης της εφαρμογής.

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

Μονάδα εξωτερικής σύνδεσης

  • μπορεί να περιέχει και τις 3 περιοχές
  • που βρίσκεται στο ριζικό τμήμα της διαμόρφωσης

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

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

Ενότητα συνεδρίας

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

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

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

Κοινές ενότητες

  • μπορεί να περιέχει μια περιοχή που περιγράφει διαδικασίες και λειτουργίες
  • εκτελείται από την πλευρά του διακομιστή ή του πελάτη (ανάλογα με τις ρυθμίσεις της μονάδας)
  • βρίσκεται στον κλάδο δέντρου των αντικειμένων διαμόρφωσης "General" - "General modules"

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

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

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

Ενότητα φόρμας

  • μπορεί να περιέχει και τις 3 περιοχές
  • εκτελείται στην πλευρά του διακομιστή και του πελάτη

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

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

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

Μονάδα αντικειμένου

  • μπορεί να περιέχει και τις 3 περιοχές
  • εκτελείται από την πλευρά του διακομιστή

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

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

Μονάδα διαχείρισης αντικειμένων

  • μπορεί να περιέχει και τις 3 περιοχές
  • εκτελείται από την πλευρά του διακομιστή

Η μονάδα διαχείρισης αντικειμένων εμφανίστηκε μόνο από την έκδοση 1C 8.2. Η λειτουργική μονάδα διαχειριστή υπάρχει για όλα τα αντικείμενα εφαρμογής και έχει σχεδιαστεί για να διαχειρίζεται αυτό το αντικείμενο ως αντικείμενο διαμόρφωσης. Η μονάδα διαχειριστή σάς επιτρέπει να επεκτείνετε τη λειτουργικότητα ενός αντικειμένου εισάγοντας διαδικασίες (εγγραφής) και συναρτήσεις που δεν σχετίζονται με μια συγκεκριμένη παρουσία ενός αντικειμένου βάσης δεδομένων, αλλά με το ίδιο το αντικείμενο διαμόρφωσης. Η ενότητα διαχείρισης αντικειμένων σάς επιτρέπει να τοποθετήσετε γενικές διαδικασίες και συναρτήσεις για ένα δεδομένο αντικείμενο και να αποκτήσετε πρόσβαση σε αυτές από έξω, για παράδειγμα, από την επεξεργασία (φυσικά, εάν αυτή η διαδικασία ή η συνάρτηση έχει τη λέξη-κλειδί Εξαγωγή). Τι νέο μας δίνει αυτό; Γενικά, τίποτα εκτός από την οργάνωση διαδικασιών ανά αντικείμενα και την αποθήκευσή τους σε ξεχωριστά μέρη - Ενότητες Διαχείρισης αντικειμένων. Μπορούμε εξίσου επιτυχώς να τοποθετήσουμε αυτές τις διαδικασίες και συναρτήσεις σε γενικές ενότητες, αλλά το 1C συνιστά την τοποθέτηση γενικών διαδικασιών και συναρτήσεων αντικειμένων στη Μονάδα Διαχείρισης Αντικειμένων. Παραδείγματα χρήσης των διαδικασιών και των λειτουργιών του Object Managers Module: αρχική συμπλήρωση μεμονωμένων στοιχείων ενός καταλόγου ή εγγράφου υπό ορισμένες προϋποθέσεις, έλεγχος της συμπλήρωσης των λεπτομερειών ενός καταλόγου ή εγγράφου υπό ορισμένες προϋποθέσεις, κ.λπ.

Μονάδα εντολών

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

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

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

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

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

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

Λειτουργία NewFunction () Εξαγωγή

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



Per = Αντικείμενο. NewFunction() ;

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

Μεταβλητή NewVariable Εξαγωγή

Στοιχείο καταλόγου = Κατάλογοι. Ονοματολογία. FindByCode("000000001" );
Αντικείμενο = Στοιχείο καταλόγου. GetObject() ;
Ενα αντικείμενο. NewVariable= );

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

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

Διαδικασία NewProcedure() Εξαγωγή

Στοιχείο καταλόγου = Κατάλογοι. Ονοματολογία. NewProcedure();

Ή για μια μεταβλητή:

Μεταβλητή NewVariable Εξαγωγή

Στοιχείο καταλόγου = Κατάλογοι. Ονοματολογία. newVariable;

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

Όταν χρησιμοποιείτε τη μονάδα αντικειμένου, ο κώδικας θα μοιάζει με αυτό:

Λειτουργία Εκτύπωση εγγράφου (Σύνδεσμος) Εξαγωγή
//Πρέπει να περάσετε έναν σύνδεσμο προς ένα συγκεκριμένο έγγραφο σε αυτήν τη συνάρτηση
Επιστροφή TabDoc;
EndFunction

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

&OnClient
Εκτύπωση διαδικασίας (εντολή)
TabDoc = PrintOnServer();
TabDoc. Προβολή() ;
Διαδικασία λήξης
&Στον διακομιστή
Λειτουργία PrintOnServer()
Doc = FormAttributesValue("Αντικείμενο") ;
Έγγραφο επιστροφής. PrintDocument(Object. Link) ;
EndFunction

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

Από άποψη απόδοσης, είναι πολύ καλύτερο να χρησιμοποιείτε τη μονάδα διαχειριστή όποτε είναι δυνατόν. Στο παράδειγμά μας, η λύση στο πρόβλημα θα μοιάζει με αυτό.
Λειτουργία PrintOnServer()
Έγγραφα Επιστροφών. Το Έγγραφό μας. PrintDocument(ArrayLinks);
EndFunction

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

Λοιπόν, πότε να χρησιμοποιήσετε μια λειτουργική μονάδα αντικειμένου και πότε να χρησιμοποιήσετε μια λειτουργική μονάδα διαχειριστή;

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