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

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

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

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

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

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

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

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

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

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

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

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

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

CurrentUser = SessionParameters.CurrentUser;


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

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

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

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

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

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