Dobijte trenutnog korisnika 1s 8.3 klijenta. Kako dobiti informacije o konfiguracijskim ulogama

25.01.2021 Vijesti

  • TRENUTNA IZDANJA 1C
  • PRIMJERI KODOVA NA 1C PLATFORMI
Uloge, prava pristupa u 1C 8.x
Kako mogu znati je li određena uloga dostupna trenutnom korisniku?
If Not RoleAvailable("Manager") Then Report("Pregled zahtjeva kupaca nije dopušten!"); završi ako;
Kako mogu dobiti informacije o konfiguracijskim ulogama?
Funkcija Popis mogućih uloga Konfiguracija() Popis uloga = novi Popis vrijednosti; RolesConfiguration = Metadata.Roles; Za svaku ulogu iz RoleConfiguration Loop RoleList.Add(Role.Name); EndCycle; returnListRole; EndFunction
Kako izvršiti kod bez provjere dopuštenja?
1. Koristite privilegirani modul 2. Postavljanje programskog koda koji se mora izvršavati BEZ KONTROLE OGRANIČENJA u zajedničkom modulu s postavljenom zastavicom PRIVILEGE za modul. Koristite povlašteni način izvršavanja programskog koda Slično načinu rada koda povlaštenih modula. Način se može uključiti/isključ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 rada omogućuje, prvo, ubrzanje rada, budući da ograničenja pristupa podacima neće biti nametnuta, 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 logično morate onemogućiti provjeru dopuštenja ili kada možete onemogućiti provjeru dopuštenja da biste ubrzali stvari. Prihvatljivo je koristiti povlašteni način rada kada rad s podacima u ime određenog korisnika ne krši prava pristupa utvrđena za tog korisnika.

Parametri sesije 1C 8.3— varijabla koja pohranjuje vrijednost željenog parametra za vrijeme trajanja korisničke sesije. U biti, ovo je neka vrsta globalne varijable vezane uz sesiju trenutnog korisnika.

Korištenje parametara sesije u 1C

Parametri sesije se postavljaju samo programski, ne postoji univerzalno sučelje za podešavanje parametara sesije u sustavu. Obično se postavljaju pri pokretanju sustava, u "Modulu sesije". Ako parametar nije definiran, prilikom pristupanja pojavit će se pogreška.

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 stvorit ćemo novi parametar sesije - CurrentUser, dodijeliti mu vrstu - DirectoryLink.Individuals:

Besplatno nabavite 267 video lekcija o 1C:

U modulu sesije kreirat ćemo proceduru u kojoj će se odrediti trenutni parametar sesije:

Šifra postupka:

Postupak Postavljanje parametara sesije (obavezni parametri) // traži tjelesni osoba po korisničkom imenu TechUser = Imenici. Pojedinci. FindByName(KorisničkoIme()) ; //ako nije pronađen, stvori novi Ako TechUser. Empty() Zatim NewUser = Imenici. Pojedinci. StvoriStavku() ; Novi korisnik. Ime = Korisničko Ime() ; Novi korisnik. Write() ; Trenutni korisnik = novi korisnik. Veza; Završi ako ; //dodijelite parametru sesije CurrentUser vezu na direktorij pojedinaca Parametri sesije. TrenutniKorisnik = TrenutniKorisnik; Kraj postupka

5
Kada je potreban fino podešen pristup, RLS - Record Level Security mehanizam dolazi u pomoć. Konfiguracije sustava "1C:Enterprise" 8 u početku je pozicioniran kao program za računovodstvo više tvrtki, a jedan od... 3
Počevši od platforme 8.0 sustava 1C Enterprise, moguće je ograničiti korisnička prava pristupa na razini zapisa. U tu svrhu koristi se mehanizam RLS (Record Level Security). Takvo "fino" ugađanje može biti... 3
Često nailazim na pitanja vezana uz izradu softvera i postavljanje korisničkih prava. U ovom ću članku dati primjere za normalne i upravljane aplikacije koje programski stvaraju korisnika u... 2
Pitanje: Dodao sam novog korisnika. ja stvaram novo sučelje(kopiranjem postojećeg) i navedite ovo sučelje kao glavno za ovog korisnika. Problem je u tome što je novo sučelje stvorilo...

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

Globalna varijabla je ista varijabla kao i svaka druga, ali njena posebnost je 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 određene su platformom. Njihov popis je prilično opsežan, ali čak i ako u ovaj popis nema potrebe za vama, 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 (pisanje i čitanje). Međutim, postoji osobitost 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 serijalizirani oblik. Njihov volumen ne smije biti veći od 4 GB.

Ako je tip parametra sesije:

  • FixedArray
  • FixedCollection
  • Fiksna struktura

Tada bi vrijednost elementa zbirke mogla biti Nedefiniran.

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 ugrađenog jezičnog koda:

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

Table.User = &CurrentUser

Kada koristite parametar sesije na ovaj način, dopuštenja za čitanje parametra se ne uzimaju u obzir, 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, morat ćete pozvati proceduru poslužitelja s klijenta. Prilikom pristupa parametru sesije (postavljanje, primanje), ako parametar nije inicijaliziran, poziva se procedura Postavljanje parametara sesije u modulu sesije. Ovaj postupak ima jedan parametar Potrebni parametri– niz identifikatora postavljenih parametara sesije. Postavljanje parametara sesije naziva se i prilikom uspostavljanja veze sa informacijska baza prije pozivanja svih ostalih rukovatelja. U ovom slučaju Potrebni parametri bit će jednaki 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(SessionParametersNames) If SessionParametersNames is Undefined Then If ParameterName = "CurrentUser" Then SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // itd. završi ako; završi ako; EndProcedurevalue>vrijednost>>

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