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

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

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

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

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

Εάν ο τύπος παραμέτρου περιόδου λειτουργίας είναι:

  • FixedArray
  • FixedCollection
  • Σταθερή Δομή

Τότε η τιμή του στοιχείου συλλογής θα μπορούσε να είναι Απροσδιόριστος.

Η κύρια περιοχή των παραμέτρων είναι η χρήση των τιμών τους σε ερωτήματα RLS (Record Level Access Restriction).

Για παράδειγμα, πρέπει να ορίσουμε μια συνθήκη για τον τρέχοντα χρήστη στο αίτημα RLS. Για να το κάνουμε αυτό, ρυθμίζουμε την παράμετρο περιόδου λειτουργίας "CurrentUser" και ορίζουμε την τιμή από τον ενσωματωμένο κώδικα γλώσσας:

SessionParameters.CurrentUser =<значение>

Πίνακας.Χρήστης = &Τρέχον Χρήστης

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

CurrentUser = SessionParameters.CurrentUser;


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

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

Διαδικασία SettingSessionParameters(SessionParametersNames) Εάν το SessionParametersNames είναι απροσδιόριστο, τότε εάν ParameterName = "CurrentUser" Τότε SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // και τα λοιπά. τέλος εαν; τέλος εαν; EndProcedurevalue>τιμή>>

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

  • ΤΡΕΧΟΥΣΕΣ ΕΚΔΟΣΕΙΣ 1C
  • ΠΑΡΑΔΕΙΓΜΑΤΑ ΚΩΔΙΚΟΥ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ 1C
Ρόλοι, δικαιώματα πρόσβασης στο 1C 8.x
Πώς μπορώ να ξέρω εάν ένας συγκεκριμένος ρόλος είναι διαθέσιμος στον τρέχοντα χρήστη;
If Not RoleAvailable("Manager") Τότε Αναφορά ("Δεν επιτρέπεται η προβολή αιτημάτων από πελάτες!"); τέλος εαν;
Πώς μπορώ να λάβω πληροφορίες σχετικά με τους ρόλους διαμόρφωσης;
Κατάλογος συναρτήσεων Πιθανών ΡόλωνConfiguration() Λίστα ρόλων = νέα λίστα τιμών; RolesConfiguration = Μεταδεδομένα.Ρόλοι; Για κάθε ρόλο από το RoleConfiguration Loop RoleList.Add(Role.Name); EndCycle; returnListRole; EndFunction
Πώς να εκτελέσετε κώδικα χωρίς να ελέγξετε τα δικαιώματα;
1. Χρησιμοποιήστε την προνομιακή ενότητα 2. Τοποθέτηση κώδικα προγράμματος, το οποίο πρέπει να εκτελεστεί ΧΩΡΙΣ ΕΛΕΓΧΟ ΠΕΡΙΟΡΙΣΜΩΝ, σε μια κοινή λειτουργική μονάδα με τη σημαία PRIVILEGE που έχει οριστεί για τη μονάδα. Χρησιμοποιήστε έναν προνομιακό τρόπο εκτέλεσης του κώδικα προγράμματος Παρόμοιος με τον τρόπο λειτουργίας του κώδικα προνομιακών μονάδων. Η λειτουργία μπορεί να ενεργοποιηθεί/απενεργοποιηθεί χρησιμοποιώντας την ενσωματωμένη γλώσσα: SetPrivilegedMode(<Включить>) Παράμετρος<Включить>(απαιτείται) Τύπος: Boolean. Καθορίζει εάν θα ενεργοποιηθεί η προνομιακή λειτουργία: True - ενεργοποιήστε τη λειτουργία. False - απενεργοποιήστε τη λειτουργία. Η συνάρτηση PrivilegedMode() σάς επιτρέπει να προσδιορίσετε εάν η προνομιακή λειτουργία είναι ενεργοποιημένη ή όχι. Η χρήση της προνομιακής λειτουργίας επιτρέπει, πρώτον, να επιταχύνετε την εργασία, καθώς δεν θα επιβληθούν περιορισμοί στην πρόσβαση στα δεδομένα και, δεύτερον, σας επιτρέπει να εκτελείτε λειτουργίες με δεδομένα για λογαριασμό χρηστών στους οποίους δεν είναι διαθέσιμα αυτά τα δεδομένα. Η προνομιακή λειτουργία συνιστάται όταν λογικά πρέπει να απενεργοποιήσετε τον έλεγχο αδειών ή όταν μπορείτε να απενεργοποιήσετε τον έλεγχο αδειών για να επιταχύνετε τα πράγματα. Είναι αποδεκτή η χρήση προνομιακής λειτουργίας όταν η εργασία με δεδομένα για λογαριασμό συγκεκριμένου χρήστη δεν παραβιάζει τα δικαιώματα πρόσβασης που έχουν θεσπιστεί για αυτόν τον χρήστη.

5
Όταν απαιτούνται περισσότερα λεπτό συντονισμόπρόσβαση, ο μηχανισμός RLS - Record Level Security έρχεται να σώσει. Διαμορφώσεις συστήματος Το "1C:Enterprise" 8 τοποθετήθηκε αρχικά ως πρόγραμμα για λογιστική πολλαπλών εταιρειών και ένα από... 3
Ξεκινώντας με την πλατφόρμα 8.0 του συστήματος 1C Enterprise, είναι δυνατό να περιοριστούν τα δικαιώματα πρόσβασης των χρηστών σε επίπεδο ρεκόρ. Για το σκοπό αυτό χρησιμοποιείται ο μηχανισμός RLS (Record Level Security). Μια τέτοια «λεπτή» ρύθμιση μπορεί να είναι... 3
Συχνά συναντώ ερωτήσεις σχετικά με δημιουργία λογισμικούκαι ρυθμίσεις δικαιωμάτων χρήστη. Σε αυτό το άρθρο θα δώσω παραδείγματα για Κανονικές και Διαχειριζόμενες εφαρμογές που δημιουργούν μέσω προγραμματισμού έναν χρήστη σε... 2
Ερώτηση: Έχω προσθέσει έναν νέο χρήστη. δημιουργώ νέα διεπαφή(αντιγράφοντας μια υπάρχουσα) και καθορίστε αυτήν τη διεπαφή ως την κύρια για αυτόν τον χρήστη. Το πρόβλημα είναι ότι η νέα διεπαφή δημιουργήθηκε...