Το αντικείμενο διαμόρφωσης "ρόλος" δίνει ένα σύνολο δικαιωμάτων σε λειτουργίες (ενέργειες) πάνω σε αντικείμενα διαμόρφωσης.
Ρόλος «Πλήρης Δικαιώματα».
Αυτός είναι απλώς ένας ρόλος (όχι προκαθορισμένος) στον οποίο ελέγχονται όλοι οι τύποι δικαιωμάτων για όλα τα αντικείμενα διαμόρφωσης.
Αυτό που το διακρίνει από άλλους ρόλους είναι η παρουσία του δικαιώματος της «Διοίκησης».
Εάν δημιουργηθεί τουλάχιστον ένας χρήστης, το σύστημα αρχίζει να ελέγχει την παρουσία του δικαιώματος «Διαχείριση» - τουλάχιστον ένας χρήστης πρέπει να το έχει.
Ασφάλεια επιπέδου γραμμής (RLS) – περιορισμός σε επίπεδο εγγραφής.
Ο μηχανισμός περιορισμών πρόσβασης δεδομένων σάς επιτρέπει να διαχειρίζεστε δικαιώματα πρόσβασης όχι μόνο σε επίπεδο αντικειμένων μεταδεδομένων, αλλά και σε επίπεδο αντικειμένων βάσης δεδομένων. Τα ακόλουθα αντικείμενα μπορούν να χρησιμοποιηθούν για τον περιορισμό της πρόσβασης στα δεδομένα:
Ο μηχανισμός έχει σχεδιαστεί για να περιορίζει την πρόσβαση σε εγγραφές πίνακα αντικειμένων μεταδεδομένων με βάση αυθαίρετες συνθήκες που επιβάλλονται στις τιμές των πεδίων σειρών αυτών των πινάκων. Για παράδειγμα, για να δείτε εγγραφές μόνο για αντισυμβαλλόμενους, οργανισμούς κ.λπ.
Το 1C δημιουργεί ένα αίτημα στο DBMS. Το σύμπλεγμα διακομιστή προσθέτει μια ενότητα WHERE στο αίτημα, το οποίο περιέχει το κείμενο της συνθήκης για τον περιορισμό της πρόσβασης μέσω RLS και, στη συνέχεια, αυτό το αίτημα αποστέλλεται στο DBMS, τα εξαγόμενα δεδομένα επιστρέφονται στον πελάτη 1C.
Αυτός ο μηχανισμός θα λειτουργήσει για οποιοδήποτε αίτημα από τον πελάτη:
Μια τέτοια υλοποίηση του μηχανισμού επηρεάζει σε μεγάλο βαθμό την απόδοση.
Σε μεγάλες λειτουργίες έντασης πόρων (επεξεργασία αναδημοσίευσης εγγράφων, για παράδειγμα), μέρος του κώδικα μπορεί να μετακινηθεί σε προνομιακές μονάδες.
ΕΝΑ) Προνομιακή ενότητα είναι μια κοινή ενότητα με τη σημαία "Προνομιούχα" στις ιδιότητες.
Η ιδιαιτερότητά του είναι ότι ο κώδικας σε αυτόν εκτελείται χωρίς κανέναν έλεγχο δικαιωμάτων πρόσβασης, συμπεριλαμβανομένου του RLS.
Β) Επίσης προνομιούχοςη λειτουργία μπορεί να ενεργοποιηθεί για ενότητες αντικειμένων εγγράφων. Αυτό γίνεται στις ιδιότητες εγγράφου, σημαία
Β) Μέθοδος SetPrivilegedMode()
Η εντολή συστήματος σάς επιτρέπει να κάνετε μέρος του κώδικα οποιασδήποτε μονάδας προνομιακό.
Από την επόμενη γραμμή κώδικα, θα λειτουργήσει η προνομιακή λειτουργία εκτέλεσης.
Θα λειτουργεί μέχρι τη γραμμή για την απενεργοποίηση αυτής της λειτουργίας ή μέχρι το τέλος της διαδικασίας/λειτουργίας
(Αληθής);
// οποιοσδήποτε κώδικας εδώ θα εκτελεστεί χωρίς έλεγχο δικαιωμάτων και RLS
SetPrivilegedMode(Ψέμα) // ή τέλος διαδικασίας / συνάρτησης
Ο αριθμός των φορών που ενεργοποιείται η προνομιακή λειτουργία πρέπει να αντιστοιχεί στον αριθμό των φορών που είναι απενεργοποιημένη. Ωστόσο, εάν σε μια διαδικασία ή λειτουργία η προνομιακή λειτουργία ενεργοποιήθηκε (μία ή περισσότερες), αλλά δεν απενεργοποιήθηκε, τότε το σύστημα θα τερματιστεί αυτόματα όσες φορές υπήρξαν ημιτελείς ενεργοποιήσεις στη διαδικασία ή στη λειτουργία που απομένει
Εάν σε μια διαδικασία ή συνάρτηση καλεί μια μέθοδο SetPrivilegedMode(Λάθος) πραγματοποιήθηκαν περισσότερες από κλήσεις μεθόδων SetPrivilegedMode(True ), τότε θα γίνει μια εξαίρεση
Λειτουργία PrivilegedModeΤο () επιστρέφει True εάν η προνομιακή λειτουργία εξακολουθεί να είναι ενεργοποιημένη και False εάν είναι εντελώς απενεργοποιημένη. Αυτό δεν αναλύει τον αριθμό των ρυθμίσεων προνομιακής λειτουργίας σε μια συγκεκριμένη λειτουργία.
Όλες οι καλούμενες διαδικασίες και συναρτήσεις θα εκτελεστούν επίσης σε προνομιακή λειτουργία.
Είναι επίσης δυνατό να ξεκινήσετε μια προνομιακή συνεδρία. Αυτή είναι μια συνεδρία στην οποία η προνομιακή λειτουργία καθιερώνεται από την αρχή του συστήματος. Επιπλέον, κατά τη λειτουργία η μέθοδος PrivilegedMode() θα επιστρέφει πάντα True και η δυνατότητα απενεργοποίησης της προνομιακής λειτουργίας δεν υποστηρίζεται. Μόνο ένας χρήστης που έχει δικαιώματα διαχειριστή (Δικαίωμα διαχείρισης) μπορεί να ξεκινήσει μια προνομιακή περίοδο λειτουργίας. Μπορείτε να ξεκινήσετε μια συνεδρία χρησιμοποιώντας το πλήκτρο γραμμή εντολώνεκκίνηση της εφαρμογής πελάτη UsePrivilegedMode ή της παραμέτρου συμβολοσειράς σύνδεσης βάσης πληροφοριών prmod .
Ανακύπτει φυσικά το ερώτημα: Γιατί τότε να ρυθμίσετε καθόλου περιορισμούς πρόσβασης, εάν μπορεί να παρακαμφθεί τόσο εύκολα;
Ναι, μπορείτε να γράψετε εξωτερική επεξεργασία με προνομιακή λειτουργία εκτέλεσης και να ξεφορτώσετε/να καταστρέψετε δεδομένα. Για να αποφευχθεί αυτό, το σύστημα έχει μια καθολική μέθοδο περιβάλλοντος
SetSafeMode().
Η ασφαλής λειτουργία, μεταξύ άλλων, αγνοεί την προνομιακή λειτουργία.
Πρέπει να ρυθμιστεί πριν από την κλήση προγράμματος εξωτερικές θεραπείεςή διαδικασίες και λειτουργίες εξαγωγής από τις ενότητες τους.
Κατά την εκτέλεση απαγορευμένων λειτουργιών, γίνεται εξαίρεση κατά το χρόνο εκτέλεσης.
Επιπλέον, μπορείτε να απενεργοποιήσετε τη δυνατότητα διαδραστικής εκκίνησης για χρήστες σε επίπεδο ρυθμίσεων ρόλου. εξωτερικές αναφορέςκαι επεξεργασία.
Το RLS μπορεί να διαμορφωθεί μόνο για δικαιώματα:
Για λειτουργίες ανάγνωσηςκαι τη διαγραφή, ένα αντικείμενο που βρίσκεται στη βάση δεδομένων πρέπει να συμμορφώνεται με περιορισμούς πρόσβασης δεδομένων.
Για τη λειτουργία προσθήκηςΟ περιορισμός πρόσβασης δεδομένων πρέπει να αντιστοιχεί στο αντικείμενο που σχεδιάζεται να εγγραφεί στη βάση δεδομένων.
Για λειτουργία αλλαγήςο περιορισμός πρόσβασης δεδομένων πρέπει να συμμορφώνεται με το αντικείμενο τόσο πριν από την αλλαγή (ώστε να διαβάζεται το αντικείμενο) όσο και μετά την αλλαγή (έτσι ώστε το αντικείμενο να γραφτεί).
Για όλα τα άλλα δικαιώματα δεν υπάρχει τέτοια επιλογή.
Ας προσθέσουμε έναν νέο περιορισμό για το δικαίωμα "ανάγνωσης" του καταλόγου "Ονοματολογία". Θα ανοίξει μια λίστα πεδίων για τα οποία μπορείτε να διαμορφώσετε τον προστιθέμενο περιορισμό.
Αυτό σημαίνει ότι εάν προσπαθήσετε να αποκτήσετε πρόσβαση σε επιλεγμένα πεδία, ο περιορισμός θα ενεργοποιηθεί, αλλά εάν προσπαθήσετε να αποκτήσετε πρόσβαση σε μη επιλεγμένα πεδία, ο περιορισμός δεν θα ενεργοποιηθεί.
Εάν επιλέξετε τη σημαία " Άλλα πεδία", ο περιορισμός θα διαμορφωθεί για όλα τα πεδία πίνακα, εκτός από τα πεδία για τα οποία ορίζονται ρητά περιορισμοί.
*Δυνατότητα: για δικαιώματα προσθήκης, αλλαγής, διαγραφής:
- Ο περιορισμός μπορεί να διαμορφωθεί μόνο για όλα τα πεδία.
- Μπορεί να υπάρχει μόνο ένας περιορισμός.
Για το δεξί "Ανάγνωση", μπορείτε να διαμορφώσετε διάφορες συνθήκες που θα συνδυαστούν με τον λογικό τελεστή "AND".
Δεν επιτρέπεται να χρησιμοποιούνται όλα τα πεδία του αντικειμένου δεδομένων κύριου περιορισμού σε περιορισμούς στους ακόλουθους τύπους αντικειμένων βάσης δεδομένων:
Εάν, υπό συνθήκες περιορισμένης πρόσβασης στα δεδομένα του κυκλοφορούντος μητρώου συσσώρευσης, χρησιμοποιούνται μετρήσεις που δεν περιλαμβάνονται στα σύνολα, τότε κατά την πρόσβαση στον εικονικό πίνακα περιστροφών, τα αποθηκευμένα σύνολα δεν χρησιμοποιούνται και η αίτηση εκτελείται εξ ολοκλήρου σύμφωνα με το τραπέζι κίνησης.
Οποιαδήποτε λειτουργία σε δεδομένα που είναι αποθηκευμένα σε μια βάση δεδομένων στο 1C:Enterprise οδηγεί τελικά σε κλήση στη βάση δεδομένων με κάποιο αίτημα για ανάγνωση ή αλλαγή των δεδομένων. Κατά τη διαδικασία εκτέλεσης ερωτημάτων στη βάση δεδομένων, οι εσωτερικοί μηχανισμοί του 1C:Enterprise επιβάλλουν περιορισμούς πρόσβασης. Σε αυτή την περίπτωση:
Για να αποκτήσετε την τιμή μιας παραμέτρου περιόδου λειτουργίας ή μιας επιλογής δυνατότητας, ο τρέχων χρήστης δεν χρειάζεται να έχει το δικαίωμα να λάβει αυτήν την τιμή. Ωστόσο, εάν δεν έχει οριστεί η τιμή κάποιας παραμέτρου περιόδου λειτουργίας, θα παρουσιαστεί σφάλμα και το ερώτημα της βάσης δεδομένων δεν θα εκτελεστεί.
Οι περιορισμοί που προέρχονται από έναν ρόλο συνδυάζονται χρησιμοποιώντας τη λειτουργία AND.
Οι περιορισμοί που προέρχονται από διαφορετικούς ρόλους συνδυάζονται χρησιμοποιώντας τη λειτουργία OR.
Οι δομημένες συνθήκες προστίθενται στα ερωτήματα SQL με τα οποία το 1C: Enterprise έχει πρόσβαση στο DBMS. Κατά την πρόσβαση σε δεδομένα από συνθήκες περιορισμού πρόσβασης, δεν εκτελείται έλεγχος δικαιωμάτων (ούτε για αντικείμενα μεταδεδομένων ούτε για αντικείμενα βάσης δεδομένων). Επιπλέον, ο μηχανισμός για την προσθήκη συνθηκών εξαρτάται από την επιλεγμένη μέθοδο λειτουργίας των περιορισμών "όλοι" ή "επιτρεπόμενοι".
*Δυνατότητα: Εάν ένας χρήστης έχει πρόσβαση σε πολλούς ρόλους με ρυθμισμένους περιορισμούς σε επίπεδο εγγραφής για ένα αντικείμενο, τότε σε αυτήν την περίπτωση οι συνθήκες των περιορισμών προστίθενται χρησιμοποιώντας τη λογική λειτουργία "OR". Με άλλα λόγια, οι εξουσίες του χρήστη είναι αθροιστικές.
Αυτό οδηγεί στο εξής συμπέρασμα: μην επιτρέψετε στις συνθήκες περιορισμού της πρόσβασης σε ένα αντικείμενο σε διαφορετικούς ρόλους να τέμνονται, γιατί σε αυτήν την περίπτωση το κείμενο του αιτήματος θα είναι πολύ περίπλοκο και αυτό θα επηρεάσει την απόδοση.
Όταν επιβάλλονται περιορισμοί χρησιμοποιώντας τη μέθοδο "όλα", προστίθενται συνθήκες και πεδία στα ερωτήματα SQL, ώστε το 1C:Enterprise να μπορεί να λάβει πληροφορίες σχετικά με το εάν, κατά την εκτέλεση ενός ερωτήματος βάσης δεδομένων, χρησιμοποιήθηκαν ή όχι δεδομένα που ήταν απαγορευμένα για έναν συγκεκριμένο χρήστη. Εάν χρησιμοποιήθηκαν απαγορευμένα δεδομένα, το αίτημα θα διακοπεί λόγω παραβίασης πρόσβασης.
Η επιβολή περιορισμών πρόσβασης χρησιμοποιώντας τη μέθοδο "όλα" παρουσιάζεται σχηματικά στο σχήμα:
Κατά την εφαρμογή περιορισμών χρησιμοποιώντας τη μέθοδο "επιτρεπόμενη", προστίθενται συνθήκες στα ερωτήματα SQL, έτσι ώστε οι εγγραφές που απαγορεύονται για τον τρέχοντα χρήστη να μην επηρεάζουν το αποτέλεσμα του ερωτήματος. Με άλλα λόγια, όταν επιβάλλονται περιορισμοί στον τρόπο λειτουργίας "επιτρεπόμενο", οι εγγραφές που απαγορεύονται για έναν συγκεκριμένο χρήστη θεωρούνται ότι λείπουν και δεν επηρεάζουν το αποτέλεσμα της λειτουργίας, το οποίο παρουσιάζεται σχηματικά στο σχήμα:
Περιορισμοί πρόσβασης δεδομένων επιβάλλονται σε αντικείμενα βάσης δεδομένων τη στιγμή που το 1C:Enterprise αποκτά πρόσβαση στη βάση δεδομένων.
Στην έκδοση πελάτη-διακομιστή του 1C:Enterprise, εφαρμόζονται περιορισμοί στον διακομιστή 1C:Enterprise.
Ωστόσο, αυτή η επιλογή (ΕΠΙΤΡΕΠΕΤΑΙ) δεν θα λειτουργήσει εάν σε ένα ερώτημα αναφερόμαστε σε έναν πίνακα για τον οποίο δεν έχουν ρυθμιστεί περιορισμοί πρόσβασης, αλλά ο οποίος περιέχει αναφορές σε σειρές πίνακα με ρυθμισμένους περιορισμούς. Σε αυτήν την περίπτωση, το αποτέλεσμα του ερωτήματος θα εμφανίσει "<Объект не найден>......" αντί για την τιμή του πεδίου αναφοράς.
Εάν αναπτύσσετε μια αναφορά ή επεξεργάζεστε χρησιμοποιώντας τυπικά ή προσαρμοσμένα ερωτήματα διαμόρφωσης, ελέγχετε πάντα τη σημαία "Επιτρεπόμενο".για να λειτουργήσει η έκθεση κάτω από οποιονδήποτε χρήστημε οποιοδήποτε σύνολο δικαιωμάτων.
Στην περίπτωση ανάγνωσης αντικειμένων δεδομένων από τη βάση δεδομένων, δεν είναι δυνατό να ορίσετε τη σημαία "Επιτρεπόμενο". Επομένως είναι απαραίτητο διαμορφώστε τις επιλογές για ανάγνωση αντικειμένων, λαμβάνοντας υπόψη πιθανούς περιορισμούς δικαιωμάτων πρόσβασηςγια τον χρήστη. Δεν υπάρχουν μέσα για τη λήψη μόνο επιτρεπόμενων δεδομένων στην τεχνολογία αντικειμένων.
Είναι σημαντικό ότι εάν ένα ερώτημα δεν προσδιορίζει τη λέξη-κλειδί ΕΠΙΤΡΕΠΕΤΑΙ, τότε όλες οι επιλογές που καθορίζονται σε αυτό το ερώτημα δεν πρέπει να έρχονται σε αντίθεση με κανέναν από τους περιορισμούς ανάγνωσης στα αντικείμενα βάσης δεδομένων που χρησιμοποιούνται στο ερώτημα. Επιπλέον, εάν το ερώτημα χρησιμοποιεί εικονικούς πίνακες, τότε οι αντίστοιχες επιλογές πρέπει να εφαρμοστούν στους ίδιους τους εικονικούς πίνακες.
Ας συνθέσουμε το κείμενο της ενότητας "WHERE" στο ερώτημα στον κατάλογο. Μπορείτε να χρησιμοποιήσετε το εργαλείο δημιουργίας ερωτημάτων.
Ο σχεδιαστής έχει απογυμνωμένη εμφάνιση.
Καρτέλα "Πίνακες".
Ο κύριος πίνακας θα είναι ο πίνακας του αντικειμένου για το οποίο διαμορφώνεται ο περιορισμός.
Μπορείτε επίσης να επιλέξετε άλλους πίνακες και να δημιουργήσετε διάφορες συνδέσεις μεταξύ τους στην καρτέλα "Σχέσεις".
Καρτέλα "Προϋποθέσεις"
Εδώ μπορείτε να διαμορφώσετε τις πραγματικές συνθήκες περιορισμού πρόσβασης
Ας προσθέσουμε προϋποθέσεις στο χαρακτηριστικό "Τιμή" του καταλόγου ονοματολογίας για το δικαίωμα "ανάγνωσης" σε όλα τα πεδία του πίνακα.
“Ονοματολογία WHERE Ονοματολογία. Τιμή > 500”
Ας δούμε πώς λειτουργεί αυτός ο απλός κανόνας. Ο πίνακας καταλόγου περιέχει τα ακόλουθα στοιχεία:
Μετά τη ρύθμιση ενός περιορισμού πρόσβασης, ο πίνακας θα εμφανίζει μόνο στοιχεία που ικανοποιούν την προϋπόθεση:
Εξαφανίστηκαν και ομάδες. Ας αλλάξουμε το κείμενο του περιορισμού
«Ονοματολογία WHERE Ονοματολογία. Τιμή > 500
Ή Ονοματολογία. Αυτή είναι μια ομάδα"
Λοιπόν, τώρα αυτό είναι που χρειάζεστε.
Εάν αφαιρέσετε την εμφάνιση του πεδίου «κωδικός» στις ρυθμίσεις λίστας, θα εμφανιστούν όλα τα στοιχεία του καταλόγου, π.χ. ο περιορισμός δεν λειτούργησε. Εάν ορίσετε να εμφανίζεται το πεδίο "Κωδικός", ο περιορισμός θα λειτουργήσει.
Σε αυτήν την περίπτωση, παρά το γεγονός ότι το στοιχείο καταλόγου είναι ορατό στο πεδίο λίστας, η φόρμα του δεν μπορεί να ανοίξει επειδή έχει ρυθμιστεί ένας περιορισμός στο χαρακτηριστικό. Το ίδιο συμβαίνει σε ένα αυθαίρετο αίτημα: όταν προσπαθείτε να λάβετε μια "περιορισμένη" ιδιότητα, θα υπάρξει ένα σφάλμα πρόσβασης.
Εάν προσπαθήσετε να λάβετε τα "περιορισμένα" διαπιστευτήρια μέσω προγραμματισμού, θα εμφανιστεί επίσης ένα σφάλμα πρόσβασης.
Επιπλέον, δεν θα είναι δυνατή η πρόσβαση σε κανένα πεδίο ενός αντικειμένου μέσω ενός συνδέσμου, επειδή κατά τη λήψη ενός συνδέσμου, το σύστημα διαβάζει ολόκληρο το αντικείμενο και εάν περιέχει "περιορισμένες" λεπτομέρειες, το αντικείμενο δεν θα διαβαστεί.
Επομένως, όταν εργάζεστε μέσω προγραμματισμού με αντικείμενα βάσης δεδομένων, πρέπει να έχετε υπόψη πιθανούς περιορισμούς σε επίπεδο εγγραφής και να λαμβάνετε όλα τα απαραίτητα δεδομένα αντικειμένων κατόπιν αιτήματος και στη συνέχεια να τα τοποθετείτε σε μια δομή ή να εκτελέσετε μέρος του κώδικα σε μια προνομιακή μονάδα.
Μετά τη ρύθμιση του περιορισμού πρόσβασης, η εμφάνιση της γραμμής στη λίστα δικαιωμάτων άλλαξε - έγινε γκρι και εμφανίστηκε ένα εικονίδιο.
Κάντε έναν περιορισμό πρόσβασης εάν χρειάζεται να εμφανίσετε στοιχεία με τρέχουσα τιμή μεγαλύτερη από μια συγκεκριμένη τιμή, για παράδειγμα, 100.
Διάλυμα:
Προσθέτουμε έναν νέο κανόνα περιορισμού πρόσβασης για τον κατάλογο "Ονοματολογία" με το δικαίωμα "ανάγνωση".
Επιλέξτε «άλλα πεδία».
Στον κατασκευαστή προσθέτουμε ένα ένθετο ερώτημα. Σε αυτό, επιλέξτε τον πίνακα μητρώου πληροφοριών "Τιμές προϊόντων".
Δεν υπάρχει καρτέλα "παραγγελία" - αυτό είναι ένα χαρακτηριστικό του σχεδιαστή ερωτημάτων για τη δημιουργία ενός αιτήματος περιορισμού πρόσβασης.
Στην καρτέλα "Για προχωρημένους", ορίστε το "first 999999999", εμφανίζεται η καρτέλα "παραγγελία".
Ρυθμίζουμε την παραγγελία κατά το πεδίο «Περίοδος» με φθίνουσα σειρά.
Στη συνέχεια, δημιουργήσαμε μια σύνδεση μεταξύ του κύριου πίνακα και του δευτερεύοντος ερωτήματος με αναφορά.
Ας ορίσουμε έναν περιορισμό πρόσβασης για τον κατάλογο Counterparties με βάση την τιμή που είναι αποθηκευμένη στη Constant.
Επιπλέον, πρέπει να ορίσετε έναν περιορισμό για όλα τα αντικείμενα που χρησιμοποιούν τον κατάλογο "Αντισυμβαλλόμενοι" στις λεπτομέρειες.
Διάλυμα
Για τον κατάλογο "Αντισυμβαλλόμενοι", θα ορίσουμε έναν περιορισμό για το δικαίωμα "ανάγνωσης" προσθέτοντας ένα ένθετο ερώτημα στη σταθερά στην ενότητα "Προϋποθέσεις". Μην ξεχνάτε Αυτό είναι μια ομάδα.
Βλέπουμε πρόβλημα, ο κατάλογος Αντισυμβαλλόμενοι φιλτράρεται σωστά και εμφανίζονται όλα τα έγγραφα με το χαρακτηριστικό "Counterparty", ορισμένα με "σπασμένους" συνδέσμους στο χαρακτηριστικό "Counterparty".
Τώρα πρέπει να διαμορφώσετε τους περιορισμούς πρόσβασης για όλα τα αντικείμενα που χρησιμοποιούν τη σύνδεση προς "Λογαριασμοί". Ας τα βρούμε χρησιμοποιώντας την υπηρεσία "αναζήτηση συνδέσμων προς ένα αντικείμενο".
Ας αντιγράψουμε και ας τροποποιήσουμε ελαφρώς το κείμενο της συνθήκης RLS από τον κατάλογο "Counterparties". Αυτό πρέπει να γίνει όσες φορές υπάρχουν αντικείμενα.
Ή χρησιμοποιήστε ένα μοτίβο περιορισμών πρόσβασης για να αποφύγετε προβλήματα αντιγραφής κώδικα.
Τα πρότυπα περιορισμού πρόσβασης διαμορφώνονται σε επίπεδο ρόλου και μπορούν να χρησιμοποιηθούν για οποιοδήποτε αντικείμενο εντός του επεξεργασμένου ρόλου.
Μπορείτε να προσθέσετε οποιοδήποτε κείμενο περιορισμού πρόσβασης στο πρότυπο. Το πρότυπο καλείται χρησιμοποιώντας το σύμβολο "#". Για παράδειγμα, #TemplateCounterparty.
Μέσω # σε 1C γράφονται οδηγίες στον προεπεξεργαστή. Στο πλαίσιο της εκτέλεσης των ρυθμίσεων περιορισμού πρόσβασης, η πλατφόρμα αντικαθιστά το κείμενο κλήσης προτύπου με το κείμενο προτύπου.
Ας προσθέσουμε το κείμενο μετά τη λέξη WHERE στο πρότυπο "Πρότυπο εργολάβου", εκτός από το κείμενο για το EtoGroup.
Ας συνεχίσουμε να λύνουμε το πρόβλημα 2.
Το πρόβλημα τώρα είναι ότι ο κύριος πίνακας στον κατάλογο ονομάζεται "αντισυμβαλλόμενος", στο έγγραφο "Τιμολόγιο παραλαβής". Το πεδίο που ελέγχεται στον κατάλογο ονομάζεται "σύνδεσμος", στο έγγραφο ονομάζεται "Αντισυμβαλλόμενος".
Ας αλλάξουμε το όνομα του κύριου πίνακα στο κείμενο του προτύπου σε "#CurrentTable"
Το "#CurrentTable" είναι μια προκαθορισμένη παράμετρος.
Και μέσα από μια τελεία υποδεικνύουμε τον αριθμό της παραμέτρου εισόδου - “.#Parameter(1)
Το "#Parameter" είναι επίσης μια προκαθορισμένη τιμή. Μπορεί να περιέχει έναν αυθαίρετο αριθμό παραμέτρων εισόδου. Απευθύνονται με αύξοντα αριθμό.
Στο κείμενο των περιορισμών πρόσβασης για τον κατάλογο, αναφέρουμε τα εξής:
Για το έγγραφο τα εξής:
"Πωλήσεις αγαθών WHERE #TemplateCounterparty ("Counterparty")"
Κατά την κλήση ενός προτύπου περιορισμού πρόσβασης, οι παράμετροι πρέπει να μεταβιβάζονται σε αυτό μόνο ως συμβολοσειρά, δηλαδή σε εισαγωγικά.
Κύριος πίνακας - Ονοματολογία
Το κείμενο του προτύπου είναι:
#CurrentTable WHERE #CurrentTable.#Parameter(1) = #Parameter(2)
Το κείμενο του προτύπου περιέχει μέρος του κειμένου στη γλώσσα περιορισμού πρόσβασης δεδομένων και μπορεί να περιέχει παραμέτρους που επισημαίνονται χρησιμοποιώντας το σύμβολο "#".
Το σύμβολο "#" μπορεί να ακολουθείται από:
Μια έκφραση περιορισμού πρόσβασης μπορεί να περιέχει:
Για να διευκολύνετε την επεξεργασία του κειμένου προτύπου, στην καρτέλα Πρότυπα περιορισμού στη φόρμα ρόλου, κάντε κλικ στο κουμπί Ορισμός κειμένου προτύπου. Στο παράθυρο διαλόγου που ανοίγει, πληκτρολογήστε το κείμενο του προτύπου και κάντε κλικ στο OK.
Δεν μπορούν να εγκατασταθούν χρησιμοποιώντας SetParameter()ή κάτι παρόμοιο.
Οι παράμετροι σε αυτή την περίπτωση είναι:
Η ανάγνωση των παραμέτρων περιόδου λειτουργίας σε ένα αίτημα περιορισμού πρόσβασης πραγματοποιείται σε προνομιακή λειτουργία, δηλαδή χωρίς έλεγχο των δικαιωμάτων λειτουργίας με αυτές.
Είναι απαραίτητο να ρυθμίσετε τον περιορισμό της πρόσβασης του τρέχοντος χρήστη στους «τους» αντισυμβαλλομένους.
Υπάρχει ένας κατάλογος "Χρήστες", ένας κατάλογος "Αντισυμβαλλόμενοι", έγγραφα με τα στοιχεία "Αντισυμβαλλόμενος".
Ο τρέχων χρήστης θα πρέπει να βλέπει δεδομένα μόνο για τους αντισυμβαλλομένους για τους οποίους έχει δημιουργηθεί σύνδεση μαζί του.
Η επικοινωνία πρέπει επίσης να διαμορφωθεί.
Πιθανές επιλογές:
Δημιουργία συνδέσεων μεταξύ χρήστη και αντισυμβαλλομένου
Πιθανές λύσεις στο πρόβλημα:
Διάλυμα.
Ας δημιουργήσουμε μια νέα παράμετρο συνεδρίας "CurrentUser" και ας τη συμπληρώσουμε στη λειτουργική μονάδα συνεδρίας.
Ας δημιουργήσουμε ένα μητρώο πληροφοριών «Συμμόρφωση διαχειριστών και εργολάβων»
Ας δημιουργήσουμε έναν νέο ρόλο και σε αυτόν έναν νέο περιορισμό πρόσβασης για το έγγραφο «Τιμολόγιο».
Στο κείμενο του αιτήματος, θα συνδέσουμε τον κύριο πίνακα με το μητρώο πληροφοριών για Account = Account και Manager = &CurrentUser. Τύπος σύνδεσης Εσωτερική.
Εάν είναι δυνατόν, είναι προτιμότερο να αποφεύγονται τα ένθετα ερωτήματα σε κείμενα περιορισμού πρόσβασης, καθώς θα εκτελούνται κάθε φορά που διαβάζονται δεδομένα από αυτό το αντικείμενο από τη βάση δεδομένων.
Έλεγχος - οι περιορισμοί λειτουργούν
*Δυνατότητα: Εάν αλλάξετε τη λίστα των αντισυμβαλλομένων χρηστών στο μητρώο, οι περιορισμοί πρόσβασης θα τεθούν σε ισχύ αμέσως χωρίς επανεκκίνηση της περιόδου σύνδεσης χρήστη.
Είναι απαραίτητο να εφαρμοστεί ένας περιορισμός στην επεξεργασία δεδομένων πριν από την καθορισμένη ημερομηνία για την απαγόρευση αλλαγών.
Πρέπει να το περιορίσετε για τους χρήστες.
Ας δημιουργήσουμε ένα μητρώο πληροφοριών «Ημερομηνίες Απαγόρευσης Αλλαγών» με τη διάσταση Χρήστης, πόρος Ημερομηνία Απαγόρευσης.
Ας οικοδομήσουμε τη λογική της λύσης ως εξής:
Προφανώς, ένας τέτοιος περιορισμός μπορεί να ρυθμιστεί για αντικείμενα βάσης δεδομένων που έχουν κάποια θέση στον άξονα του χρόνου. Θα μπορούσε να είναι
Ας δημιουργήσουμε έναν νέο ρόλο «Περιορισμοί Κατά Ημερομηνία Απαγόρευσης Αλλαγών».
Σε αυτό, για το παραστατικό «Τιμολόγιο» για τη σωστή «αλλαγή» θα προσθέσουμε έναν νέο περιορισμό πρόσβασης.
Καθορίζουμε τη ρύθμιση για όλα τα πεδία.
Το κείμενο του περιορισμού είναι:
ReceiptInvoice FROM Document.ReceiptInvoice AS ReceiptInvoice
Αλλαγή Ημερομηνιών Απαγόρευσης AS Ημερομηνία Απαγόρευσης
ΑΠΟ
ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ (ΕΠΙΛΟΓΗ
MAX (Αλλαγή απαγορευμένων ημερομηνιών. Χρήστης) AS χρήστης
ΑΠΟ
Μητρώο Πληροφοριών Ημερομηνίες Απαγόρευσης Αλλαγών AS Ημερομηνίες Απαγόρευσης Αλλαγών
ΟΠΟΥ
(Αλλαγή Απαγορευμένων Ημερομηνιών. Χρήστης = &Τρέχων Χρήστης
Ή Dates ProhibitedChanges.User = VALUE(Directory.users.EmptyLink))) AS VZ_User
BY Date of Prohibition of Changes.User = VZ_User.User) AS NestedQuery
Τιμολόγιο απόδειξης λογισμικού. Ημερομηνία > Ένθετο ερώτημα. Ημερομηνία απαγόρευσης
Ας ελέγξουμε - ο περιορισμός λειτουργεί.
#If Condition1 #Τότε
Αίτημα τμήματος 1
#ElseIf Condition2 #Τότε
Αίτημα τμήματος 2
#Αλλιώς
Αίτημα απόσπασμα 3
#EndIf
Σε συνθήκες μπορεί να χρησιμοποιηθεί λογικές πράξεις(και. ή, όχι, κ.λπ.) και πρόσβαση σε παραμέτρους συνεδρίας.
Αυτή η προσέγγιση στο πλαίσιο της κατασκευής περιορισμών πρόσβασης είναι βολική στο ότι, ανάλογα με τις συνθήκες, θα δημιουργηθεί ένα πιο σύντομο κείμενο αίτησης. Ένα απλούστερο ερώτημα φορτώνει λιγότερο το σύστημα.
Το μειονέκτημα είναι ότι ο κατασκευαστής ερωτήματος δεν θα λειτουργήσει με τέτοιο κείμενο.
*Ιδιομορφία:
Σε αντίθεση με τις οδηγίες στον προεπεξεργαστή της ενσωματωμένης γλώσσας στα κείμενα περιορισμού πρόσβασης, πριν από τον χειριστή Τότε πρέπει να βάλετε ένα κατακερματισμό - #Τότε
Ας συμπληρώσουμε το σύστημα περιορισμών μας με έναν διακόπτη που ενεργοποιεί/απενεργοποιεί τη χρήση περιορισμών σε επίπεδο ρεκόρ.
Για να γίνει αυτό, θα προσθέσουμε μια σταθερά και μια παράμετρο συνόδου με το όνομα "UseRLS".
Ας γράψουμε στο Session Module για να ορίσουμε την τιμή της παραμέτρου περιόδου λειτουργίας από την τιμή της σταθεράς.
Ας προσθέσουμε τον ακόλουθο κώδικα σε όλα τα κείμενα περιορισμού πρόσβασης:
"#If &UseRLS #Then….. #EndIf"
Ελέγχουμε - όλα λειτουργούν.
Ωστόσο, τώρα μετά την ενεργοποίηση της σημαίας "χρήση ραντάρ", οι αλλαγές δεν θα τεθούν αμέσως σε ισχύ. Γιατί;
Επειδή η παράμετρος περιόδου λειτουργίας ορίζεται κατά την έναρξη της συνεδρίας.
Είναι δυνατό να ρυθμίσετε την τιμή της παραμέτρου περιόδου λειτουργίας για επαναφορά όταν γράφεται μια νέα σταθερή τιμή, αλλά αυτό θα λειτουργήσει μόνο για την τρέχουσα περίοδο λειτουργίας χρήστη. Θα πρέπει να ζητηθεί από άλλους χρήστες να επανεκκινήσουν το σύστημα.
Τέλος πρώτου μέρους.
Ρύθμιση πρόσβασης στο επίπεδο εισαγωγής καταλόγου.
Αυτή η ρύθμιση συμπεριλήφθηκε στη διαμόρφωση όχι πολύ καιρό πριν, προσωπικά πιστεύω ότι η ρύθμιση είναι πολύ χρήσιμη.
Αυτή η ρύθμιση είναι απαραίτητη για όσους πρέπει να περιορίσουν την πρόσβαση στον κατάλογο από στοιχεία αυτού του καταλόγου. Για παράδειγμα, ένας διαχειριστής πρέπει να βλέπει μόνο πελάτες, καθώς και αναφορές και αρχεία καταγραφής εγγράφων, μόνο για αντισυμβαλλόμενους στους οποίους του επιτρέπεται η πρόσβαση και ένας λογιστής πρέπει να έχει πλήρη πρόσβαση σε όλα τα στοιχεία του καταλόγου, για παράδειγμα, «Αντισυμβαλλόμενοι. ”
Προτείνω να εξετάσουμε ένα παράδειγμα χρησιμοποιώντας το παράδειγμα της διαμόρφωσης μαλακής εκκίνησης.
Διαχειριστές?
Διευθυντές πωλήσεων?
Υπεύθυνοι αγορών.
Αγοραστές?
Προμηθευτές;
Συνήθως, οι λίστες ομάδων που περιγράφονται παραπάνω συζητούνται με τη διοίκηση και μόνο μετά εισάγονται στο πρόγραμμα.
Τώρα είναι απαραίτητο να περιγράψουμε τις πραγματικές ρυθμίσεις που πρέπει να εκτελεστούν στο 1C.
Θα ανοίξει η φόρμα επεξεργασίας «Παράμετροι πρόσβασης σε επίπεδο εγγραφής», βλ. 2.
Σε αυτήν τη φόρμα, πρέπει πραγματικά να ενεργοποιήσετε τον περιορισμό, για τον οποίο είναι υπεύθυνη η σημαία "Περιορισμός πρόσβασης σε επίπεδο εγγραφής κατά τύπο αντικειμένου" και να επιλέξετε αυτούς τους καταλόγους για τους οποίους θα ισχύει ο περιορισμός. Αυτό το άρθρο εξετάζει μόνο τον κατάλογο "Αντισυμβαλλόμενοι".
Οι ομάδες εργολάβων εισάγονται στον κατάλογο «Ομάδες χρηστών», βλ. 3.
Θα ανοίξει η μορφή του στοιχείου καταλόγου «Ομάδες χρηστών», βλ. 4.
Στην αριστερή πλευρά του παραθύρου υποδεικνύεται το αντικείμενο πρόσβασης (για εμάς είναι "αντισυμβαλλόμενοι"), στα δεξιά υπάρχουν χρήστες που είναι μέλη της ομάδας, σε αυτό το παράδειγμαΑυτοί είναι «Διαχειριστές».
Για κάθε ομάδα χρηστών που ορίζετε, πρέπει να εκτελείτε αυτή τη ρύθμιση, δεν πρέπει να μείνει ούτε ένας χρήστης που να μην είναι μέλος της ομάδας.
Για το παράδειγμά μας, αυτά είναι: Αγοραστές, Προμηθευτές, Άλλοι. Βλέπε Εικ. 6.
Η ομάδα πρόσβασης για τον αντισυμβαλλόμενο εκχωρείται στην καρτέλα "άλλο". Συνήθως χρησιμοποιώ βοηθητική τυπική επεξεργασία για την εκχώρηση δεδομένων σε ομάδες. "Ομαδική επεξεργασία καταλόγων και εγγράφων", σας επιτρέπει τη μαζική εγκατάσταση την επιθυμητή ομάδαγια αυτό το στήριγμα.
Η σχέση των ομάδων χρηστών με τις ομάδες πρόσβασης αντισυμβαλλομένου επισημαίνεται με κόκκινο χρώμα. Για τις ομάδες "Purchasing Managers" και "Sales Managers", οι σχέσεις διαμορφώνονται με τον ίδιο ακριβώς τρόπο, μόνο τα αντικείμενα πρόσβασης καθορίζονται ως εκείνα στα οποία θα πρέπει να έχουν πρόσβαση, για παράδειγμα, μόνο "Suppliers" ή μόνο "Buyers". Οι σημαίες, για παράδειγμα "Ορατότητα στη λίστα" είναι τα δικαιώματα του "Αντικείμενο πρόσβασης". Από το όνομα, νομίζω ότι η λειτουργικότητα αυτών των δικαιωμάτων είναι ξεκάθαρη.
Μετά τους παραπάνω χειρισμούς, θα πρέπει να έχετε περιορισμένη πρόσβαση στον κατάλογο «Αντισυμβαλλόμενοι».
Οι υπόλοιποι κατάλογοι έχουν ρυθμιστεί παρόμοια.
Σπουδαίος:
Η περιορισμένη πρόσβαση δεν ισχύει για τον ρόλο "Πλήρης δικαιώματα".
Το σύνολο των ρόλων χρήστη πρέπει να περιέχει τον ρόλο "Χρήστης".
Εάν έχετε τους δικούς σας ρόλους, τότε πρέπει να εισαγάγετε πρότυπα και περιορισμούς στον ρόλο σας όπως στον ρόλο "Χρήστης" σε σχέση με τον κατάλογο "Αντισυμβαλλόμενοι" (δείτε τον κωδικό στον ρόλο χρήστη κάνοντας κλικ στον κατάλογο αντισυμβαλλομένων).
Η πλατφόρμα 1C:Enterprise 8 διαθέτει έναν ενσωματωμένο μηχανισμό για τον περιορισμό της πρόσβασης σε δεδομένα σε επίπεδο ρεκόρ. Μπορείτε να διαβάσετε γενικές πληροφορίες για αυτό εδώ. Εν ολίγοις, το RLS θα σας επιτρέψει να περιορίσετε την πρόσβαση σε δεδομένα βάσει συγκεκριμένων συνθηκών στις τιμές πεδίου. Για παράδειγμα, μπορείτε να περιορίσετε την πρόσβαση του χρήστη σε έγγραφα ανάλογα με την τιμή του χαρακτηριστικού "Οργανισμός". Ορισμένοι χρήστες θα εργαστούν με έγγραφα για τον οργανισμό "Management Company" και άλλοι με τον οργανισμό "Dairy Plant". Ως παράδειγμα.
Θα εφαρμόσουμε το παράδειγμα στη διαμόρφωση επίδειξης του SCP 1.3. Ας δημιουργήσουμε έναν χρήστη «Αποθηκευτή» και ας προσθέσουμε σε αυτόν τον ομώνυμο ρόλο «Αποθηκευτής».
Τώρα ας προχωρήσουμε απευθείας στη ρύθμιση των δικαιωμάτων πρόσβασης σε επίπεδο εγγραφής. Ας μεταβούμε στη διεπαφή "Διαχείριση χρήστη". Στο κύριο μενού, επιλέξτε "Πρόσβαση σε επίπεδο εγγραφής -> Επιλογές". Εδώ, επιλέξτε το πλαίσιο δίπλα στο "Περιορισμός πρόσβασης σε επίπεδο εγγραφής κατά τύπο αντικειμένου" και επιλέξτε "Οργανισμοί" στη λίστα αντικειμένων.
Έτσι, ενεργοποιήσαμε τη χρήση του RLS. Τώρα πρέπει να το ρυθμίσετε.
Ο έλεγχος πρόσβασης σε επίπεδο εγγραφής δεν έχει ρυθμιστεί ξεχωριστά για κάθε προφίλ χρήστη ή άδειας. Το RLS έχει ρυθμιστεί για ομάδες χρηστών. Ας προσθέσουμε νέα ομάδαχρήστες, ας το ονομάσουμε "αποθηκάριους"
Η σύνθεση ομάδας στη δεξιά πλευρά της φόρμας εμφανίζει μια λίστα χρηστών που ανήκουν σε αυτήν την ομάδα. Ας προσθέσουμε στη λίστα τον χρήστη που δημιουργήσαμε νωρίτερα. Στα αριστερά υπάρχει ένας πίνακας περιορισμών πρόσβασης. Κατά τη ρύθμιση του RLS, επιλέξαμε ότι η πρόσβαση θα περιορίζεται μόνο από οργανισμούς, επομένως βλέπουμε μόνο έναν τύπο αντικειμένου πρόσβασης. Κάντε κλικ στο κουμπί "Ρυθμίσεις πρόσβασης". Θα ανοίξει η επεξεργασία των ρυθμίσεων δικαιωμάτων πρόσβασης για την τρέχουσα ομάδα.
Ας προσθέσουμε τον οργανισμό "IPE "Entrepreneur" στη λίστα των αντικειμένων πρόσβασης για την ομάδα. Το είδος της κληρονομιάς των δικαιωμάτων θα παραμείνει αμετάβλητο. Θα ορίσουμε το δικαίωμα στο αντικείμενο πρόσβασης για ανάγνωση και εγγραφή. Κάντε κλικ στο "OK", οι ρυθμίσεις είναι έτοιμες. Μόλις διαμορφώσαμε το RLS σε επίπεδο οργανισμού.
Ας ξεκινήσουμε το πρόγραμμα κάτω από τον χρήστη που δημιουργήθηκε προηγουμένως και ας ανοίξουμε τον κατάλογο "Οργανισμοί". Έτσι θα μοιάζει η λίστα για τον χρήστη μας και για έναν χρήστη με πλήρη δικαιώματα:
Όπως μπορούμε να δούμε, ο χρήστης αποθηκευτής βλέπει μόνο έναν οργανισμό στον οποίο έχουμε παραχωρήσει πρόσβαση ανάγνωσης. Το ίδιο ισχύει για έγγραφα, για παράδειγμα, παραλαβή αγαθών και υπηρεσιών.
Έτσι, ο χρήστης όχι μόνο δεν θα βλέπει οργανισμούς για τους οποίους δεν έχει οριστεί πρόσβαση, αλλά δεν θα μπορεί επίσης να διαβάσει/εγγράψει έγγραφα και άλλα αντικείμενα στη βάση πληροφοριών για τα οποία έχουν οριστεί δικαιώματα στον ρόλο του "Οργανισμού" ιδιότης.
Έχουμε αναθεωρήσει απλούστερο παράδειγμαΡυθμίσεις RLS. Στο επόμενο άρθρο θα μιλήσουμε για την υλοποίηση του μηχανισμού RLS στη διαμόρφωση "Manufacturing Enterprise Management" έκδοση 1.3.
Κάθε διευθυντής θα συμφωνήσει άνευ όρων ότι κάθε εργαζόμενος στην επιχείρηση θα πρέπει να έχει πρόσβαση μόνο στις πληροφορίες που εμπίπτουν στην αρμοδιότητά του. Για παράδειγμα, ένας αποθηκάριος σε μια αποθήκη δεν χρειάζεται απαραίτητα να δει ποιες εργασίες εκτελούνται από τον οικονομικό διευθυντή ή τον επικεφαλής λογιστή. Ωστόσο, συχνά προκύπτουν πολύ λεπτές καταστάσεις, για παράδειγμα, όταν το πρόγραμμα 1C: Enterprise 8 χρησιμοποιείται όχι για μία, αλλά για πολλές επιχειρήσεις. Καθένα από αυτά έχει τους δικούς του υπαλλήλους, οι οποίοι πρέπει να έχουν πρόσβαση μόνο σε εξουσιοδοτημένες πληροφορίες που σχετίζονται με την επιχείρησή τους.
Σε αυτή την περίπτωση, η τεχνολογία είναι ιδανικός βοηθός στην παροχή των απαραίτητων δικαιωμάτων πρόσβασης. Ασφάλεια επιπέδου εγγραφής(RLS), το οποίο σας επιτρέπει να παρέχετε πρόσβαση σε πληροφορίες σε επίπεδο εγγραφής.
Ας δούμε ένα παράδειγμα συγκεκριμένης κατάστασης. Η εταιρεία μας αποτελείται από δύο οργανισμούς. Ο πρώτος ασχολείται με τις πωλήσεις λογισμικό, στο δεύτερο - εκπαίδευση για να εργαστείτε με αυτό. Για να λάβουμε υπόψη και τους δύο αυτούς οργανισμούς χρησιμοποιούμε προϊόν λογισμικού 1C: Ενσωματωμένος αυτοματισμός 8.
Καθήκον μας είναι να διαφοροποιήσουμε τα δικαιώματα πρόσβασης στις πληροφορίες των υπαλλήλων δύο οργανισμών, έτσι ώστε οι εργαζόμενοι με τα ίδια δικαιώματα να μπορούν να βλέπουν μόνο ό,τι σχετίζεται με τον οργανισμό στον οποίο εργάζονται.
Το πρώτο πράγμα που έρχεται στο μυαλό όταν τίθεται αυτό το πρόβλημα είναι η ρύθμιση επιλογών για οργανισμούς. Ωστόσο, αυτή η λύση έχει δύο σημαντικά μειονεκτήματα:
Ο πιο σίγουρος τρόπος είναι να περιοριστεί η πρόσβαση των χρηστών σε επίπεδο ρεκόρ. Πώς να το εφαρμόσετε αυτό;
Το πρώτο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε το πρόγραμμα για χρήση αυτή τη μέθοδο. Για να το κάνετε αυτό χρειάζεστε:
Στην περίπτωσή μας, είναι απαραίτητο να περιοριστεί η πρόσβαση ανά οργανισμό, αλλά είναι σαφές ότι το πρόγραμμα παρέχει πολύ ευρύτερες ευκαιρίες. Για παράδειγμα, περιορίστε την πρόσβαση σε καταλόγους και έγγραφα.
Ένας παρόμοιος μηχανισμός εφαρμόζεται σε άλλες λύσεις εφαρμογών 1C:
Σε αυτά τα προγράμματα, τα δικαιώματα πρόσβασης διαφοροποιούνται χρησιμοποιώντας τον κατάλογο "Ομάδες χρηστών", ο οποίος είναι προσβάσιμος από το μενού "Εργαλεία", ενότητα "Ρύθμιση πρόσβασης χρήστη".
Αυτά τα βήματα πρέπει να ολοκληρωθούν για κάθε οργανισμό. Μετά από αυτό, κάθε εργαζόμενος, αφού μπει στο πρόγραμμα, θα βλέπει μόνο εκείνα τα έγγραφα που καθορίζονται από τα δικαιώματα πρόσβασής του ανά θέση και σχετίζονται με τον οργανισμό του.
Κλασικό πρόβλημα: να δώσει στον χρήστη πρόσβαση σε ένα αντικείμενο, αλλά όχι σε όλα τα στοιχεία/έγγραφα, αλλά μόνο σε ορισμένα.
Για παράδειγμα, για να μπορεί ο διαχειριστής να βλέπει αναφορές μόνο για τους πελάτες του.
Ή μπορεί να είναι περιορισμός “Όλοι εκτός από κάποιους”.
Ή ο περιορισμός δεν αφορά βιβλία/έγγραφα αναφοράς, αλλά για να καταχωρήσετε δεδομένα…
Για παράδειγμα, έτσι ώστε οι χρήστες να μην μπορούν να εξαγάγουν δεδομένα για πληρωμές σε συνεργάτες χρησιμοποιώντας οποιαδήποτε αναφορά.
Στην ουσία, αυτή είναι μια ωραία και πολύ ευέλικτη ρύθμιση του "τι μπορεί να δει αυτός ο χρήστης και τι δεν χρειάζεται να μαντέψει".
Οι περισσότερες υλοποιήσεις απαιτούν από διαφορετικούς χρήστες να ορίσουν διαφορετικά επίπεδα πρόσβασης στις πληροφορίες στη βάση δεδομένων.
Στις διαμορφώσεις, ειδικά αντικείμενα μεταδεδομένων - ρόλοι - είναι υπεύθυνα για πιθανά δικαιώματα πρόσβασης στα δεδομένα. Κάθε χρήστης βάση πληροφοριώνανατίθενται ένας ή περισσότεροι ρόλοι. Καθορίζουν εάν είναι δυνατές λειτουργίες σε συγκεκριμένα αντικείμενα μεταδεδομένων (ανάγνωση, γραφή, δημοσίευση κ.λπ.).
Αλλά δεν είναι μόνο αυτό.
Συχνά είναι απαραίτητο όχι απλώς να ανοίξετε/να αρνηθείτε την πρόσβαση σε ένα συγκεκριμένο αντικείμενο, αλλά να περιορίσετε την πρόσβαση σε μέρος των δεδομένων σε αυτό.
Αυτό το πρόβλημα δεν μπορεί να λυθεί χρησιμοποιώντας μόνο ρόλους.– για το σκοπό αυτό έχει εφαρμοστεί μηχανισμός περιορισμού της πρόσβασης σε επίπεδο εγγραφής (RLS).
Οι περιορισμοί αντιπροσωπεύουν συνθήκες υπό τις οποίες θα επιτρέπεται μια ενέργεια σε δεδομένα (ανάγνωση, γραφή κ.λπ.).
Σχετικά με το RLS - περισσότερες λεπτομέρειες: 8 βίντεο και PDF
Περιορισμός της πρόσβασης στα δεδομένα με χρήση ρόλων
Περιορισμός επιπέδου εγγραφής (RLS)
Εφαρμογή περιορισμών πρόσβασης σε επίπεδο αρχείου για τον κατάλογο Contractors Αυτό το βίντεο εξηγεί πώς η διαμόρφωση επίδειξης "Διαχειριζόμενη εφαρμογή
Πώς λειτουργούν οι περιορισμοί πρόσβασης σε επίπεδο αρχείου χαμηλού επιπέδου
Σε έναν χρήστη της βάσης πληροφοριών μπορούν να ανατεθούν αρκετοί ρόλοι. Επιπλέον, κάθε ρόλος μπορεί να έχει τους δικούς του περιορισμούς πρόσβασης σε επίπεδο εγγραφής. Αυτό το βίντεο εξηγεί πώς συμπεριφέρεται το σύστημα όταν επιβάλλονται περιορισμοί.
Αυτό το βίντεο περιγράφει την πρώτη μέθοδο επιβολής περιορισμών σε επίπεδο ρεκόρ - τη μέθοδο ALL. Σε αυτήν την περίπτωση, εάν η επιλογή περιλαμβάνει εγγραφές στις οποίες η πρόσβαση είναι περιορισμένη, θα εμφανιστεί ένα μήνυμα σφάλματος.
Αυτό το βίντεο περιγράφει την πρώτη μέθοδο επιβολής περιορισμών σε επίπεδο ρεκόρ - τη μέθοδο ΕΠΙΤΡΕΠΟΜΕΝΗ. Σε αυτήν την περίπτωση, μόνο εκείνες οι εγγραφές στις οποίες ο χρήστης έχει δικαιώματα πρόσβασης θα περιλαμβάνονται στην επιλογή.
Ακολουθούν ορισμένα θέματα από το μάθημα:
Σε κάθε περίπτωση, κάποια στιγμή θα πρέπει να αναπτύξετε 1C, να διαμορφώσετε κρατήσεις, δικαιώματα πρόσβασης, διάφορους τρόπους εκκίνησης, να δοκιμάσετε την ακεραιότητα των βάσεων δεδομένων, να διασφαλίσετε τη λειτουργία των διακομιστών κ.λπ.
Και είναι καλύτερα να το κάνετε αμέσως.
Για να μην γίνει αργότερα «...! Λοιπόν, τι…! Δικό σου...!" – και άλλες εκφράσεις λύπης :)