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

12.02.2024

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

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

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

Για να γίνει αυτό, θα δημιουργήσουμε στη διαμόρφωση «Διαχειριζόμενη εφαρμογή» το υποσύστημα «Λογιστική αυτοκινήτου» με τα παρακάτω αντικείμενα

Κατάλογοι: Μάρκες αυτοκινήτων, Αυτοκίνητα, Γκαράζ

Έγγραφα: Άφιξη στο γκαράζ, Αναχώρηση από το γκαράζ.

Ας δημιουργήσουμε μια νέα επέκταση, την οποία θα ονομάσουμε «Λογιστική αυτοκινήτου», ο σκοπός αυτής της επέκτασης θα είναι «Πρόσθετο».

Ας προσθέσουμε τη δική μας εικόνα στη νέα επέκταση, στην οποία θα φορτώσουμε το εικονίδιο του αυτοκινήτου

Τώρα θα δημιουργήσουμε ένα νέο υποσύστημα, το οποίο θα ονομάζουμε «Λογιστική αυτοκινήτου», σε αυτό το υποσύστημα θα ελέγξουμε τη σημαία «Συμπερίληψη στη διεπαφή εντολών» και στην ιδιότητα «Εικόνα» θα υποδείξουμε το νέο μας εικονίδιο.

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

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

Με τον ίδιο τρόπο, θα δημιουργήσουμε νέα έγγραφα: Άφιξη αυτοκινήτου και Απόρριψη αυτοκινήτου.

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

Τώρα ας εκτελέσουμε τη διαμόρφωσή μας και ας δούμε το νέο υποσύστημα

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

Για να το κάνουμε αυτό, δανειζόμαστε τον κατάλογο Contractor στην επέκταση.

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

Και προσθέστε χαρακτηριστικά επέκτασης στη δανεισμένη φόρμα.

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

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

Μάθετε τα βασικά της διαμόρφωσης σε 1C και μάθετε να προγραμματίζετε σε 1C: Enterprise με τη βοήθεια των βιβλίων μου:

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

    1. Πολύ προσιτή και κατανοητή γλώσσα παρουσίασης
    2. Το βιβλίο αποστέλλεται με email σε μορφή PDF. Μπορεί να ανοίξει σε οποιαδήποτε συσκευή!
    3. Κατανοήστε την ιδεολογία μιας διαχειριζόμενης εφαρμογής 1C
    4. Μάθετε πώς να αναπτύξετε μια διαχειριζόμενη εφαρμογή.
    5. Μάθετε να αναπτύσσετε διαχειριζόμενες φόρμες 1C.
    6. Θα μπορείτε να εργαστείτε με τα βασικά και απαραίτητα στοιχεία των διαχειριζόμενων φορμών
    7. Ο προγραμματισμός κάτω από μια διαχειριζόμενη εφαρμογή θα γίνει σαφής

    Κωδικός προσφοράς για έκπτωση 15% - 48PVXHeYu


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

    Μπορείτε να πληρώσετε χειροκίνητα:

    Yandex.Money - 410012882996301
    Web Money - R955262494655

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

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

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

    Στην κύρια διαμόρφωση, ο κωδικός χειριστή κουμπιών:

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


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

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

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

    Το επιθυμητό αποτέλεσμα:

    Εάν θέλετε να υποκλέψετε ένα συμβάν ΜΕΤΑ την εκτέλεση των χειριστών, τότε υπάρχει μια μέθοδος SetExecutionAfterEventHandlers

    Ως αποτέλεσμα:

    Αν προσθέσουμε άλλη επέκταση, θα καλείται πρώτα ο χειριστής της 2ης επέκτασης, μετά η 1η και μετά η κύρια.

    Το παράθυρο διαλόγου ελέγχου μπορεί να κληθεί στη λειτουργία διαμόρφωσης μέσω του μενού Configuration-> Configuration extensions. Σε λειτουργία επιχείρησης Όλες οι λειτουργίες -> Τυπική -> Διαχείριση επεκτάσεων διαμόρφωσης.

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

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

    Σε τι είναι καλές οι επεκτάσεις;

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

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

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

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

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

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

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

    Πότε πρέπει να χρησιμοποιείτε επεκτάσεις;

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

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

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

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

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

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

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

    Τι μπορείτε να αλλάξετε τώρα χρησιμοποιώντας επεκτάσεις;

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

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

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

    Πώς λειτουργεί η επέκταση;

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

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

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

    Η πρώτη κατάσταση είναι όταν χρειάζονται δανεικά αντικείμενα.

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

    Τότε το εστιατόριο είναι μια τυπική βάση πληροφοριών. Είσαι προέκταση. Το μενού του εστιατορίου είναι μια επεκτάσιμη τυπική διαμόρφωση. Η μπριζόλα και το τσάι είναι δανεικά αντικείμενα. Τα δανείσατε (θυμηθήκατε ότι ήταν στο μενού).

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

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

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

    Μια άλλη κατάσταση όταν μπορείτε να κάνετε χωρίς δανεικά αντικείμενα.

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

    Αν το περιγράψουμε αυτό στη γλώσσα των προγραμματιστών, αποδεικνύεται ότι πρέπει να δανειστείτε αντικείμενα:

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

    Σύνδεση επέκτασης

    Δημιουργείτε μια επέκταση στο διαμορφωτή. Αφού διορθωθεί και δοκιμαστεί, μπορείτε να το απορρίψετε αποθηκεύοντας την επέκταση σε ένα αρχείο *.cfe.

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

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

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

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

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

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

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

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

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

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

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

    Λειτουργία επέκτασης

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

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

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

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

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

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

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

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

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

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

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

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

    Η επέκταση είναι σχεδόν διαμόρφωση

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

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

    Μπορείτε να ανεβάσετε την επέκταση σε ένα αρχείο (αν και με διαφορετική επέκταση *.cfe) και να φορτώσετε από το αρχείο. Οι επεκτάσεις μπορούν να φορτωθούν/φορτωθούν σε XML.

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

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

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

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

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

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


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

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

    Προκειμένου ένα αντικείμενο να είναι διαθέσιμο για τροποποίηση, πρέπει να προστεθεί στην επέκταση. Για να το κάνετε αυτό, επιλέξτε ένα αντικείμενο στο δέντρο μεταδεδομένων και κάντε δεξί κλικ και επιλέξτε "Προσθήκη στην επέκταση". Μετά από αυτό, δημιουργείται το στοιχείο "Διπλό" στο δέντρο επέκτασης. Για παράδειγμα, όταν προσθέτετε έναν κατάλογο "Ονοματολογία", εμφανίζεται ο ίδιος κατάλογος στην επέκταση. Έτσι, υπάρχουν δύο εκδοχές του ίδιου αντικειμένου. Η μία έκδοση βρίσκεται στην κύρια διαμόρφωση και η άλλη στην επέκταση. Όταν ένας χρήστης εργάζεται με αυτό το αντικείμενο στο 1C:Enterprise, το πρόγραμμα συγκρίνει ονομαστικά την έκδοση από την κύρια διαμόρφωση και την έκδοση από την επέκταση και, στη συνέχεια, εφαρμόζει αλλαγές από την επέκταση στο αντικείμενο από την κύρια διαμόρφωση. Εάν τα αντικείμενα δεν μπορούν να αντιστοιχιστούν, εμφανίζεται ένα μήνυμα σφάλματος.

    Μεταφόρτωση και φόρτωση επεκτάσεων

    Οι επεκτάσεις μπορούν να μεταφορτωθούν σε ένα αρχείο (*.cfe). Η μεταφόρτωση είναι διαθέσιμη στο πρόγραμμα διαμόρφωσης και στην επιχείρηση. Στη λειτουργία διαμόρφωσης, το παράθυρο επεξεργασίας επέκτασης ανοίγει όπως φαίνεται παραπάνω. Στη λειτουργία επιχείρησης, χρησιμοποιείται ειδική επεξεργασία για τη φόρτωση, εκφόρτωση και αφαίρεση επεκτάσεων, η οποία ανοίγει μέσω του κύριου μενού:
    Όλες οι λειτουργίες->Τυπική->Διαχείριση επεκτάσεων διαμόρφωσης.


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

    Μπορείτε να διαβάσετε περισσότερα σχετικά με τον τρόπο προσθήκης επέκτασης στη διαμόρφωση στο άρθρο