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

Αποδείχθηκε αρκετά σχετικό :)

Εντάξει, ας κάνουμε και αυτό το Σαββατοκύριακο χρήσιμο.

Έτσι, σήμερα είναι ένα άλλο θέμα της «εφαρμοσμένης λειτουργίας του 1C»:

Μηχανισμός επέκτασης στην πλατφόρμα 8.3.6

Για τι πράγμα μιλάμε?

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

Όταν χρησιμοποιείτε επεκτάσεις Η τροποποίηση της διαμόρφωσης πραγματοποιείται σε μια νέα οντότητα– επέκταση διαμόρφωσης:

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

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

Για να μπορέσετε να το καταλάβετε αυτό με περισσότερες λεπτομέρειες, δημοσιεύουμε πολλά ακόμη βίντεο + PDF σε επεκτάσεις.

Λοιπόν, εδώ πάμε:

Σκοπός των επεκτάσεων διαμόρφωσης

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

Αντικείμενα που μπορούν να τροποποιηθούν στην επέκταση

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

Εργασία με επεκτάσεις στο διαμορφωτή

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

Δανεισμός αντικειμένων

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

Δημιουργία των δικών σας αντικειμένων σε μια επέκταση διαμόρφωσης

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

Εργασία με επεκτάσεις σε λειτουργία χρήστη

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

Εργασία με διαχειριζόμενες φόρμες σε επεκτάσεις διαμόρφωσης

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

Διαχειριζόμενες μονάδες φόρμας και χειριστές συμβάντων στις επεκτάσεις διαμόρφωσης

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

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

Υλοποιήθηκε στην έκδοση 8.3.9.1818.

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

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

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

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

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

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

Δικές μου μονάδες
Μπορείτε να δημιουργήσετε τις δικές σας κοινές μονάδες στην επέκταση.

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

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

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

Κλήσεις μεθόδων υποκλοπής

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

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

Ο σχολιασμός &Before("Διαδικασία1") σημαίνει ότι παρεμποδίζεται μια γενική διαδικασία με το όνομα Procedure1. Το όνομα σχολιασμού Πριν σημαίνει ότι η διαδικασία αναχαίτισης Ext_Proc1() θα εκτελεστεί πρώτα και μετά η γενική Procedure1().

Περίληψη &Πριν

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

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

Περίληψη & Μετά

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

Περίληψη &Αντίθετα

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

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

  • &Πριν;
  • &Μετά;
  • &Αντί;
  • &Πριν και μετά.

Ο τελευταίος συνδυασμός αναχαιτιστών (&Πριν και &Μετά) θα εκτελεστεί ως εξής:

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

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

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

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

Σε μια ενσωματωμένη γλώσσα, μια τέτοια λειτουργία αναχαίτισης μπορεί να μοιάζει με αυτό:

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

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

Τι είναι καλύτερο, &Πριν, &Μετά ή &Αντ' αυτού;

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

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

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

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

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

Ακολουθία κλήσεων κατά την υποκλοπή μεθόδων

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

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

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

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

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

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

Παράδειγμα 1

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

  • Το interceptor από το Extension2 θα κληθεί πρώτο επειδή είναι από πάνω. Αυτό θα είναι το &Before Interceptor επειδή έχει αυτόν τον σχολιασμό.
  • Το interceptor από το Extension1 θα κληθεί στη συνέχεια επειδή είναι το επόμενο στην πίτα. Θα είναι &Πριν ξανά επειδή έχει αυτόν τον σχολιασμό.
  • Η γενική μέθοδος θα κληθεί στη συνέχεια επειδή δεν υπάρχουν άλλοι παρεμποδιστές που να την εμποδίζουν να εκτελεστεί.
  • Στη συνέχεια, με την αντίστροφη σειρά της πίτας, θα κληθούν ο αναχαιτιστής &Μετά από την Επέκταση1 και ο αναχαιτιστής &Μετά από την Επέκταση2.

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

Παράδειγμα 2

Εάν οι παρεμβολές χρησιμοποιούν τη μέθοδο ContinueCall(), τότε ισχύει η ίδια αρχή πίτας.

  • Το interceptor από το Extension3 θα κληθεί πρώτο επειδή είναι από πάνω. Θα είναι ένας αναχαιτιστής &αντ' αυτού, επειδή έχει αυτόν τον σχολιασμό.
  • Όταν προσπαθείτε να καλέσετε μια τυπική μέθοδο, η υπόλοιπη «πίτα» θα αναλυθεί. Θα αναλυθεί με τον ίδιο ακριβώς τρόπο που περιγράφηκε στο προηγούμενο παράδειγμα.
  • Ως αποτέλεσμα, η εκτέλεση κώδικα θα επιστρέψει στο &Αντί του παρεμποδιστή, και μετά την ολοκλήρωσή του, στην τυπική διαμόρφωση.

Παράδειγμα 3

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

Αυτό το παράδειγμα θα εκτελέσει μόνο τον παρεμποδιστή &Αντί της Επέκτασης2. Γιατί καλύπτει την τυπική μέθοδο, δηλαδή ολόκληρη την «πίτα» που βρίσκεται από κάτω.

Παράδειγμα 4

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

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

Υποκλοπή χειριστών συμβάντων και δικών χειριστών σε μονάδες αντικειμένων, διαχειριστές κ.λπ.

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

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

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

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

Παρακολούθηση χειρισμού συμβάντων και προσαρμοσμένων χειριστών σε ενότητες φόρμας

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

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

Εξωτερικά, ο υποκλοπής συμβάντων στη μονάδα φόρμας μοιάζει με αυτό:

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

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

Εάν παρακάμψετε τον γενικό χειριστή (Αντίθετα), τότε θα είναι απλώς μια τελεία.

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

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

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

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

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

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

  • Δεν χρειάζεται να είναι παγκόσμιοι διακομιστές.
  • Δεν πρέπει να είναι προνομιούχοι.

Όταν επεκτείνετε μια κοινή μονάδα μιας τυπικής διαμόρφωσης, υπάρχουν επίσης παρόμοιοι περιορισμοί:

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

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

Οι μέθοδοι διακομιστή δεν επεκτείνονται πάντα

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

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

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

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

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

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

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

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

Τι είναι οι εξωτερικές αναφορές και η επεξεργασία

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

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

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

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

Ανοίγει μια φόρμα για να συμπληρώσετε τα απαραίτητα στοιχεία:

Και εμφανίζεται η έντυπη μορφή της σύμβασης:

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

Τι είναι οι επεκτάσεις διαμόρφωσης

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

Ο μηχανισμός προϋποθέτει τρεις τύπους χρήσης, οι οποίοι, στην πραγματικότητα, υποδεικνύονται στο πεδίο "Σκοπός" κατά τη δημιουργία μιας επέκτασης:

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

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

Προετοιμασία εξωτερικών αναφορών και επεξεργασία για δημοσίευση στο μοντέλο υπηρεσίας

Μια πρόσθετη αναφορά ή επεξεργασία δημιουργείται στον διαμορφωτή 1C: Enterprise 8 ως τυπική εξωτερική αναφορά και επεξεργασία και αποθηκεύεται σε ένα αρχείο με την επέκταση - .epf (για πρόσθετη επεξεργασία) ή .erf (για πρόσθετες αναφορές).

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

Λάβετε υπόψη ότι η σημαντική παράμετρος είναι "Έκδοση". Εάν κάνατε αλλαγές σε μια επεξεργασία που είχε μεταφορτωθεί προηγουμένως στον κατάλογο της διαχείρισης υπηρεσιών, φροντίστε να αλλάξετε τον αριθμό έκδοσης, διαφορετικά ο διαχειριστής υπηρεσιών θα αρνηθεί να φορτώσει το αρχείο. Κατά την ανάπτυξη μιας αναφοράς ή επεξεργασίας, πρέπει να λάβετε υπόψη ότι οι χρήστες εργάζονται σε ένα μοντέλο υπηρεσίας μέσω ενός προγράμματος-πελάτη ιστού (καλό άρθρο στο ιστολόγιο 1C). Εάν η επεξεργασία περιέχει φόρμες, τότε πρέπει να λειτουργούν στο πρόγραμμα-πελάτη Ιστού σε όλα τα προγράμματα περιήγησης ιστού που υποστηρίζονται από την τεχνολογική πλατφόρμα 1C: Enterprise 8.

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

Πρέπει να προετοιμαστεί μια πρόσθετη αναφορά ή επεξεργασία για μεταφόρτωση στην υπηρεσία ως κιτ παράδοσης. Το σετ παράδοσης είναι ένα αρχείο (αρχείο zip) που περιέχει:

  • πρόσθετη αναφορά ή αρχείο επεξεργασίας·
  • xml αρχείο δήλωσης, το οποίο περιέχει πρόσθετες μεταπληροφορίες που είναι απαραίτητες ώστε ο διαχειριστής υπηρεσιών να δημοσιεύσει μια πρόσθετη αναφορά ή να την επεξεργαστεί στην υπηρεσία.
Η προετοιμασία πραγματοποιείται σε μια τοπικά αναπτυγμένη βάση πληροφοριών της διαμόρφωσης για την οποία προορίζεται η πρόσθετη αναφορά ή επεξεργασία. Χρησιμοποιούμε ειδικό βοηθό για τη δημιουργία συνόλου παράδοσης, εξωτερική επεξεργασία Προετοιμασία πρόσθετων αναφορών και επεξεργασία δημοσιεύσεων στο Service Model.epf. Μπορείτε να διαβάσετε περισσότερα στην τεκμηρίωση σχετικά με την Τεχνολογία για τη δημοσίευση λύσεων 1C Fresh.

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

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

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

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

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

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

Ξεκινάμε την επεξεργασία σύμφωνα με το χρονοδιάγραμμα

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

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



Κατά την προετοιμασία του σετ παράδοσης, ορίζουμε ένα χρονοδιάγραμμα. Τώρα η επεξεργασία μας θα γίνεται κάθε ώρα.

Περισσότερα σχετικά με τις επεκτάσεις διαμόρφωσης

Παράλληλα με τις εξωτερικές αναφορές και την επεξεργασία που πρέπει να προετοιμαστούν και να διαχειριστούν «με τον παλιό τρόπο», αρχίσαμε να χρησιμοποιούμε ενεργά τον μηχανισμό επέκτασης διαμόρφωσης. Ξεκινώντας με την πλατφόρμα 1C Enterprise 8.3.10, αυτός ο μηχανισμός έκανε τη ζωή μας αρκετά εύκολη και κατέστησε δυνατή την απλοποίηση της προσαρμογής των διαμορφώσεων στα χαρακτηριστικά του Κουμπιού.

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

Είναι αρκετά εύκολο να προετοιμάσετε μια νέα επέκταση. Ας δούμε τη διαδικασία δημιουργίας επεκτάσεων χρησιμοποιώντας συγκεκριμένα παραδείγματα.
Με βάση την εργασιακή εμπειρία, ο ηγέτης στα αιτήματα για προσαρμογές είναι η έντυπη φόρμα TORG-12. Για παράδειγμα, πρέπει να κάνουμε μια επέκταση για να μπορούμε να εκτυπώσουμε ένα δελτίο αποστολής σε ξένο νόμισμα (από προεπιλογή μπορεί να δημιουργηθεί μόνο σε ρούβλια).
Ανοίξτε το Μενού → Διαμόρφωση → Επεκτάσεις διαμόρφωσης
Δημιουργούμε μια νέα επέκταση με σκοπό την «Προσαρμογή».

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

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

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

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

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

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

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

συμπέρασμα

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

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

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

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

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

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

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

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

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



 

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