1c 8.3 dobiti trenutnog korisnika na klijentu. Kako saznati je li određena uloga dostupna trenutnom korisniku

Parametri koji se razmatraju u 1C:Enterprise predstavljeni su kao objekt metapodataka. U biti, to nije ništa više od globalne varijable vezane za trenutnu sesiju.

Globalna varijabla je ista varijabla kao i svaka druga, ali joj je posebnost da joj se može pristupiti s bilo kojeg mjesta u programu, au slučaju parametra sesije, to radi samo unutar trenutne sesije.

Jer parametar sesije je objekt metapodataka, ima određene značajke:

  • Može biti određene vrste. Dopuštene vrste ovise o platformi. Popis njih je prilično opsežan, ali čak i ako ovaj popis ne sadrži onu koja vam je potrebna, uvijek možete serijalizirati vrijednost i pohraniti je u parametar kao niz.
  • Prava na njega, kao i na bilo koji drugi objekt metapodataka, mogu se ograničiti ulogama (i za pisanje i za čitanje). Istodobno, postoji osobitost kada se koristi u RLS-u, ali o tome će biti riječi u nastavku.
  • Ima ograničenje količine podataka smještenih u serijaliziranom obliku. Njihov volumen ne smije biti veći od 4 GB.

Ako je tip parametra sesije:

  • FixedArray
  • FixedCollection
  • Fiksna struktura

Tada vrijednost elementa zbirke može biti Nedefiniran.

Glavno područje parametara je korištenje njihovih vrijednosti u RLS zahtjevima (ograničenje pristupa na razini zapisa).

Na primjer, trebamo postaviti uvjet za trenutnog korisnika u RLS zahtjevu. Da bismo to učinili, postavili smo parametar sesije "CurrentUser", iz koda ugrađenog jezika, postavili vrijednost:

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

Table.User = &CurrentUser

Korištenje parametra sesije na ovaj način ne uzima u obzir prava čitanja parametra, ali možete pokušati dobiti njihovu vrijednost iz ugrađenog jezika:

CurrentUser = Parametri sesije.CurrentUser;


Parametar sesije, odnosno njegovu vrijednost možete postaviti samo programski i samo na poslužitelju. Da biste to učinili, morate pozvati poslužiteljsku proceduru s klijenta. Prilikom pristupanja parametru sesije (postavljanje, dobivanje), ako parametar nije inicijaliziran, poziva se procedura Postavljanje parametara sesije u modulu sesije. Ovaj postupak ima jedan parametar Obavezne opcije– niz identifikatora parametara sesije koje treba postaviti. Postavljanje parametara sesije također se poziva prilikom uspostavljanja veze s infobazom prije pozivanja svih ostalih rukovatelja. U ovom slučaju Obavezne opcije bit će jednako Nedefiniran.

Preporuča se koristiti odgođenu (lijenu) inicijalizaciju, odnosno inicijalizirati parametre sesije na zahtjev, a ne pri pokretanju sustava, jer nisu svi parametri sesije potrebni izravno pri pokretanju sustava. Lijena inicijalizacija radi se ovako:

Procedura SettingSessionParameters(SessionParameterNames) If SessionParameterNames is Undefined Then IfParameterName = "CurrentUser" Then SessionParameters.CurrentUser = ; ElseIf ParameterName = " CurrentOrganization" Then SessionParameters.CurrentOrganization = ; // itd. Završi ako; Završi ako; EndProcedurevalue>vrijednost>>

Budući da je parametar sesije vezan za sesiju, neće biti moguće pristupiti parametru sesije iz metode koja se izvodi u pozadini, jer će to biti drugačija sesija. Ova nijansa može biti iznenađenje, stoga je najbolje pripremiti se unaprijed prosljeđivanjem željene vrijednosti kao parametra metode i inicijalizacijom iz parametra sesije na početku postupka.

5
Kada je potrebna preciznija postavka pristupa, RLS - sigurnosni mehanizam na razini zapisa dolazi u pomoć. 1C:Enterprise System Configurations 8 izvorno je pozicioniran kao program za računovodstvo više tvrtki, a jedan je od... 3
Počevši od platforme 8.0 sustava 1C Enterprise, moguće je ograničiti korisnička prava pristupa na razini zapisa. Za to se koristi RLS (Record Level Security) mehanizam. Takvo "fino" ugađanje može biti... 3
Često se susrećem s pitanjima vezanim uz programsku izradu i postavljanje korisničkih prava. U ovom ću članku dati primjere za standardne i upravljane aplikacije koje programski stvaraju korisnika u ... 2
Pitanje: Dodao sam novog korisnika. Kreiram novo sučelje (kopiranjem postojećeg) i navodim ovo sučelje kao glavno za ovog korisnika. Problem je što novostvoreno sučelje...

  • TRENUTNA IZDANJA 1C
  • PRIMJERI KODOVA NA 1C PLATFORMI
Uloge, prava pristupa u 1C 8.x
Kako mogu saznati je li određena uloga dostupna trenutnom korisniku?
If Not RoleAvailable("Manager") Then Report("Pregled narudžbi kupaca nije dopušten!"); Završi ako;
Kako doći do informacija o konfiguracijskim ulogama?
Funkcija Popis mogućih konfiguracijskih uloga() Popis uloga = novi popis vrijednosti; ConfigRoles = Metadata.Roles; Za svaku ulogu iz RoleConfiguration Loop ListRoles.Add(Role.Name); EndCycle; Povratak popisa uloga; Završne funkcije
Kako izvršiti kod bez provjere prava?
1. Koristite privilegirani modul 2. Postavljanje programskog koda koji se mora izvršavati BEZ KONTROLE OGRANIČENJA u zajednički modul s oznakom PRIVILEGE postavljenom na modulu. Koristi povlašteni način izvršavanja programskog koda Slično načinu rada koda povlaštenih modula. Način se može omogućiti/onemogućiti pomoću ugrađenog jezika: SetPrivilegedMode(<Включить>) Parametar<Включить>(obavezno) Tip: Booleov. Određuje hoće li biti omogućen privilegirani način rada: True - omogući način rada; False - isključite način rada. funkcija PrivilegedMode() omogućuje vam da odredite je li povlašteni način rada omogućen ili ne. Korištenje povlaštenog načina omogućuje, prvo, ubrzanje rada, jer neće biti ograničenja u pristupu podacima, i drugo, omogućuje vam obavljanje operacija s podacima u ime korisnika kojima ti podaci nisu dostupni. Privilegirani način rada preporučuje se kada je logično potrebno isključiti provjere dopuštenja ili kada možete isključiti provjere dopuštenja kako biste ubrzali stvari. Dopušteno je koristiti povlašteni način rada kada rad s podacima u ime određenog korisnika ne krši prava pristupa postavljena za tog korisnika.