Parametry sesji 1C 8.3- zmienna przechowująca wartość wymaganego parametru na 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, nie ma uniwersalnego interfejsu do ustawiania parametrów sesji w systemie. Zwykle są ustawiane podczas uruchamiania systemu, w „module sesji”. Jeśli parametr nie jest zdefiniowany, podczas wywołania tego parametru zostanie zgłoszony błąd.
Przykład ustawienia parametru sesji 1C
Przyjrzyjmy się typowemu przypadkowi użycia parametrów sesji - ustawieniu bieżącego użytkownika. Podam przykład z przygotowań do.
W drzewie metadanych utwórz nowy parametr sesji - CurrentUser, przypisz mu typ - ReferenceLink.
Pobierz bezpłatne samouczki wideo 267 1C:
W module sesji stworzymy procedurę, w której zostanie określony aktualny parametr sesji:
Kod procedury:
Procedura ustawiania SessionParameters (RequiredParameters) // szukam fizycznego. twarz według nazwy użytkownika CurrentUser \u003d Katalogi. Osoby indywidualne. FindByDesign (nazwa_użytkownika ()); // jeśli nie zostanie znaleziony, utwórz nowy Jeśli CurrentUser. Empty () Then NewUser \u003d Katalogi. Osoby indywidualne. CreateElement (); Nowy użytkownik. Nazwa \u003d nazwa_użytkownika (); Nowy użytkownik. Pisać (); CurrentUser \u003d NewUser. Połączyć; EndIf; // przypisz parametr sesji CurrentUser odsyłacz do referencji osób Parametry sesji. CurrentUser \u003d CurrentUser; Koniec proceduryParametry rozważane w 1C: Enterprise są prezentowane jako obiekt metadanych. Zasadniczo jest to nic innego jak zmienna globalna związana z bieżącą sesją.
Zmienna globalna to ta sama zmienna, co każda inna, ale jej cechą charakterystyczną jest to, że można się do niej odwoływać z dowolnego miejsca w programie, aw przypadku parametru sesji działa to tylko w ramach bieżącej sesji.
O ile parametr sesji jest obiektem metadanych, posiada pewne cechy:
- Może być określonego typu. Dozwolone typy zależą od platformy. Ich lista jest dość obszerna, ale nawet jeśli ta lista nie zawiera tej, której potrzebujesz, zawsze możesz serializować wartość i zapisać ją w parametrze jako ciąg.
- Prawa do niego, jak do każdego innego obiektu metadanych, można ograniczyć do ról (zarówno do pisania, jak i do czytania). Jednocześnie występuje osobliwość podczas używania go w RLS, ale zostanie to opisane poniżej.
- Ma ograniczenie ilości danych serializowanych, które można umieścić. Ich objętość nie powinna przekraczać 4 GB.
Jeśli typ parametru sesji to:
- FixedArray
- Naprawiono kolekcję
- Naprawiono konstrukcję
Wtedy wartość przedmiotu kolekcji może być Nieokreślony.
Głównym zakresem parametrów jest zastosowanie 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. Aby to zrobić, ustaw parametr sesji „CurrentUser”, ustaw wartość z wbudowanego kodu języka:
Opcje sesji.CurrentUser \u003d<значение>
Table.User \u003d & CurrentUser
To użycie parametru sesji nie bierze pod uwagę uprawnień do odczytu parametru, ale można spróbować uzyskać ich wartość z osadzonego języka:
CurrentUser \u003d SessionParameters.CurrentUser;
Parametr sesji, czyli jego wartość, można ustawić tylko programowo i tylko na serwerze. Aby to zrobić, klient będzie musiał wywołać procedurę serwera. Podczas uzyskiwania dostępu do parametru sesji (set, get), jeśli parametr nie jest zainicjowany, zostanie wywołana procedura SettingSessionParameters w module sesji. Ta procedura ma jeden parametr Wymagane parametry - tablica identyfikatorów zestawu parametrów sesji. SettingSessionParameters jest również wywoływana podczas nawiązywania połączenia z bazą danych przed wywołaniem wszystkich innych programów obsługi. W tym przypadku Wymagane parametry będą równe Nieokreślony.
Zalecane jest użycie odroczonej (leniwej) inicjalizacji, to znaczy inicjowanie parametrów sesji na żądanie, a nie przy uruchamianiu systemu, ponieważ nie wszystkie parametry sesji są wymagane natychmiast po uruchomieniu systemu. Leniwa inicjalizacja odbywa się w następujący sposób:
Procedura SettingSessionParameters (SessionParameterNames) Jeśli SessionParameterNames są niezdefiniowane Then If ParameterName \u003d "CurrentUser" Then SessionParameters.CurrentUser \u003d; ElseIf ParameterName \u003d "CurrentOrganization" Następnie SessionParameters.CurrentOrganization \u003d; // itd. EndIf; EndIf; Wartość EndProcedure\u003e wartość \u003e\u003ePonieważ 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ć zaskoczeniem, dlatego lepiej przygotować się na to wcześniej, przekazując żądaną wartość jako parametr metody i inicjując ją z parametru sesji na początku procedury.
- AKTUALNE WYDANIA 1C
- PRZYKŁADY KODU NA PLATFORMIE 1C
Role, prawa dostępu w 1C 8.x
Skąd mam wiedzieć, czy określona rola jest dostępna dla bieżącego użytkownika?
Jeśli żadna rola nie jest dostępna („Menedżer”) Następnie zgłoś („Wyświetlanie żądań od kupujących jest niedozwolone!”); EndIf;Jak uzyskać informacje o rolach konfiguracyjnych?
ConfigurationPossibleRoleList function () RoleList \u003d newList of Values; RolesConfigurations \u003d Metadata.Roles; Dla każdej roli z cyklu RoleConfiguration Lista ról.Add (Role.Name); Koniec cyklu; Lista ról zwrotnych; EndFunctionJak mogę wykonać kod bez sprawdzania uprawnień?
1. Skorzystaj z modułu uprzywilejowanego. 2. Umieszczenie kodu programu, który należy wykonać BEZ KONTROLI OGRANICZEŃ, we wspólnym module z ustawioną w module flagą PREFEROWANE. Korzystanie z 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: Ustaw preferowany tryb (<Включить>) Parametr<Включить> (wymagane) Typ: Boolean. Określa, czy tryb uprzywilejowany zostanie włączony: True - włącz tryb; Fałsz - wyłącz tryb. Funkcja PrivilegedMode () umożliwia określenie, czy tryb uprzywilejowany jest włączony, czy nie. Korzystanie z trybu uprzywilejowanego pozwala, po pierwsze, przyspieszyć pracę, gdyż 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 te dane nie są dostępne. Zaleca się korzystanie z trybu uprzywilejowanego, gdy z logicznego punktu widzenia konieczne jest wyłączenie sprawdzania uprawnień lub gdy można wyłączyć sprawdzanie uprawnień, aby przyspieszyć pracę. Korzystanie z trybu uprzywilejowanego jest dopuszczalne, 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 dostrojenie dostępu, z pomocą przychodzi mechanizm RLS - Record Level Security. Konfiguracja systemu 1C: Enterprise 8 była początkowo pozycjonowana 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 „dostrojenie” może być ...
3
Często napotykam pytania związane z tworzeniem oprogramowania i ustawieniami praw użytkownika. W tym artykule przedstawię przykłady normalnych i zarządzanych aplikacji, 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 stworzony nowy interfejs ...