DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

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 procedury

Parametry 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\u003e

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ć 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; EndFunction
Jak 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 ...

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu