Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • TV (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 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 konfiguraciju 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. Kreiram novo sučelje (kopiranjem postojećeg) i navodim ovo sučelje kao glavno za ovog korisnika. Problem je u tome što je novo sučelje stvorilo...

  • 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 omogućuje, prvo, ubrzavanje 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 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 je njezina posebnost što 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. Popis njih je prilično opsežan, ali čak i ako ovaj popis ne sadrži ono što vam je potrebno, 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 biste to učinili, postavite parametar sesije “CurrentUser” i postavite vrijednost iz koda ugrađenog jezika:

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 također se poziva prilikom uspostavljanja veze s informacijskom bazom 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, budući da 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 sesija. Ova nijansa može biti iznenađenje, pa je bolje pripremiti se unaprijed prosljeđivanjem željene vrijednosti kao parametra metode i inicijaliziranjem iz parametra sesije na početku postupka.

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

Korištenje parametara sesije u 1C

Parametri sesije postavljaju se samo programski; u sustavu ne postoji univerzalno sučelje za postavljanje parametara sesije. 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 poveznicu na imenik pojedinaca Parametri sesije. TrenutniKorisnik = TrenutniKorisnik; EndProcedure

Najbolji članci na temu