Λογιστική επιχειρήσεων 1c 8.3 πώς να δημιουργήσετε ένα rib. Κατανεμημένη βάση πληροφοριών: Βασικά. Ρύθμιση συγχρονισμού στην περιφερειακή βάση δεδομένων

25 Οκτωβρίου 2016

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

Αρχικά δεδομένα:

Διαμόρφωση: Λιανική 2.2
Πλατφόρμα 1C: 8.3.7.1970



Διάρκεια έργου: ένα έτος.




Αρχιτεκτονική:

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





Περιορισμοί:
- 2 GB RAM
- 1 φυσικός επεξεργαστής


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

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

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


βασικές ρυθμίσεις

Από την εποχή του UT 10.3, κατά την οποία είχα το πρώτο μου έργο υλοποίησης RIB για 60 κόμβους, φυσικά, «πολύ νερό έχει περάσει κάτω από τη γέφυρα».

Το 1C δεν έμεινε ακίνητο. Το Retail 2.2 λαμβάνει πλέον υπόψη την ανάγκη για επιλεκτική μεταφόρτωση δεδομένων.
Μόνο οι πληροφορίες που σχετίζονται με αυτό θα μεταφορτωθούν στη βάση δεδομένων του καταστήματος:
- Όλα τα βιβλία αναφοράς (εκτός από τα εξειδικευμένα)
- Έγγραφα για αυτό το κατάστημα

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





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

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

3) Δημιουργήστε πολλά σενάρια για αποστολή και λήψη δεδομένων. Αλλά το κύριο πράγμα εδώ είναι να πιάσουμε τη σωστή ισορροπία της ποσότητάς τους.
(από την έκδοση 8.1).
Κατά συνέπεια, ο παραλληλισμός στην εκφόρτωση RIB είναι περιορισμένος. Στην πράξη, αποδεικνύεται ότι τρέχουν 2-3 σενάρια παράλληλα.


Τι έπρεπε να βελτιωθεί

Το πιο σημαντικό πρόβλημα στην τυπική λογική του 1C RIB είναι οι ενημερώσεις





Ένα άλλο πρόβλημα ανταλλαγής είναι τα μητρώα πληροφοριών. Η μεταφόρτωση κάθε εγγραφής του μητρώου πληροφοριών σε XML δημιουργεί έναν ξεχωριστό κόμβο XML με στοιχεία υπηρεσίας κ.λπ. Επιπλέον, η συνάρτηση "SelectChanges()" για έναν καταχωρητή πληροφοριών στον οποίο υπάρχουν 100 εγγραφές θα λάβει έναν προκύπτοντα πίνακα 100 σειρών, στο την ίδια στιγμή, εάν αυτός ο κατάλογος A με 100 σειρές θα έχει μόνο μία καταχώρηση επιλεγμένη στην ενότητα πίνακα του. Και αυτή είναι η ώρα του αποκλειστικού αποκλεισμού. Έτσι, εάν υπάρχουν πολλές εγγραφές στον υπολογιστή που καταχωρούνται τακτικά για ανταλλαγή σε άλλα καταστήματα, τότε είναι φυσικά πιο σωστό να το παρουσιάσετε με τη μορφή ενός καταλόγου με ένα τμήμα πίνακα, το οποίο, σε ακραίες περιπτώσεις, κατά την εγγραφή , μπορεί να σχηματίσει σειρές του ίδιου μητρώου. ΤΕΛΟΣ παντων, .

Μια άλλη σημαντική λεπτομέρεια - Για τι? Υπάρχουν ήδη κοντά στα 3 εκατομμύρια εκπτωτικές κάρτες. Χρησιμοποιείται εξωτερικό διαδικτυακό σύστημα για τη συνεργασία με αυτές. Εάν συνεχίσετε να μεταφέρετε εκπτωτικές κάρτες σε όλα τα καταστήματα, αυτό θα αυξήσει σημαντικά τις ανταλλαγές και μπορεί επίσης να οδηγήσει σε υπέρβαση του όγκου της βάσης των 10 GB.

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


Αντιγραφή


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


2) Αυτή η βάση δεδομένων ανταλλάσσει όλα τα γενικά δεδομένα στο RIB αλλά δεν λαμβάνει εξειδικευμένα (έγγραφα)


5) Η βάση για το κατάστημα είναι έτοιμη.

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


Οφέλη ενός λεπτού πελάτη

Δύο σημαντικά πλεονεκτήματα του Retail 2.2 (Thin Client) που «ζέσταναν την ψυχή»:








Υποστήριξη και ενημερώσεις




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

3) Γράψτε ένα σενάριο *.cmd ή 1C για ενημέρωση ή πάρτε ένα έτοιμο. Όπως δείχνει η πρακτική, μια τέτοια λύση είναι πάντα μισόλογη (ασταθής) και θα είναι δυνατό να ενσωματωθεί μικρή λειτουργικότητα σε αυτήν.

Ποια ήταν τα καθήκοντά μας:


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








Κύριες λειτουργίες:




4) Έλεγχος της κατάστασης των πρακτόρων
5) Ενημερώστε τις αναφορές
6) δημιουργία αντιγράφων ασφαλείας

















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








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

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

ΥΣΤΕΡΟΓΡΑΦΟ. και το πιο σημαντικό: Ο σωστός σχεδιασμός της περαιτέρω υποστήριξης είναι ένας από τους βασικούς παράγοντες για την περαιτέρω επιτυχία τέτοιων έργων. :)

25 Οκτωβρίου 2016

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

Τα αρχικά δεδομένα λοιπόν:

Διαμόρφωση: Λιανική 2.2
Πλατφόρμα 1C: 8.3.7.1970
Εκτιμώμενος αριθμός κόμβων στο τέλος του έργου: 200
Πόροι εξοπλισμού στο κέντρο: χωρίς σημαντικούς περιορισμούς
Εξοπλισμός στο σημείο: ένα θέμα που συζητήθηκε.
Διάρκεια έργου: ένα έτος.

Αρχιτεκτονική:

Πρώτα, αποφασίσαμε για το σχήμα RIB. Αποφασίστηκε να επικεντρωθούμε στο σχέδιο «αστέρι», πριν
Στα καταστήματα λιανικής, χρησιμοποιείται μια έκδοση εργασίας πελάτη-διακομιστή, με έναν αποκλειστικό διακομιστή με λειτουργικό σύστημα Windows.
Ο διακομιστής 1C θα χρησιμοποιηθεί στην έκδοση "Server 1C MINI" https://1c.ru/news/info.jsp?id=17577
Διακομιστής DBMS - MS SQL Express 2008 R2.

Το SQL Express 2008 R2 είναι η τρέχουσα πιο πρόσφατη έκδοση αυτής της γραμμής του SQL Server.
Περιορισμοί:

2 GB RAM
- 1 φυσικός επεξεργαστής
- Μέγιστο μέγεθος βάσης δεδομένων 10 GB

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

Ένας ξεχωριστός διακομιστής εκχωρείται για διακομιστή 1C και MS SQL. Θα φέρει το κύριο βάρος των ανταλλαγών και των συναλλαγών.
Οι υπολογιστές τελικού πελάτη δεν αντικαθίστανται, γιατί θα λειτουργούν με thin client και το φορτίο στο κάτω μέρος θα είναι ελάχιστο.
Ο διακομιστής στο κατάστημα είναι απλά ένας ισχυρός υπολογιστής. Προϋπόθεση όμως είναι η παρουσία ενός δίσκου SSD - στον οποίο βρίσκονται οι βάσεις δεδομένων MS SQL.
Ο διακομιστής θα παρέχει επίσης τη δυνατότητα πραγματοποίησης εργασιών ρουτίνας τη νύχτα και πρόσβαση στη βάση δεδομένων του καταστήματος χωρίς διακοπή από την εργασία.

βασικές ρυθμίσεις

Από την εποχή του UT 10.3, κατά την οποία είχα το πρώτο μου έργο υλοποίησης RIB για 60 κόμβους, φυσικά, «πολύ νερό έχει πετάξει κάτω από τη γέφυρα». Το 1C δεν έμεινε ακίνητο. Το Retail 2.2 λαμβάνει πλέον υπόψη την ανάγκη για επιλεκτική μεταφόρτωση δεδομένων.
Μόνο οι πληροφορίες που σχετίζονται με το κατάστημα θα μεταφορτωθούν στη βάση δεδομένων του καταστήματος:
- Όλοι οι κατάλογοι (εκτός από ορισμένους)
- Έγγραφα για αυτό το κατάστημα
Η εγγραφή δεδομένων πραγματοποιείται σύμφωνα με τους κανόνες εγγραφής, όλα όσα μπορούν να αποθηκευτούν στην κρυφή μνήμη. Δεν υπάρχουν σημαντικές επιβραδύνσεις κατά την εγγραφή.
Μια άλλη ερώτηση είναι ότι με τον ένα ή τον άλλο τρόπο, η προσθήκη ενός κόμβου στη βάση δεδομένων σημαίνει την προσθήκη άλλης εγγραφής για κάθε κοινό στοιχείο για όλες τις βάσεις δεδομένων.

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

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

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

3) Δημιουργήστε μερικά σενάρια αποστολής και λήψης για αποστολή και λήψη δεδομένων. Αλλά το κύριο πράγμα εδώ είναι η ισορροπία.
Κάποια πράγματα στο 1C δεν αλλάζουν. Η ίδια μέθοδος "SelectChanges" μπορεί να εκτελεστεί μόνο διαδοχικά(από την έκδοση 8.1).
Κατά συνέπεια, ο παραλληλισμός στην εκφόρτωση RIB είναι περιορισμένος. Στην πράξη, καταλήγεις να ανεβάζεις 2-3 σενάρια κάθε φορά.
Όσον αφορά το σενάριο λήψης, εδώ είναι δυνατός πολύ μεγαλύτερος παραλληλισμός, αν χρειαστεί, φυσικά.

Τι έπρεπε να βελτιωθεί

Φυσικά είναι λυπηρό και λυπηρό, αλλά έπρεπε να επέμβω πλήρως στο BSP. Το πιο σημαντικό πρόβλημα στην τυπική λογική 1C είναι οι ενημερώσεις. Μετά την ενημέρωση, εμφανίζεται ένα παράθυρο παρόμοιο με αυτό:

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

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

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

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

Αντιγραφή

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

1) Υπάρχει ξεχωριστή βάση δεδομένων με ψεύτικο κατάστημα
2) Αυτή η βάση δεδομένων ανταλλάσσει όλα τα γενικά δεδομένα στο RIB αλλά δεν λαμβάνει εξειδικευμένα
3) Όταν θέλουμε να δημιουργήσουμε μια νέα βάση δεδομένων, απλώς αντιγράφουμε αυτήν
4) Στη συνέχεια ορίζουμε τις ρυθμίσεις - αποθήκευση, πρόθεμα κ.λπ.
5) Η βάση για το κατάστημα είναι έτοιμη.

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

Οφέλη ενός λεπτού πελάτη

δύο σημαντικά πλεονεκτήματα που «ζέσταναν την ψυχή».

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

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

Υποστήριξη και ενημερώσεις

Τελικά φτάσαμε στο πιο ενδιαφέρον σημείο - πώς να διατηρήσουμε και να ενημερώσουμε όλα αυτά;
Για εμάς, οι ενημερώσεις αποτελούν επίσης δίλημμα εδώ και πολύ καιρό:

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

Ποια ήταν τα καθήκοντά μας:

1) Η ενημέρωση πρέπει να πραγματοποιείται σε πολλές λειτουργίες και να ελέγχεται κεντρικά
2) Κατά την ενημέρωση, είναι δυνατή η διαδραστική αλληλεπίδραση με τον χρήστη.
3) Πρέπει να λαμβάνονται αναφορές σχετικά με την κατάσταση ενημέρωσης και τα σφάλματα
4) Πρέπει να υπάρχει αντίγραφο ασφαλείας
5) Το σύστημα ενημέρωσης θα πρέπει να μπορεί να ενημερώνεται μόνο του χωρίς προβλήματα.
6) Το σύστημα πρέπει να είναι επεκτάσιμο χωρίς προβλήματα.

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

Κύριες λειτουργίες:

1) Δυναμική ενημέρωση βάσης δεδομένων (εντολή ή προγραμματισμένη)
2) Στατική ενημέρωση βάσης δεδομένων (εντολή ή προγραμματισμένη)
3) αυτόματοι πράκτορες σε τελικούς υπολογιστές όταν τροποποιούνται
4) Έλεγχος της κατάστασης των πρακτόρων
5) Ενημερώστε τις αναφορές
6) δημιουργία αντιγράφων ασφαλείας
7) Διοικητικές ενέργειες με διακομιστή 1C και MS SQL
8) Κλείσιμο όλων των εφαρμογών πελάτη 1C σε υπολογιστές δικτύου
9) Στατική ενημέρωση με αποδοχή στο κεντρικό ταμείο
10) Εμφάνιση περιγραφών τροποποιήσεων μετά την ενημέρωση
11) Ρύθμιση της σειράς ενεργειών
12) Εκτελέστε όλες αυτές τις ενέργειες σε ένα πρόγραμμα

Κατά προσέγγιση σχήματα αλληλεπίδρασης:


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

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

Και έτσι στέλνουμε εντολές σε υπολογιστές-πελάτες

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

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


Λέξεις-κλειδιά: κατανεμημένο, URDB, XML, εγγραφή, κόμβος, κόμβος, αυτόματη εγγραφή, αρχική, εικόνα, POP3, SMTP, MailMessage, περιφερειακό, κεντρικό, αναπαραγωγή, ανταλλαγή

Αποποίηση ευθύνης και όροι χρήσης

Όλα τα εμπορικά σήματα που αναφέρονται κατά λάθος σε αυτό το άρθρο ανήκουν στους αντίστοιχους κατόχους τους.
Αυτό το άρθρο δημοσιεύεται με άδεια Creative Commons Attribution-Share Alike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/

Επιτρέψτε μου να σημειώσω αμέσως ότι όλα τα παρακάτω ισχύουν για την κυκλοφορία της πλατφόρμας 8.0.7.36 και άνω.

Βήμα 1: Δημιουργήστε ένα σχέδιο ανταλλαγής

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

Στην καρτέλα "Άλλα", κάντε κλικ στο κουμπί "Σύνθεση" για να προσδιορίσετε ποια αντικείμενα θα συμπεριληφθούν στην ανταλλαγή. Με
Από προεπιλογή, μπορείτε να ενεργοποιήσετε όλα τα αντικείμενα ("Ενέργειες" - "Ενεργοποίηση όλων"). Ένα σημαντικό σημείο είναι η παράμετρος
«Αυτόματη εγγραφή». Γενικά, θα πρέπει να είναι ενεργοποιημένο για όλα τα αντικείμενα.

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

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

Κατ 'αρχήν, αυτές οι ενέργειες είναι αρκετές για να λειτουργεί το RDB σε "χειροκίνητη" λειτουργία. Για να γίνει αυτό ξεκινάμε
Επιχείρηση, ανοίξτε το σχέδιο ανταλλαγής μέσω του μενού "Λειτουργίες". Όσον αφορά την ανταλλαγή, είναι πάντα παρούσα
προκαθορισμένος κόμβος "με μια τελεία". Αυτή είναι μια περιγραφή του τρέχοντος κόμβου. Πρέπει να ανοίξει και να γεμίσει. Στο δικό μας
Σε αυτήν την περίπτωση, τα πεδία «Κωδικός» και «Όνομα» θα είναι διαθέσιμα. Ας αντιστοιχίσουμε τον κωδικό "AA" στον κόμβο μας και ας τον καλέσουμε
"Κεντρικός". Ας προσθέσουμε έναν κόμβο στο σχέδιο ανταλλαγής. Ας του δώσουμε τον κωδικό "BB" και ας το ονομάσουμε "Peripheral".

Τώρα μπορούμε να δημιουργήσουμε μια εικόνα της περιφερειακής βάσης. Αυτό γίνεται κάνοντας κλικ στο κουμπί "Δημιουργία αρχικού".
εικόνα". Η περιφερειακή βάση πρέπει να επιλεγεί στη λίστα των κόμβων. Η εικόνα της βάσης δεδομένων δημιουργείται με τη μορφή έτοιμης ασφάλειας πληροφοριών
στον κατάλογο ή στον διακομιστή 1C:Enterprise. (σε αντίθεση με το 7.7, όπου η εικόνα ασφάλειας πληροφοριών δημιουργήθηκε ως αρχείο
εκφόρτωση). Στη συνέχεια, η δημιουργημένη βάση δεδομένων μπορεί να μετακινηθεί στην επιθυμητή θέση αντιγράφοντας απλώς το αρχείο 1CV8.1CD
(για την έκδοση του αρχείου), ή μέσω του Configurator μέσω μεταφόρτωσης και λήψης δεδομένων.

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

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

Βήμα 2: Ανεβάστε αλλαγές σε ένα αρχείο XML και στείλτε τις μέσω email

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

Προσθέτουμε δύο λεπτομέρειες στο σχέδιο ανταλλαγής: Διεύθυνση email τύπου "string" και τύπου "Execute Exchange"
"boolean". Στη διεύθυνση E-mail θα αποθηκεύσουμε τη διεύθυνση email του κόμβου, δηλ. τη διεύθυνση στην οποία θα βρισκόμαστε
αποστολή μηνυμάτων ανταλλαγής. Το Props ExecuteExchange είναι απαραίτητο για γρήγορη απενεργοποίηση της αυτόματης λειτουργίας
αποστολή-αποστολή μηνυμάτων.

Ας κάνουμε τη διαδικασία για την εργασία με το email καθολική, π.χ. ας το κάνουμε δυνατό
χρήση τόσο του MAPI (αποστολή-λήψη μέσω προγράμματος-πελάτη email, για παράδειγμα, MS Outlook) όσο και
άμεση πρόσβαση σε διακομιστές SMTP/POP3.

Ας προσθέσουμε αρκετές σταθερές στη διαμόρφωση:

Κάπου σε μια γενική μορφή παρέχουμε επεξεργασία των τιμών αυτών των σταθερών.

Ας προσθέσουμε μια κοινή ενότητα, την ονομάζουμε "rbDistributedBase". Γράφουμε σε αυτό:

Διαδικασία rbSendExchangeMessages() Εξαγωγή UseSMTP = Constants.UseSMTPExchange.Receive(); //Πρώτα δημιουργούμε ένα αντικείμενο Mail, το οποίο, ανάλογα με τις ρυθμίσεις, θα είναι τύπου InternetMail, //αν χρησιμοποιείται άμεση πρόσβαση σε διακομιστές ή Mail εάν χρησιμοποιείται MAPI.Αν Χρησιμοποιήστε SMTP Τότε //Για ένα αντικείμενο του τύπου InternetMail, δημιουργήστε και συμπληρώστε ένα προφίλ αλληλογραφίας. MailProfile = Νέο InternetMailProfile; MailProfile.SMTPServerAddress = Constants.SMTPExchangeServerAddress.Get(); MailProfile.SMTPPort = Constants.SMTPExchangeServerPort.Receive(); MailProfile.SMTPUser = Constants.SMTPExchangeServerUser.Receive(); MailProfile.SMTP Κωδικός πρόσβασης = Constants.SMTPExchangeUserPassword.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Mail = New InternetMail(); Προσπάθεια Mail.Connect(MailProfile); Αναφορά εξαίρεσης(" EXCHANGE: Σφάλμα σύνδεσης στο προφίλ αλληλογραφίας! Η ανταλλαγή απέτυχε!" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndAttempt; Διαφορετικά Mail = New Mail(); Attempt Mail.Connect(); Exception Report ("" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndAttempt; Endf ; //Στη συνέχεια, επιλέξτε όλους τους κόμβους από το σχέδιο ανταλλαγής, εκτός από τον τρέχοντα, //τα οποία έχουν το σύνολο χαρακτηριστικών Perform Exchange. SelectionNodes = ExchangePlans.DistributedBase.Select(); Ενώ το SelectNodes.Next() κάνει βρόχο, εάν όχι SelectNodes.PerformExchange, Στη συνέχεια, συνεχίστε. τέλος εαν; Αν SelectionNodes.Link = ExchangePlans.DistributedBase.ThisNode() Τότε Συνέχεια. τέλος εαν; ElectronicAddress = AbbrLP(SelectionNodes.ElectronicAddress); If EmailAddress = "" Τότε Συνέχεια; τέλος εαν; //Χρησιμοποιώντας τα αντικείμενα XMLRecord και MessageRecord, καταγράφουμε τις αλλαγές //για τον επιλεγμένο κόμβο στο αρχείο xml.Κόμβος = SelectionNodes.Link; XMLRecord = NewXMLRecord(); MessageFileName = TemporaryFileDirectory() + "Message_" + AbbreviatedLP(ExchangePlans.DistributedBase.ThisNode().Code) + "_ " + AbbreviatedLP(Node.Code) + ".xml "; EntryXML.OpenFile(MessageFileName); MessageRecord = ExchangePlans.CreateMessageRecord(); MessageRecord.StartRecord(XMLRecord, Node); ExchangePlans.WriteChanges(WriteMessage); WriteMessage.FinishRecord(); WriteXML.Close(); //Στη συνέχεια δημιουργούμε ένα νέο γράμμα, επισυνάπτουμε το αρχείο xml που προκύπτει σε αυτό και //αποστολή στη διεύθυνση που καθορίζεται στη διεύθυνση email του κόμβου.Αρχείο = Νέο αρχείο (MessageFileName); Θέμα μηνύματος = "1C:Exchange" + Abbr.LP(ExchangePlans.DistributedBase.ThisNode().Code) + "_" + Abbr.LP(Node.Code); Αν UseSMTP Τότε MailMessage = Νέο InternetMailMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add(MessageFileName, File.Name); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage); Else MailMessage = νέο MailMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add(MessageFileName); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage, False); τέλος εαν; If Constants.OutputExchangeMessages.Get() Τότε Report(" EXCHANGE: Ανταλλαγή μηνύματος για τον κόμβοΤο " + Node.Name + " στάλθηκε! ", MessageStatus.Information); EndIf; DeleteFiles(MessageFileName); EndCycle; Mail.Disconnect(); EndProcedure

Συνιστώ να προσθέσετε ένα πρόσθετο πλαίσιο στη διεπαφή, σε ένα από τα κουμπιά του οποίου μπορείτε να πραγματοποιήσετε μια κλήση σε αυτό
διαδικασίες. Τώρα το μόνο που απομένει είναι να εκκινήσετε το Enterprise, να διαμορφώσετε τη διεύθυνση email της περιφερειακής ασφάλειας πληροφοριών,
επιλέξτε το πλαίσιο "Ανταλλαγή", κάντε κλικ στο κουμπί διαδικασίας στον πίνακα και τρέξτε για να λάβετε αλληλογραφία
καθορισμένο email διευθύνσεις. Θα πρέπει να λάβετε μια επιστολή με θέμα "1C:Exchange AA_BB" και ένα συνημμένο αρχείο
"Message_AA_BB.xml".

Έτσι, η μισή δουλειά έχει γίνει: μάθαμε στο G8 να στέλνει μηνύματα ανταλλαγής RDB μέσω email
ταχυδρομείο.

Βήμα 3. Λάβετε ενημερώσεις μέσω email και καταγράψτε τις στην ασφάλεια πληροφοριών

Τώρα ας κάνουμε την αντίστροφη διαδικασία: λήψη ενημερώσεων μέσω email και καταγραφή τους στην ασφάλεια πληροφοριών.

Στις παραμέτρους της περιόδου λειτουργίας, προσθέστε την παράμετρο "Distributed Database Exchange in Progress" τύπου Boolean. Θα το εξηγήσω παρακάτω
ραντεβού.

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

Διαδικασία rbGetExchangeMessages() Εξαγωγή UseSMTP = Constants.UseSMTPExchange.Receive(); //ακριβώς όπως στη διαδικασία rbSendExchangeMessages(), δημιουργήστε πρώτα ένα αντικείμενο Mail If Use SMTP then MailProfile = Νέο InternetMailProfile; MailProfile.POP3ServerAddress = Constants.POP3ExchangeServerAddress.Get(); MailProfile.POP3Port = Constants.POP3ExchangeServerPort.Get(); MailProfile.User = Constants.POP3ExchangeServerUser.Get(); MailProfile.Password = Constants.UserPasswordPOP3Exchange.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Mail = New InternetMail(); Προσπάθεια Mail.Connect(MailProfile); Αναφορά εξαίρεσης(" EXCHANGE: Σφάλμα σύνδεσης στο προφίλ αλληλογραφίας! |Η ανταλλαγή απέτυχε!", MessageStatus.VeryImportant); Return; EndAttempt; Διαφορετικά Mail = New Mail(); Attempt Mail.Connect(); Αναφορά εξαίρεσης(" EXCHANGE: Σφάλμα σύνδεσης στο προφίλ email του χρήστη! |Η ανταλλαγή απέτυχε!", MessageStatus.VeryImportant); Return; EndAttempt; EndIf; MessageArray = Νέος πίνακας; If UseSMTP Τότε AllMessages = Mail.Select(False); Else AllMessages = Mail.Select(False, False); EndIf; //Επιλέξτε ανάμεσα σε όλα τα γράμματα εκείνα που έχουν το θέμα "1C:Exchange". //Μικρή αλλά σημαντική σημείωση: //πιστεύουμε ότι προορίζονται όλες οι επιστολές που ελήφθησαν με θέμα "1C:Exchange". //ακριβώς για τον τρέχοντα κόμβο, //εκείνοι. ότι διαφορετικοί κόμβοι όσον αφορά την ανταλλαγή έχουν ΔΙΑΦΟΡΕΤΙΚΕΣ διευθύνσεις email.Για κάθε μήνυμα από όλα τα μηνύματα Κύκλος Αν Λέων (Μήνυμα. Θέμα, 8 )<>"1C:Exchange" Στη συνέχεια, Συνέχεια. τέλος εαν; TryMessageArray.Add(Message); //Αποθηκεύστε το συνημμένο email στο δίσκο. //Θα αφήσουμε προς το παρόν τον προσεκτικό έλεγχο του συνημμένου στα παρασκήνια.Συνημμένο = Μήνυμα. Συνημμένα; MessageFileName = TemporaryFileDirectory() + Attachment.Name; ExchangeData = Attachment.Data; ExchangeData.Write(MessageFileName); //Χρησιμοποιώντας τα αντικείμενα XMLReader και MessageReader διαβάζουμε τα δεδομένα //ενημερώσεις από το αποθηκευμένο αρχείο. Πριν από την εγγραφή ενημερώσεων στην ασφάλεια πληροφοριών //ορίστε την παράμετρο περιόδου λειτουργίας Διανεμημένη ανταλλαγή βάσεων δεδομένων σε εξέλιξη σε True. //Στη συνέχεια διαβάζουμε τις αλλαγές στην ασφάλεια πληροφοριών: Exchange Plans.ReadChanges(ReadMessage). //Ταυτόχρονα, αποθηκεύουμε τα μηνύματα σε έναν πίνακα, ώστε αργότερα να μπορούμε να τα διαγράψουμε όλα ταυτόχρονα. ReadXML = νέο ReadXML(); ReadXML.OpenFile(MessageFileName); MessageReader = ExchangePlans.CreateMessageReader(); ReadMessage.StartReading(ReadingXML); SessionParameters.DistributedBaseExchange σε εξέλιξη = True; ExchangePlans.ReadChanges(ReadMessage); ReadMessage.FinishReading(); ReadXML.Close(); If Constants.OutputExchangeMessages.Get() Τότε Report(" EXCHANGE: Δεκτά δεδομένα ανταλλαγής",MessageStatus.Information); EndIf; Αναφορά εξαίρεσης(" EXCHANGE: Σφάλμα κατά τη λήψη δεδομένων ανταλλαγής:" + ErrorDescription(), MessageStatus.VeryImportant); EndAttempt; //Μετά την ολοκλήρωση της ανάγνωσης των δεδομένων ανταλλαγής, επιστρέψτε //η παράμετρος περιόδου λειτουργίας DistributedBase Exchange είναι σε εξέλιξη ορίζεται σε False. SessionParameters.DistributedBaseExchange σε εξέλιξη = False; Προσπάθεια διαγραφής αρχείων (MessageFileName); Εξαίρεση //αν δεν τα καταφέρει, οκ EndAttempt; EndCycle; Εάν χρησιμοποιείτε SMTP Τότε Mail.DeleteMessages(MessageArray); τέλος εαν; Mail.Disconnect(); Τέλος Διαδικασίας

Τώρα για το τι χρειάζεται η παράμετρος συνεδρίας ανταλλαγής κατανεμημένων βάσεων δεδομένων σε εξέλιξη.
Το γεγονός είναι ότι κατά την ανάγνωση δεδομένων χρησιμοποιώντας τη μέθοδο ExchangePlans.ReadChanges(), πραγματοποιείται κλήση
διαδικασίες χειριστή για το συμβάν BeforeWrite() τροποποιημένων/προστιθέμενων αντικειμένων. Και αν κατά την εγγραφή
Για οποιοδήποτε αντικείμενο στη διαδικασία χειριστή, η παράμετρος Απόρριψη θα οριστεί σε True, τότε
κατά την εκτέλεση της ExchangePlans.ReadChanges() θα προκύψει μια εξαίρεση και, κατά συνέπεια, η ανταλλαγή
δεν θα εκτελεστεί. Η τιμή της παραμέτρου περιόδου λειτουργίας DistributedBase Exchange In Progress μπορεί να είναι
αναλύονται σε διαδικασίες χειριστή προκειμένου να αποφευχθεί μια τέτοια κατάσταση.
Με την κυκλοφορία της έκδοσης 12 (αν και μπορεί να κάνω λάθος για τις εκδόσεις), η συνάφεια αυτής της μεθόδου είναι κάπως
deprecatedA, αφού τα αντικείμενα έχουν πλέον την ιδιότητα Επιλογές ανταλλαγής, από τον οποίο, στο δικό του. Αυτή η ιδιότητα έχει οριστεί σε True when
αποθήκευση δεδομένων μέσω σχεδίου κοινής χρήσης.

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

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

Ας προσθέσουμε ένα σταθερό, DistributedBase Autoexchange Interval, τύπου Number(5,0).

Ας προσθέσουμε την παράμετρο Perform Distributed Database Exchange στις ρυθμίσεις χρήστη. Για διαμόρφωση
Η "διαχείριση εμπορίου" γίνεται ως εξής:

* Στο σχέδιο τύπων χαρακτηριστικών «Ρυθμίσεις χρήστη» θα προσθέσουμε ένα προκαθορισμένο
χαρακτηριστικό Εκτέλεση Ανταλλαγής Κατανεμημένων Βάσεων Δεδομένων τύπου Boolean.
* Με τη μορφή του στοιχείου καταλόγου "Χρήστες" ορίσαμε μια αλλαγή σε αυτήν την παράμετρο (όπως αυτή
μπορεί να γίνει στη μονάδα φόρμας, κατ' αναλογία με άλλες παραμέτρους).

Προσθέστε τη διαδικασία στη λειτουργική μονάδα rbDistributedBase:

Διαδικασία rbPerformExchange(user) Export If npGetDefaultValue(user, "") Στη συνέχεια rbGetExchangeMessages(); rbSendExchangeMessages(); τέλος εαν; Τέλος Διαδικασίας

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

Διαδικασία CheckConnectionAutoExchange() Εξαγωγή If npGetDefaultValue(chCurrentUser, " Εκτελέστε την ανταλλαγή κατανεμημένων βάσεων δεδομένων") Και Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Στη συνέχεια ConnectWaitHandler(" Εκτελέστε Autoexchange", Constants.DistributedBaseAutoExchangeInterval.Get()); Διαφορετικά, DisableWaitHandler(" Εκτελέστε Autoexchange"); EndIf; EndProcedure Procedure ExecuteAutoExchange() Εξαγωγή rbExchange(glCurrentUser); DisableWaitHandler(" Εκτελέστε Autoexchange"); Εάν npGetDefaultValue(chCurrentUser, " Εκτελέστε την ανταλλαγή κατανεμημένων βάσεων δεδομένων") Και Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Στη συνέχεια ConnectWaitHandler(" Εκτελέστε Autoexchange", Constants.DistributedBaseAutoExchangeInterval.Get()); EndIf; EndProcedure Procedure DisableAutoExchange() Εξαγωγή DisableWaitHandler(" Εκτελέστε Autoexchange"); Τέλος Διαδικασίας

Προσθέστε τις ακόλουθες γραμμές στη διαδικασία WhenSystemStart() της ενότητας εφαρμογής:

(μετά τη σύνδεση του εμπορικού εξοπλισμού)
...
SessionParameters.DistributedBaseExchange σε εξέλιξη = False; CheckAutoExchangeConnection();

Ας προσθέσουμε μερικά ακόμη κουμπιά στον πίνακα ελέγχου μας για να ελέγξουμε τη διαδικασία: προσθέστε μια διαδικασία σε ένα
CheckConnectAutoExchange(), από την άλλη - DisableAutoExchange()

Ξεκινάμε την επιχείρηση, διαμορφώνουμε τις ιδιότητες χρήστη και το διάστημα αυτόματης ανταλλαγής και αυτό είναι!

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

Μια ακόμη μικρή αλλά σημαντική σημείωση:

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

1cv8.exe CONFIG /F<путь к ИБ>/Ν<Пользователь>/Π<Пароль>/UpdateIBCfg

Και μια ακόμη σημείωση:

Δυστυχώς, τα αρχεία xml δεν είναι συμπαγή, αλλά, ευτυχώς, είναι τέλεια συμπιεσμένα. Δυνατότητα σε
διαδικασίες αποστολής και λήψης μηνυμάτων, προσθήκης συσκευασίας και αποσυσκευασίας αρχείων. COLOR="#666666">Αυτό μπορεί να γίνει είτε με εξωτερικό αρχειοθέτημα είτε χρησιμοποιώντας VK, για παράδειγμα Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
Με την κυκλοφορία της 10ης (φαίνεται) έκδοσης, η προηγούμενη πρόταση είναι κάπως ξεπερασμένη, αφού η πλατφόρμα
Υπήρχαν ενσωματωμένα εργαλεία συμπίεσης αρχείων χρησιμοποιώντας τον αλγόριθμο ZIP. Εκείνοι. είναι πλέον δυνατή η συμπίεση αρχείων
χωρίς τη χρήση VK.

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

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

Μπορεί να δημιουργηθεί μια κατανεμημένη βάση πληροφοριών με βάση διάφορες διαμορφώσεις του συστήματος 1C:Enterprise. Ας εξετάσουμε τη δημιουργία του χρησιμοποιώντας το παράδειγμα 1C: Trade Management 10.3.

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


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

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

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

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

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

Πρώτα απ 'όλα, ας αναρωτηθούμε: γιατί αυτόματη ανταλλαγή; Οι σύγχρονες τεχνολογίες, σε συνδυασμό με το φθηνό και γρήγορο Διαδίκτυο, καθιστούν δυνατή την οργάνωση της απομακρυσμένης εργασίας χωρίς δυσκολίες. Η επιλογή των μεθόδων είναι τόσο ευρεία όσο ποτέ: RDP, thin και web clients, σύνδεση δικτύων με χρήση VPN - υπάρχουν πολλά να σκεφτούμε. Ωστόσο, όλες αυτές οι μέθοδοι έχουν ένα σημαντικό μειονέκτημα - μια ισχυρή εξάρτηση από την ποιότητα του καναλιού επικοινωνίας.

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

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

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

Σε αυτό το σημείο θα ήταν καιρός να περάσουμε στο πρακτικό κομμάτι, αλλά θα πρέπει να κάνουμε μια ακόμη παρέκβαση. Το γεγονός είναι ότι η μετάβαση στην πλατφόρμα 8.2, η οποία φαίνεται να έχει ήδη συμβεί, στην πραγματικότητα οδήγησε στην εμφάνιση δύο τύπων διαμορφώσεων: με βάση μια διαχειριζόμενη εφαρμογή, "native" για την πλατφόρμα 8.2 και προσαρμοσμένη από την 8.1, συνεχίζοντας να χρησιμοποιήσει απαρχαιωμένες τεχνολογίες και μηχανισμούς. Δεδομένου ότι ένα σημαντικό μέρος των διαμορφώσεων (Enterprise Accounting, Payroll και HR Management) είναι προσαρμοσμένες ή μεταβατικές, δεν μπορούν να προεξοφληθούν, επομένως το πρώτο μέρος του άρθρου μας θα αφιερωθεί σε αυτές τις διαμορφώσεις (ουσιαστικά την πλατφόρμα 8.1), ενώ στο δεύτερο θα εξετάσουμε τη ρύθμιση της αυτόματης ανταλλαγής για διαμορφώσεις που βασίζονται σε μια διαχειριζόμενη εφαρμογή (πλατφόρμα 8.2).

Ας εξετάσουμε μια πρακτική εργασία: ρύθμιση της αυτόματης ανταλλαγής μέσω FTP για τη διαμόρφωση Enterprise Accounting 2.0. Παρά το γεγονός ότι το RIB σάς επιτρέπει να ανταλλάσσετε χρησιμοποιώντας email ή κοινόχρηστα αρχεία, συνιστούμε τη χρήση του FTP ως την απλούστερη και πιο αξιόπιστη μέθοδο επικοινωνίας. Μπορείτε να διαβάσετε πώς να ρυθμίσετε τον δικό σας διακομιστή FTP ή μπορείτε να χρησιμοποιήσετε την υπηρεσία FTP οποιουδήποτε παρόχου φιλοξενίας.

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

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

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

Τώρα ας προχωρήσουμε Service - Distributed Information Base (DIB) - Διαμόρφωση κόμβων RIB.

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

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

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

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

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

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


1. Εξετάστε την επιλογή με το πρόγραμμα ανταλλαγής "Πλήρης".

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

Ας επιλέξουμε το πρόγραμμα ανταλλαγής "Πλήρης". Θα ανοίξει το παράθυρο «Πλήρες σχέδιο ανταλλαγής».

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

Ας ονομάσουμε την πρώτη καταχώρηση "Κύριος κόμβος", υποδείξτε τον κωδικό "GU",

Ας ονομάσουμε τη δεύτερη καταχώρηση "Δευτερεύων κόμβος", υποδείξτε τον κωδικό "PU".

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


Για να δημιουργήσετε ένα αντίγραφο της βάσης πληροφοριών «Κύριος κόμβος», κάντε κλικ στο «Slave node» και κάντε κλικ στο εικονίδιο «Δημιουργία αρχικής εικόνας». Αυτή θα είναι η βάση πληροφοριών «Υποτελείς Κόμβος».


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


Στο πεδίο «Κατάλογος Infobase», επιλέξτε τη θέση όπου θα εγκατασταθεί το αντίγραφο του «Κύριου Κόμβου» και κάντε κλικ στο «Τέλος».


Μετά τη δημιουργία της βάσης πληροφοριών «Υποτελείς κόμβος», θα εμφανιστεί το ακόλουθο μήνυμα:


Κάντε κλικ στο "Ok".

Προσθέστε τη βάση πληροφοριών "Subordinate Node" στο "1C: Enterprise". Πηγαίνουμε στη δευτερεύουσα βάση δεδομένων στη λειτουργία "1C: Enterprise". Ας ανοίξουμε: Λειτουργίες - Σχέδια Ανταλλαγής. Θα ανοίξει το παράθυρο "Επιλογή αντικειμένου: Πρόγραμμα ανταλλαγής". Ας επιλέξουμε το πρόγραμμα ανταλλαγής "Πλήρης". Θα ανοίξει το παράθυρο «Πλήρες σχέδιο ανταλλαγής». Βλέπουμε ότι το εικονίδιο «Κύριος Κόμβος» είναι πορτοκαλί, που σημαίνει ότι αυτός ο κόμβος είναι ο κύριος κόμβος για τη βάση πληροφοριών στην οποία βρισκόμαστε.


Κάνουμε τις ακόλουθες ρυθμίσεις και στους κόμβους Master και Slave:

1. Προσθέστε ένα πρόθεμα για την κατανεμημένη βάση πληροφοριών.

Αυτό γίνεται για να μην υπάρχουν διενέξεις στους αριθμούς και τους κωδικούς των εγγράφων και των καταλόγων που δημιουργούνται σε δύο βάσεις δεδομένων, επομένως σε κάθε βάση δεδομένων υποδεικνύουμε ένα πρόθεμα που θα προστεθεί στους αριθμούς εγγράφων και στους κωδικούς καταλόγου. Άνοιγμα: Εργαλεία - Ρυθμίσεις προγράμματος - καρτέλα «Ανταλλαγή δεδομένων». Στο πεδίο "Πρόθεμα κόμβου για μια κατανεμημένη βάση πληροφοριών:", πληκτρολογήστε "PU" στη δευτερεύουσα βάση δεδομένων και "GU" στην κύρια βάση δεδομένων.


2. Προσθέστε μια ρύθμιση για ανταλλαγή δεδομένων μεταξύ κόμβων:

Open: Service - Distributed Information Base (DIB) - Διαμόρφωση κόμβων RIB. Θα ανοίξει το παράθυρο «Ρυθμίσεις ανταλλαγής δεδομένων».


Κάντε κλικ στο «Προσθήκη» και θα ανοίξει το παράθυρο «Ρυθμίσεις ανταλλαγής δεδομένων». Εισαγάγετε το "Όνομα" της ρύθμισής σας.


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

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

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

Δεν αλλάζουμε τίποτα στα υπόλοιπα πεδία.

Κάντε κλικ στο "Ok". Βλέπουμε ότι έχει εμφανιστεί μια ρύθμιση.

3. Για την ανταλλαγή δεδομένων κάνουμε τα εξής:

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


Μετά τη μεταφόρτωση, θα εμφανιστεί το παράθυρο αποτελεσμάτων μεταφόρτωσης.


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

2. Εξετάστε την επιλογή με το σχέδιο ανταλλαγής «Ανά οργάνωση».

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

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


Ας επιλέξουμε το σχέδιο ανταλλαγής «Κατά οργανισμό». Θα ανοίξει το παράθυρο «Σχέδιο ανταλλαγής ανά οργανισμό».

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

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

Ας ονομάσουμε τη δεύτερη καταχώριση "Δευτερεύων κόμβος", υποδεικνύουμε τον κωδικό "PU", υποδεικνύουμε τον οργανισμό.


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