Menu
Jest wolny
rejestracja
Dom  /  Internet/ 1s 8.3 określają aktualnego użytkownika na kliencie.

1c 8.3 zdefiniować bieżącego użytkownika na kliencie.

  • AKTUALNE WYDANIA 1C
  • PRZYKŁADY KODU NA PLATFORMIE 1C
Role, prawa dostępu w 1C 8.x
Skąd mam wiedzieć, czy dana rola jest dostępna dla bieżącego użytkownika?
Jeśli No RoleAvailable („Menedżer”), to zgłoś („Żądania przeglądania od kupujących są niedozwolone!”); EndIf;
Jak uzyskać informacje o rolach konfiguracyjnych?
FunctionPossibleConfigurationPossibleRoles () RoleList = newList of Values; RolesConfigurations = Metadata.Roles; Dla każdej roli z cyklu RoleConfiguration Role List.Add (Role.Name); Koniec cyklu; Lista ról zwrotnych; Funkcja końcowa
Jak mogę wykonać kod bez sprawdzania uprawnień?
1. Użyj uprzywilejowanego modułu. 2. Umieszczenie kodu programu, który musi być wykonany BEZ KONTROLI OGRANICZEŃ, we wspólnym module z ustawioną w module flagą UPRAWNIONY. Użyj uprzywilejowanego trybu wykonywania kodu programu Podobny do trybu działania kodu uprzywilejowanych modułów. Tryb można włączyć / wyłączyć za pomocą wbudowanego języka: Ustaw preferowany tryb (<Включить>) 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, którzy nie mają dostępu do tych danych. Zaleca się korzystanie z trybu uprzywilejowanego, gdy z logicznego punktu widzenia musisz wyłączyć sprawdzanie uprawnień lub gdy możesz wyłączyć sprawdzanie uprawnień, aby przyspieszyć pracę. 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 dokładniejsze 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 wielofirmowej i jeden z ... 3
Począwszy od platformy 8.0 systemu 1C Enterprise, możliwe jest ograniczenie praw dostępu użytkowników na poziomie rekordu. W tym celu wykorzystywany jest mechanizm RLS (Record Level Security). Takie „dostrojenie” może być… 3
Często spotykam się z pytaniami związanymi z tworzeniem oprogramowania i konfiguracją praw użytkownika. W tym artykule przedstawię przykłady aplikacji Normalnych 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 stworzony nowy interfejs...

Rozważ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 osobliwością jest to, że można się do niej odwoływać z dowolnego miejsca w programie, a w 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 są specyficzne dla platformy. Ich lista jest dość obszerna, ale nawet jeśli ta lista nie zawiera tej, której potrzebujesz, zawsze możesz serializować wartość i przechowywać ją w parametrze jako ciąg.
  • Prawa do niego, podobnie jak do każdego innego obiektu metadanych, mogą być ograniczone do ról (zarówno do pisania, jak i do czytania). Jednocześnie istnieje osobliwość używania go w RLS, ale zostanie to opisane poniżej.
  • Ma limit ilości danych serializowanych, które można umieścić. Ich objętość nie powinna przekraczać 4 GB.

Jeżeli typ parametru sesji to:

  • Stała tablica
  • Naprawiono kolekcję
  • Naprawiono strukturę

Wtedy wartość przedmiotu kolekcji może być Nieokreślony.

Głównym zakresem parametrów jest zastosowanie ich wartości w żądaniach RLS (record-level access restrykcje).

Na przykład musimy ustawić warunek dla bieżącego użytkownika w żądaniu RLS. W tym celu należy ustawić parametr sesji „CurrentUser”, ustawić wartość z wbudowanego kodu języka:

Parametry sesji.CurrentUser =<значение>

Table.User = & CurrentUser

Takie użycie parametru sesji nie uwzględnia uprawnień odczytu parametru, ale możesz spróbować uzyskać ich wartość z języka osadzonego:

CurrentUser = SessionParameters.CurrentUser;


Parametr sesji, czyli jego wartość, można ustawić tylko programowo i tylko na serwerze. Aby to zrobić, musisz wywołać procedurę serwera od klienta. Podczas uzyskiwania dostępu do parametru sesji (set, get), jeśli parametr nie jest zainicjowany, zostanie wywołana procedura Ustawienia SesjiParametry w module sesji. Ta procedura ma jeden parametr. Wymagane parametry- tablica ustawionych identyfikatorów parametrów sesji. Ustawienia SesjiParametry Jest również wywoływana, gdy połączenie z bazą danych jest nawiązywane, zanim wszystkie inne procedury obsługi zostaną wywołane. W tym przypadku Wymagane parametry 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) If SessionParameterNames są niezdefiniowane Then If ParameterName = "CurrentUser" Then SessionParameters.CurrentUser =; OtherIf ParameterName = "CurrentOrganization" Then SessionParameters.CurrentOrganization =; // itd. EndIf; EndIf; EndProcedure wartość> wartość >>

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 już inna sesja. Ten niuans może być niespodzianką, dlatego lepiej jest się do niego wcześniej przygotować, przekazując żądaną wartość jako parametr metody i inicjując ją z parametru sesji na początku procedury.

Sesje parametrów 1C 8.3- zmienna przechowująca wartość wymaganego 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 sesji”. Jeśli parametr nie zostanie zdefiniowany, podczas wywołania zostanie zgłoszony błąd.

Przykład ustawienia parametru sesji 1C

Spójrzmy na typowy przypadek użycia parametrów sesji - ustawienie bieżącego użytkownika. Wezmę przykład z przygotowań do.

W drzewie metadanych utwórz nowy parametr sesji - CurrentUser, przypisz mu typ - ReferenceLink.

Uzyskaj 267 samouczków wideo 1C za darmo:

W module sesji stworzymy procedurę, w której zostanie określony aktualny parametr sesji:

Kod procedury:

Procedura ustawiania parametrów sesji (RequiredParameters) // szukam fizycznych. twarz po nazwie użytkownika BieżącyUżytkownik = Katalogi. Osoby. FindByDesign (nazwa użytkownika ()); // jeśli nie znaleziono, utwórz nowy Jeśli bieżący użytkownik. Pusty () Następnie NewUser = Katalogi. Osoby. UtwórzElement (); Nowy użytkownik. Nazwa = NazwaUżytkownika (); Nowy użytkownik. Pisać (); BieżącyUżytkownik = NowyUżytkownik. Połączyć; EndIf; // przypisz parametrowi sesji CurrentUser link do referencji osób fizycznych Parametry sesji. BieżącyUżytkownik = BieżącyUżytkownik; Koniec procedury