Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • televizori (Smart TV)
  • 1s 8.3 dobiti trenutnog korisnika na klijentu. Kako dobiti informacije o konfiguracijskim ulogama

1s 8.3 dobiti trenutnog korisnika na klijentu. Kako dobiti informacije o konfiguracijskim ulogama

5
Kada je potreban precizniji pristup, mehanizam RLS - Record Level Security dolazi u pomoć. Sistemske konfiguracije "1C:Enterprise" 8 je prvobitno pozicioniran kao program za višekompanijsko računovodstvo, a jedan od... 3
Počevši od platforme 8.0 sistema 1C Enterprise, moguće je ograničiti prava pristupa korisnika na nivou zapisa. U tu svrhu koristi se mehanizam RLS (Record Level Security). Takvo "fino" podešavanje može biti... 3
Često nailazim na pitanja vezana za kreiranje softvera i postavljanje korisničkih prava. U ovom članku dat ću primjere za normalne i upravljane aplikacije koje programski kreiraju korisnika u... 2
Pitanje: Dodao sam novog korisnika. Kreiram novi interfejs (kopiranjem postojećeg) i specificiram ovaj interfejs kao glavni za ovog korisnika. Problem je što je novi interfejs kreiran...

  • TRENUTNA IZDANJA 1C
  • PRIMJERI KODOVA NA 1C PLATFORMI
Uloge, prava pristupa u 1C 8.x
Kako da znam da li je određena uloga dostupna trenutnom korisniku?
Ako uloga nije dostupna("Menadžer") Onda Report("Pregled zahtjeva klijenata nije dozvoljen!"); endIf;
Kako mogu dobiti informacije o konfiguracijskim ulogama?
Funkcija Lista mogućih RolesConfiguration() Lista uloga = nova lista vrijednosti; RolesConfiguration = Metadata.Roles; Za svaku ulogu iz RoleConfiguration Loop RoleList.Add(Role.Name); EndCycle; returnListRole; EndFunction
Kako izvršiti kod bez provjere dozvola?
1. Koristite privilegirani modul 2. Postavite programski kod koji se mora izvršiti 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 uključiti/isključiti pomoću 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() omogućava vam da odredite da li je privilegirani način rada omogućen ili ne. Korištenje privilegiranog načina rada omogućava, prvo, da se ubrza rad, jer neće biti nametnuti ograničenja pristupa 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 logično trebate onemogućiti provjeru dozvola ili kada možete onemogućiti provjeru dozvola da biste ubrzali stvari. Prihvatljivo je korištenje privilegovanog načina rada kada rad sa podacima u ime određenog korisnika ne krši prava pristupa koja su utvrđena za ovog korisnika.

Parametri koji se razmatraju u 1C:Enterprise predstavljeni su kao objekt metapodataka. U suštini, to nije ništa drugo do globalna varijabla koja je 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. Dozvoljene vrste određuju platforma. Njihova lista je prilično opsežna, ali čak i ako ova lista ne sadrži ono što vam je potrebno, 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 pisanje i čitanje). Međutim, postoji posebnost kada se koristi u RLS-u, ali o tome će biti riječi u nastavku.
  • Ima ograničenje količine podataka koji se mogu staviti u serijalizovani oblik. Njihov volumen ne bi trebao prelaziti 4 GB.

Ako je tip parametra sesije:

  • FixedArray
  • FixedCollection
  • FixedStructure

Tada bi vrijednost elementa kolekcije mogla biti Nedefinisano.

Glavno područje parametara je korištenje njihovih vrijednosti u RLS (Record Level Access Restriction) upitima.

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

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

Tabela.Korisnik = &TrenutniKorisnik

Kada koristite parametar sesije na ovaj način, dozvole za čitanje parametra se ne uzimaju u obzir, ali možete pokušati dobiti njihovu vrijednost 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, morat ćete pozvati serversku proceduru sa klijenta. Prilikom pristupa parametru sesije (postavljanje, primanje), ako parametar nije inicijaliziran, procedura će biti pozvana SettingSessionParameters u modulu sesije. Ova procedura ima jedan parametar Obavezni parametri– niz postavljenih identifikatora parametara sesije. SettingSessionParameters također se poziva prilikom uspostavljanja veze s info bazom prije pozivanja svih ostalih rukovatelja. U ovom slučaju Obavezni parametri biće jednaki 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(SessionParametersNames) Ako je SessionParametersNames nedefinisano, onda Ako ParameterName = "CurrentUser" Tada SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // itd. endIf; endIf; EndProcedurevalue>value>>

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

Parametri sesije 1C 8.3— varijabla koja pohranjuje vrijednost željenog parametra za vrijeme trajanja korisničke sesije. U suštini, 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 “Modulu sesije”. Ako parametar nije definiran, pojavit će se greška prilikom pristupa.

Primjer postavljanja parametra 1C sesije

Pogledajmo tipičan primjer korištenja parametara sesije - postavljanje trenutnog korisnika. Uzet ću primjer iz priprema za.

U stablu metapodataka ćemo kreirati novi parametar sesije - CurrentUser, dodijeliti mu tip - DirectoryLink.Individuals:

Nabavite 267 video lekcija na 1C besplatno:

U modulu sesije kreiraćemo proceduru u kojoj će se odrediti parametar trenutne sesije:

Šifra procedure:

Procedura Postavljanje parametara sesije (obavezni parametri) // traži fizičku osoba po korisničkom imenu TechUser = Direktoriji. Pojedinci. FindByName(UserName()) ; //ako nije pronađen, kreirajte novi Ako TechUser. Empty() Zatim NewUser = Direktoriji. Pojedinci. CreateItem() ; Novi korisnik. Ime = Korisničko ime() ; Novi korisnik. Pisati() ; Trenutni korisnik = Novi korisnik. Veza; EndIf ; //dodijelite parametru sesije CurrentUser vezu do direktorija pojedinaca Parametri sesije. TrenutniKorisnik = TrenutniKorisnik; Kraj procedure

Najbolji članci na ovu temu