1c 8.3 odgovorni trenutni korisnik. Kako saznati da li je određena uloga dostupna trenutnom korisniku

Parametri koji se razmatraju u 1C:Enterprise predstavljeni su kao objekt metapodataka. U suštini, to nije ništa drugo do globalna varijabla vezana za trenutnu sesiju.

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

Zbog parametar sesije je objekat metapodataka, ima određene karakteristike:

  • Može biti određene vrste. Dozvoljeni tipovi su specifični za platformu. Njihova lista je prilično opsežna, ali čak i ako ova lista ne sadrži onu koja vam je potrebna, uvijek možete serijalizirati vrijednost i pohraniti je u parametar kao string.
  • Prava na njega, kao i na bilo koji drugi objekat metapodataka, mogu biti ograničena ulogama (i za pisanje i za čitanje). U isto vrijeme, postoji posebnost 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 bi trebao prelaziti 4 GB.

Ako tip parametra sesije:

  • FixedArray
  • FixedCollection
  • FixedStructure

Tada vrijednost elementa kolekcije može biti Nedefinisano.

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

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

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

Tabela.Korisnik = &TrenutniKorisnik

Korišćenje parametra sesije na ovaj način ne uzima u obzir prava čitanja parametra, ali možete pokušati da dobijete njihovu vrednost iz ugrađenog jezika:

CurrentUser = SessionParameters.CurrentUser;


Možete postaviti parametar sesije, odnosno njegovu vrijednost, samo programski i samo na serveru. Da biste to učinili, morate pozvati serversku proceduru sa klijenta. Prilikom pristupa parametru sesije (podešavanje, dobivanje), ako parametar nije inicijaliziran, procedura će biti pozvana SettingSessionParameters u modulu sesije. Ova procedura ima jedan parametar Obavezne opcije– niz identifikatora parametara sesije koji treba postaviti. SettingSessionParameters poziva se i kada se uspostavi veza sa baza informacija prije nego pozove sve ostale rukovaoce. U ovom slučaju Obavezne opcijeće biti jednako Nedefinisano.

Preporučljivo je koristiti odloženu (lijenu) inicijalizaciju, odnosno inicijalizirati parametre sesije na zahtjev, a ne pri pokretanju sistema, jer nisu svi parametri sesije potrebni direktno pri pokretanju sistema. Lijena inicijalizacija se radi ovako:

Procedura SettingSessionParameters(SessionParameterNames) Ako je SessionParameterNames nedefinisano onda IfParameterName = "CurrentUser" Zatim SessionParameters.CurrentUser = ; ElseIf ParameterName = " CurrentOrganization" Zatim SessionParameters.CurrentOrganization = ; // itd. EndIf; EndIf; EndProcedurevalue>value>>

Pošto je parametar sesije vezan za sesiju, neće biti moguće pristupiti parametru sesije iz metode koja radi u pozadini, jer će to biti druga sesija. Ova nijansa može biti iznenađenje, pa je najbolje da se za nju pripremite unapred tako što ćete proslediti željenu vrednost kao parametar metode i inicijalizovati iz parametra sesije na početku procedure.

  • TRENUTNA IZDANJA 1C
  • PRIMJERI KODOVA NA 1C PLATFORMI
Uloge, prava pristupa u 1C 8.x
Kako mogu saznati da li je određena uloga dostupna trenutnom korisniku?
If Not RoleAvailable("Menadžer") Onda Report("Pregled naloga kupaca nije dozvoljen!"); EndIf;
Kako dobiti informacije o konfiguracijskim ulogama?
Funkcija Lista mogućih konfiguracionih uloga() Lista uloga = nova lista vrednosti; ConfigRoles = Metadata.Roles; Za svaku ulogu iz petlje RoleConfiguration ListRoles.Add(Role.Name); EndCycle; Povratna lista uloga; EndFunctions
Kako izvršiti kod bez provjere prava?
1. Koristite privilegirani modul 2. Postavljanje programski kod, koji treba da se izvrši BEZ KONTROLE OGRANIČENJA, u zajednički modul sa zastavicom PRIVILEGE postavljenom za modul. Koristiti privilegirani način izvršavanja programskog koda Slično načinu rada koda privilegiranih modula. Režim se može omogućiti/onemogućiti korištenjem ugrađenog jezika: SetPrivilegedMode(<Включить>) Parametar<Включить>(obavezno) Tip: Boolean. Određuje da li će privilegovani režim biti omogućen: True - omogući režim; Netačno - isključite režim. funkcija PrivilegedMode() vam omogućava da odredite da li je privilegirani način omogućen ili ne. Korištenje privilegiranog načina rada omogućava, prvo, ubrzanje rada, jer neće biti ograničenja u pristupu podacima, a drugo, omogućava vam da obavljate operacije s podacima u ime korisnika kojima ovi podaci nisu dostupni. Privilegirani način rada se preporučuje kada je logično potrebno isključiti provjere dozvola ili kada možete isključiti provjere dozvola da biste ubrzali stvari. Dozvoljeno je korištenje privilegovanog načina rada kada rad sa podacima u ime određenog korisnika ne krši prava pristupa postavljena za ovog korisnika.

Parametri sesije 1C 8.3- varijabla koja pohranjuje vrijednost željeni parametar za vrijeme trajanja korisničke sesije. U stvari, ovo je neka vrsta globalne varijable vezane za sesiju trenutnog korisnika.

Korištenje parametara sesije u 1C

Parametri sesije se postavljaju samo programski; ne postoji univerzalni interfejs za podešavanje parametara sesije u sistemu. Obično se postavljaju pri pokretanju sistema, u "Session modulu". Ako parametar nije definiran, pojavit će se greška prilikom pristupanja.

Primjer postavljanja parametra sesije 1C

Pogledajmo tipičan slučaj upotrebe parametara sesije - postavljanje trenutnog korisnika. Uzet ću primjer iz priprema za .

U stablu metapodataka napravimo novi parametar sesije - CurrentUser, dodijelimo mu tip - DirectoryReference.Individuals:

Nabavite 267 1C video lekcija besplatno:

U modulu sesije, napravimo proceduru koja će odrediti parametar trenutne sesije:

Šifra procedure:

Procedura SettingSessionParameters(RequiredParameters) //tražimo fizičke. lice po korisničkom imenu CurrentUser = Direktoriji. Pojedinci. FindByName(UserName() ) ; // ako nije pronađen, kreirajte novi Ako CurrentUser. Empty() Zatim NewUser = Direktoriji. Pojedinci. CreateElement() ; Novi korisnik. Ime = Korisničko ime() ; Novi korisnik. Pisati() ; Trenutni korisnik = Novi korisnik. Veza; EndIf ; //dodijelite parametru sesije CurrentUser vezu na direktorij pojedinaca SessionParameters. TrenutniKorisnik = TrenutniKorisnik; EndProcedure

Učitavanje...
Top