Bieżący użytkownik to 1s 8.3 na kliencie. Jak uzyskać informacje o rolach konfiguracyjnych
- AKTUALNE WYDANIA 1C
- PRZYKŁADY KODÓW NA PLATFORMIE 1C
Role, prawa dostępu w 1C 8.x
Jak mogę się dowiedzieć, czy dana rola jest dostępna dla bieżącego użytkownika?
If Not RoleAvailable("Manager") Then Report("Wyświetlanie zamówień od kupujących jest niedozwolone!"); EndIf;Jak uzyskać informacje o rolach konfiguracyjnych?
Lista funkcji możliwych ról konfiguracyjnych() Lista ról = nowa lista wartości; ConfigRoles = Metadane.Roles; Dla każdej roli z pętli RoleConfiguration ListRoles.Add(Role.Name); Zakończ cykl; Lista zwrotów ról; Funkcje końcoweJak wykonać kod bez sprawdzania uprawnień?
1. Użyj uprzywilejowanego modułu 2. Umieszczenie kod programu, który należy wykonać BEZ KONTROLI OGRANICZEŃ, do wspólnego modułu z ustawioną dla modułu flagą PRIVILEGE. Użyj uprzywilejowanego trybu wykonywania kodu programu Podobny do trybu działania kodu modułów uprzywilejowanych. Tryb można włączyć/wyłączyć za pomocą wbudowanego języka: SetPrivilegedMode(<Включить>) Parametr<Включить>(wymagane) Typ: Boolean. Określa, czy tryb uprzywilejowany będzie włączony: True - włącz tryb; Fałsz - wyłącz tryb. funkcja PrivilegedMode() pozwala określić, czy tryb uprzywilejowany jest włączony, czy nie. Korzystanie z trybu uprzywilejowanego pozwala po pierwsze przyspieszyć pracę, ponieważ nie będzie ograniczeń w dostępie do danych, a po drugie umożliwia wykonywanie operacji na danych w imieniu użytkowników, dla których dane te nie są dostępne. Tryb uprzywilejowany jest zalecany, gdy logicznie konieczne jest wyłączenie sprawdzania uprawnień lub gdy możesz wyłączyć sprawdzanie uprawnień, aby przyspieszyć działanie. Dopuszczalne jest korzystanie z trybu uprzywilejowanego, gdy praca z danymi w imieniu określonego użytkownika nie narusza praw dostępu ustawionych dla tego użytkownika.
5
Gdy wymagane jest bardziej precyzyjne ustawienie dostępu, z pomocą przychodzi mechanizm RLS - Record Level Security. 1C:Enterprise System Configurations 8 był pierwotnie pozycjonowany jako program do księgowości wielu firm i jeden z...
3
Począwszy od platformy 8.0 systemu 1C Enterprise, możliwe jest ograniczenie praw dostępu użytkownika na poziomie rekordu. W tym celu wykorzystywany jest mechanizm RLS (Record Level Security). Takie "dokładne" strojenie może być...
3
Często dostaję pytania dotyczące tworzenie programu i ustawienia praw użytkownika. W tym artykule przedstawię przykłady aplikacji standardowych i zarządzanych, które programowo tworzą użytkownika w ...
2
Pytanie: Dodałem nowego użytkownika. Tworzę nowy interfejs (kopiując istniejący) i określam ten interfejs jako główny dla tego użytkownika. Problem w tym, że nowo stworzony interfejs...
Parametry sesji 1C 8.3- zmienna przechowująca wartość żądanego parametru przez czas trwania sesji użytkownika. W rzeczywistości jest to rodzaj zmiennej globalnej powiązanej z sesją bieżącego użytkownika.
Korzystanie z parametrów sesji w 1C
Parametry sesji są ustawiane tylko programowo, w systemie nie ma uniwersalnego interfejsu do ustawiania parametrów sesji. Zazwyczaj są one ustawiane przy starcie systemu, w module „Session”. Jeśli parametr nie zostanie zdefiniowany, zostanie zgłoszony błąd podczas uzyskiwania do niego dostępu.
Przykład ustawienia parametru sesji 1C
Spójrzmy na typowy przypadek użycia parametrów sesji - ustawienie bieżącego użytkownika. Weźmy przykład z przygotowania do .
W drzewie metadanych utwórzmy nowy parametr sesji - CurrentUser, przypiszmy do niego typ - DirectoryReference.Individuals:
Uzyskaj 267 lekcji wideo 1C za darmo:
W module sesji stwórzmy procedurę, która określi aktualny parametr sesji:
Kod procedury:
Procedura UstawienieSessionParameters(RequiredParameters) //poszukujemy fizycznej. twarz po nazwie użytkownika CurrentUser = Katalogi. Osoby. ZnajdźWedług(NazwaUżytkownika() ) ; // jeśli nie znaleziono, utwórz nowy Jeśli BieżącyUżytkownik. Empty() Następnie NewUser = Katalogi. Osoby. UtwórzElement(); Nowy użytkownik. Nazwa = Nazwa użytkownika(); Nowy użytkownik. Pisać() ; BieżącyUżytkownik = NowyUżytkownik. Połączyć; EndIf ; //przypisz parametrowi sesji CurrentUser link do katalogu osób Parametry sesji. BieżącyUżytkownik = BieżącyUżytkownik; Koniec proceduryRozważane parametry w 1C:Enterprise są prezentowane jako obiekt metadanych. Zasadniczo jest to nic innego jak zmienna globalna powiązana z bieżącą sesją.
Zmienna globalna jest tą samą zmienną, co każda inna, ale jej cechą charakterystyczną jest to, że można do niej uzyskać dostęp z dowolnego miejsca w programie, a w przypadku parametru sesji działa to tylko w ramach bieżącej sesji.
Ponieważ parametr sesji jest obiektem metadanych, posiada pewne cechy:
- Może być określonego typu. Dozwolone typy są specyficzne dla platformy. Ich lista jest dość obszerna, ale nawet jeśli w ta lista nie potrzebujesz, zawsze możesz serializować wartość i przechowywać ją w parametrze jako ciąg.
- Prawa do niego, jak również do dowolnego innego obiektu metadanych, mogą być ograniczone rolami (zarówno do zapisu, jak i do odczytu). Jednocześnie istnieje osobliwość używania go w RLS, ale zostanie to omówione poniżej.
- Ma limit ilości danych umieszczanych w postaci serializowanej. Ich objętość nie powinna przekraczać 4 GB.
Jeśli typ parametru sesji:
- Stała tablica
- Stała kolekcja
- Naprawiono strukturę
Wtedy wartość elementu kolekcji może być Nieokreślony.
Głównym obszarem parametrów jest wykorzystanie ich wartości w żądaniach RLS (ograniczenie dostępu na poziomie rekordu).
Na przykład musimy ustawić warunek dla bieżącego użytkownika w żądaniu RLS. W tym celu ustawiamy parametr sesji „CurrentUser”, z kodu wbudowanego języka ustawiamy wartość:
SessionParameters.CurrentUser =<значение>
Table.User = &Bieżący użytkownik
Użycie parametru session w ten sposób nie uwzględnia praw odczytu parametru, ale można spróbować uzyskać ich wartość z wbudowanego języka:
CurrentUser = SessionParameters.CurrentUser;
Możesz ustawić parametr sesji, czyli jego wartość, tylko programowo i tylko na serwerze. Aby to zrobić, musisz wywołać procedurę serwera od klienta. Podczas uzyskiwania dostępu do parametru sesji (ustawianie, pobieranie), jeśli parametr nie jest zainicjowany, zostanie wywołana procedura Ustawienia SesjiParametry w module sesji. Tej procedury ma jeden parametr Wymagane opcje– tablica identyfikatorów parametrów sesji do ustawienia. Ustawienia SesjiParametry nazywane również, gdy nawiązywane jest połączenie z baza informacji przed wywołaniem wszystkich innych obsługi. W tym przypadku Wymagane opcje będzie równy Nieokreślony.
Zaleca się użycie inicjalizacji odroczonej (leniwej), to znaczy inicjowanie parametrów sesji na żądanie, a nie podczas uruchamiania systemu, ponieważ nie wszystkie parametry sesji są wymagane bezpośrednio podczas uruchamiania systemu. Inicjalizacja z opóźnieniem odbywa się w następujący sposób:
Procedura SettingSessionParameters(SessionParameterNames) Jeśli SessionParameterNames jest niezdefiniowane Then IfParameterName = "CurrentUser" Then SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" Then SessionParameters.CurrentOrganization = ; // itd. EndIf; EndIf; EndProcedurevalue>value>>Ponieważ parametr sesji jest powiązany z sesją, nie będzie można uzyskać dostępu do parametru sesji z metody działającej w tle, ponieważ będzie to inna sesja. Ten niuans może być niespodzianką, więc najlepiej jest się na niego wcześniej przygotować, przekazując żądaną wartość jako parametr metody i inicjując z parametru sesji na początku procedury.