1c prima trenutnog korisnika na klijentu

5
Kada je potreban precizniji pristup, on dolazi u pomoć RLS mehanizam- Sigurnost rekordnog nivoa. 3
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... Često nailazim na pitanja u vezi kreiranje softvera i podešavanja korisničkih prava. U ovom članku dat ću primjere za Normal i Upravljane aplikacije 2
, koji programski kreiraju korisnika u...

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... 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.

  • Dozvoljene vrste određuju platforma. Njihova lista je prilično opsežna, ali čak i ako postoji
  • ovu listu nema potrebe za vama, uvijek možete serijalizirati vrijednost i pohraniti je u parametar kao string.

Prava na njega, kao i na bilo koji drugi objekt 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 biti veći od 4 GB.

Ako je tip parametra sesije: FixedArray

FixedCollection

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 poziva se i prilikom uspostavljanja veze sa baza informacija prije nego pozove sve ostale rukovaoce. U ovom slučaju Obavezni parametri biće jednaki FixedArray

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.
TRENUTNA IZDANJA 1C
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. Postavljanje<Включить>programski kod<Включить>, koji se mora izvršiti BEZ KONTROLE OGRANIČENJA, u

zajednički modul sa postavljenom zastavicom PRIVILEGE modula.

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 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

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() ; NewUser. Ime = Korisničko ime() ; NewUser. Write() ; Bluetooth