Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 8
  • Ograničavanje pristupa podacima 1c 8. Korištenje RLS-a

Ograničavanje pristupa podacima 1c 8. Korištenje RLS-a

U sistemu 1C Enterprise 8, danas ćemo nastaviti proučavati mehanizam prava i dalje ući u RLS mehanizam (ograničenje prava na nivou zapisa).

U nastavku ćemo razmotriti prednosti i nedostatke ove metode i razmotriti postavljanje RLS-a u 1C Enterprise 8.3 koristeći primjer.

1C RLS (Record Level Security) ili ograničenje prava na nivou snimanja- ovo su korisnička prava u 1C sistemu, koji vam omogućava da podijelite prava za korisnike u kontekstu podataka koji se dinamički mijenjaju.

Najčešći tip 1C RLS podešavanja je ograničavanje vidljivosti korisnika u smislu organizacija ili klijenata (korisnik vidi samo "svoje" podatke).

Glavna prednost je prisustvo mehanizma općenito, mehanizam je prilično složen i zanimljiv. Omogućava vam da vrlo fino razlikujete prava korisnika - korisnici možda nisu ni svjesni postojanja drugih podataka u sistemu.

Nedostaci 1C 8 RLS

Među nedostacima se može primijetiti primjetan pad performansi sistema. To je zato što platforma, kada gradi upit u bazi podataka, komplicira svaki upit programera s dodatnim uvjetima.

Takođe među nedostacima je složenost podešavanja ove funkcionalnosti i složenost otklanjanja grešaka. 1C je objavio vrlo malo materijala o postavljanju i radu ove funkcionalnosti. Prilično je teško pronaći stručnjaka koji bi ispravno postavio mehanizam.

Konfiguriranje ograničenja prava na razini 1C RLS zapisa

Ograničenje prava na nivou zapisa (RLS) se koristi za ograničavanje sljedećih vrsta prava:

  • Čitanje
  • Dodatak
  • Promjena
  • Odstranjivanje

Nabavite 267 1C video lekcija besplatno:

Izvana, postavljanje RLS-a (prava na nivou zapisa) je slično sastavljanju jednostavnog . Primjer predloška za ograničavanje pristupa vidljivosti dokumenata od strane klijenta iz zaglavlja dokumenta:

##Ako &Koristi ograničenja pristupa na nivou zapisa ##Onda

CurrentTable FROM #CurrentTable AS CurrentTable
LIJEVO PRIDRUŽENJE (IZABERITE DRUGAČIJE
CompositionGroup.Reference AS GroupUsers
OD
Directory.UsersGroups.UsersGroups AS Group Members
GDJE
CompositionGroup.User = &TrenutniKorisnik) AS GroupUsers
Softver (&UseAccessPermissionRestrictionsAtRecordLevel)
WHERE (&UseRecordLevelAccessPermissionRestrictions = FALSE
ILI (NE 1 V
(ODABRAJTE PRVI 1
1 AS Izbor polja
OD
Registar informacija Dodjela tipova pristupnih objekata AS Dodjela tipova objekata pristupa
GDJE
AssigningAccessObjectTypes.UserGroup = UserGroups.UserGroup
I IZBOR
WHEN AssigningAccessObjectTypes.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Contractors)
I CurrentTable.#Parameter(1) LINK Directory.Counterparties
A NE Trenutna tabela.#Parametar(1) = VRIJEDNOST(Catalog.Contractors.EmptyReference)
ONDA IZBOR
KADA 1 V
(ODABRAJTE PRVI 1
1
OD
Directory.Accounts AS Contractors
ON
Postavke prava pristupaUsers.AccessObject = Accounts.AccessGroupToAccount
I UserAccessRightsSettings.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Contractors)
I (SettingsAccessRightsUsers.User = AssignmentTypesAccessObjects.GroupUsers
ILI UserAccessRightsSettings.User = VALUE(Reference.UserGroups.AllUsers))
I UserAccessPermissionSettings.Record = TRUE
GDJE
Counterparties.Link = Trenutna tabela.#Parametar(1))
ONDA ISTINA
ELSE FALSE
KRAJ
ELSE TRUE
KRAJ = LAŽ))
A NE UserGroup.UserGroup JE NULL)
##EndIf

U stvari, ovaj upit se dodaje svaki put kada se upit postavi u tablicu "#CurrentTable". Iz čega se može zamisliti kakvo dodatno opterećenje nosi mehanizam ograničenja na nivou rekorda.

Kao što vidite, u zahtjevu postoje posebni parametri, na primjer "&UseRecordLevelAccessPermissionRestrictions". Ovi parametri u radaru se biraju iz metapodataka objekata - "". Po pravilu se postavljaju na početku korisničke sesije.

Konstruktor ograničenja pristupa podacima

Za praktičnost programera, 1C 8.3 ima poseban uslužni program koji će vam pomoći da konfigurirate radar - Konstruktor ograničenja pristupa podacima. Poziva se iz polja "Ograničenje pristupa". Kao što slijedi:

RLS- ovo je sposobnost programera da postavi uslov na tabele baze podataka za određene korisnike (korisničke grupe) i spreči ih da vide previše. Uslov je Bulovog tipa. Ako je vrijednost uvjeta istinita, tada se odobrava pristup, u suprotnom se odbija.

RLS se koristi istovremeno sa postavljanjem normalnih dozvola. Stoga, prije nego počnete konfigurirati RLS, morate distribuirati uobičajena prava na konfiguracijske objekte.

RLS se primjenjuje na sljedeće vrste prava pristupa:

  • Čitanje
  • Dodatak
  • Promjena
  • Odstranjivanje

Kako podesiti RLS

Pogledajmo jednostavan primjer postavljanja. Snimci ekrana su napravljeni na verziji 1C Enterprise 8.2 (8.2.9.356). Sintaksa tekstualnih šablona ograničenja opisana je u dokumentaciji za 8.2 u knjizi “Vodič za programere. Dio 1", tako da se nećemo zadržavati na tome.

Dakle, prvi korak je definiranje predložaka ograničenja za svaku postojeću ulogu.

Nakon toga, na osnovu navedenih šablona, ​​postavljaju se ograničenja za potrebne objekte. Da biste uredili tekst uvjeta, možete koristiti alat za izgradnju ograničenja pristupa podacima.

Za uređivanje više uloga, zgodno je upravljati kroz prozor "Sve uloge".

Možete koristiti prozor Ograničenja potpunog pristupa za kopiranje uslova u druge uloge. Predlošci u druge uloge mogu se kopirati samo ručno.

To je sve. Možete provjeriti rezultat.

Nedostaci korištenja RLS-a:

  1. Korištenje mehanizma ograničenja pristupa na razini zapisa dovodi do implicitnog povećanja tablica uključenih u upit, što može dovesti do grešaka u klijent-server načinu baze podataka.
  2. Za kontrolu pisanja, može biti teško ili nemoguće implementirati složenu logiku aplikacije. U takvim slučajevima, bolje je koristiti uslove u proceduri OnWrite().
  3. Pisanje uvjeta (zahtjeva) zahtijeva određenu kvalifikaciju programera.
  4. Dodatne poteškoće može stvoriti nemogućnost otklanjanja grešaka stanja (zahtjeva).

U tipičnim konfiguracijama, prava na nivou zapisa mogu se postaviti interaktivno za sljedeće objekte: organizacije, ugovarači, artikli zaliha, skladišta, odjeljenja, pojedinci, prijave kandidata i druge.

Treba imati na umu da su ograničenja prava pristupa na nivou zapisa prilično resursno intenzivan mehanizam, a što složenija ograničenja postavite, to će program raditi sporije, posebno s velikom bazom podataka.

Sve postavke korisničkih prava koje ćemo izvršiti u okviru ovog članka nalaze se u odjeljku 1C 8.3 "Administracija" - "Postavke korisnika i prava". Ovaj algoritam je sličan u većini konfiguracija na upravljanim obrascima. Kao primjer koristit će se program 1C Računovodstvo, ali se postavljanje prava u drugim programima (1C UT 11, 1C ZUP 3, 1C ERP) vrši na potpuno isti način.

Idemo na odjeljak "Korisnici" prozora postavki. Ovdje vidimo dvije hiperveze: "Korisnici" i "Postavke za prijavu". Prvi od njih vam omogućava da idete direktno na listu korisnika ove infobaze. Prije kreiranja novog korisnika, razmotrite moguća podešavanja za prijavu (hiperlink na desnoj strani).

U ovom obrascu za podešavanja možete podesiti složenost lozinke (najmanje 7 karaktera, obavezan sadržaj različitih tipova znakova itd.). Ovdje također možete odrediti dužinu lozinke, period njenog važenja i zabranu pristupa programu za korisnike koji nisu bili aktivni u određenom vremenskom periodu.

Sada možete ići direktno na dodavanje novog korisnika u 1C. To možete učiniti klikom na dugme "Kreiraj", kao što je prikazano na slici ispod.

Prije svega, naznačimo puno ime - "Antonov Dmitrij Petrovič" i izaberemo osobu iz odgovarajućeg imenika. Ovdje možete odrediti i odjel u kojem radi naš zaposlenik.

Korisničko ime "AntonovDP" je automatski zamijenjeno kao skraćenica za puno ime "Antonov Dmitry Petrovich". Postavite lozinku i autentifikaciju za 1C Enterprise. Ovdje također možete odrediti da li je ovom korisniku dozvoljeno da sam promijeni lozinku.

Pretpostavimo da želimo da Dmitry Petrovich Antonov bude dostupan na listi za odabir prilikom pokretanja ove baze podataka. Da biste to učinili, morate postaviti zastavicu na stavku "Prikaži na listi izbora". Kao rezultat toga, prozor za autorizaciju pri pokretanju programa će izgledati kao onaj prikazan na donjoj slici.

Obratimo pažnju na još jednu važnu postavku u korisničkom vodiču - "Prijava u program je dozvoljena." Ako kašnjenje nije podešeno, tada korisnik jednostavno neće moći ući u ovu bazu podataka.

Prava pristupa

Nakon popunjavanja svih podataka u korisničkoj kartici - Antonov Dmitrij Petrovič, zapisaćemo ih i nastaviti sa postavljanjem prava pristupa, kao što je prikazano na slici ispod.

Pred nama je otvorena lista prethodno unesenih u program pristupnih profila. Označite polja koja su obavezna.

Pristupite profilima grupe

Profili pristupne grupe mogu se konfigurisati iz glavnog obrasca za podešavanje korisnika i prava. Idite na odjeljak "Grupe za pristup" i kliknite na hipervezu "Profili grupe za pristup".

Kreirajmo novu grupu iz otvorene liste. U tabelarnom dijelu na kartici “Dozvoljene radnje (uloge)” potrebno je označiti kućice za one uloge koje će utjecati na prava pristupa korisnika uključenih u grupu koju kreiramo. Sve ove uloge se kreiraju i konfigurišu u konfiguratoru. Ne mogu se mijenjati ili kreirati iz korisničkog načina rada. Možete birati samo sa postojeće liste.

RLS: Ograničenje pristupa na nivou zapisa

Omogućava vam da fleksibilnije konfigurirate pristup podacima programa u određenim odjeljcima. Da biste ga aktivirali, postavite zastavicu na stavku istog imena u obrascu za podešavanja korisnika i prava.

Imajte na umu da omogućavanje ove postavke može negativno uticati na performanse sistema. Poenta je da RLS mehanizam mijenja sve zahtjeve u zavisnosti od postavljenih ograničenja.

Idemo na profil pristupne grupe "Test grupa" koji smo ranije kreirali. Slika ispod pokazuje da se nakon omogućavanja ograničenja pristupa na nivou zapisa pojavila dodatna kartica "Ograničenja pristupa".

Pretpostavimo da želimo da korisnici kojima je dodijeljena test grupa imaju pristup podacima za sve organizacije u ovoj bazi podataka, osim onih navedenih u profilu.

U gornjem dijelu tabele postavite ograničenje pristupa prema organizaciji. U donjem dijelu ćemo pojasniti da neće biti omogućen pristup podacima (dokumentima, imenicima itd.) za organizaciju Roga doo.

Osma verzija platforme 1C:Enterprise (danas 8.3) nosila je dosta izmjena u odnosu na „sedmorku“, među kojima je posebno bio istaknut mehanizam ograničavanja prava pristupa na nivou zapisa. Iako, teoretski, možete i bez toga, koristeći samo uloge, RLS vam omogućava fino podešavanje pristupa. Ali za ispravan rad ovog mehanizma, morate jasno razumjeti njegovu suštinu i imati dovoljno iskustva u razvoju u 1C.

Šta je RLS?

Suština ove funkcionalnosti leži u sposobnosti programera da spriječi određenog korisnika ili grupu korisnika da pristupe tabelama ili poljima tabela baze podataka. Obično se ograničenja koriste kako bi se spriječilo da korisnici 1C vide i uređuju povjerljive, tajne informacije, na primjer, ograničavajući zaposlenike kompanije koja je dio grupe da gledaju dokumente samo za svoju organizaciju. Takođe, mehanizam za ograničavanje prava pristupa na nivou zapisa može se koristiti za uklanjanje nepotrebnih informacija iz interfejsa.

Da biste mogli pisati zahtjeve za RLS ograničenja, morate kreirati ulogu ili preuzeti postojeću. RLS postavka u 1C 8.3 može se koristiti za sljedeće radnje korisnika:

  • Addition;
  • Reading;
  • Odstranjivanje;
  • Promjena.

Pored najširih mogućnosti za konfigurisanje pristupa, RLS ima i nedostatke:

  1. Zahtjevi za kvalifikaciju programera, budući da će upit morati biti napisan na ugrađenom jeziku, uzimajući u obzir pravila sintakse;
  2. Nemogućnost brzog otklanjanja grešaka u uslovima;
  3. Ograničene mogućnosti za opisivanje logike: previše složeni uslovi će i dalje morati da budu upisani u module dokumenata i direktorijuma;
  4. U klijent-server verziji baza podataka, moguć je implicitni rast tabela uključenih u upit. Štaviše, veoma je teško pratiti ovaj proces;
  5. zahtjevi za resursima. RLS ograničenja troše mnogo energije klijenta i servera;
  6. Malo dokumentacije je besplatno dostupno.

Drugi problem koji može nastati nakon postavljanja 1C RLS-a mogu biti izvještaji. Činjenica je da programeri predviđaju moguća ograničenja RLS-a i grade izvještaje na takav način da prikazuju samo dozvoljene podatke. Ako korisnici imaju konfigurisana različita ograničenja RLS-a, tada podaci u izvještaju za iste parametre mogu biti različiti za njih. Ovo može dovesti do pitanja, pa kada dizajnirate izvještaje ili pišete upite u RLS-u, morate uzeti u obzir takve situacije.

Kreiranje RLS ograničenja

Da biste dodali RLS ograničenje, morate pronaći željenu ulogu i otvoriti je dvostrukim klikom.

Prozor koji se otvori sadrži 2 kartice: "Prava" i "Šabloni ograničenja". Da biste nametnuli određena ograničenja na određenu radnju, trebate je odabrati i kliknuti na zeleni plus u donjem desnom dijelu. Pojavit će se linija u kojoj možemo postaviti ograničenja 1C RLS u ugrađenom 1C jeziku.


Ako znate 1C sintaksu (kao nadlanicu), onda možete pisati direktno u polje "Ograničenje pristupa". 1C programeri su omogućili otvaranje konstruktora upita, koji će vam pomoći i reći na čemu se može postaviti ograničenje. Da biste ga otvorili, potrebno je da kliknete na dugme sa tri tačke (Select) ili F4 i pojaviće se prozor sa dugmetom „Kuery Builder...“.


U prozoru koji se pojavi možete konfigurirati ograničenja ne samo za ovaj direktorij, već i za druge sistemske objekte. Da biste to učinili, morate ih dodati na karticu "Tabele i polja". Propisujemo ograničenja u poljima priručnika "Nomenklatura" i kliknemo na "OK". Obratite pažnju na nazive varijabli: RLS parametri se postavljaju na početku korisničke sesije i moraju biti sadržani u objektu metapodataka.


Na kartici "Predlošci ograničenja" postavljaju se upiti koji su potrebni prilikom kopiranja istih postavki RLS-a u 1C 8.3. Nakon što dodate svoj šablon, možete koristiti njegovo ime u postavkama prava pristupa.

Također je moguće dodati ograničenja za nekoliko uloga u isto vrijeme. Da biste to učinili, u stablu konfiguracije desnom tipkom miša kliknite odjeljak "Uloge" i odaberite stavku "Sve uloge".


Kao zaključak, želio bih napomenuti da je ovaj članak namijenjen konsultantima 1C programera i može pomoći, prije svega, onima koji su već imali iskustva u razvoju na 1C: Enterprise. Uprkos prividnoj jednostavnosti, poznavanje semantike i razumijevanje strukture poslovnih procesa vlastitog poduzeća ili organizacije korisnika za pravilnu raspodjelu prava zahtijevaju određeni nivo znanja i iskustva.

Platforma 1C:Enterprise 8 ima ugrađeni mehanizam za ograničavanje pristupa podacima na nivou zapisa. Opće informacije o tome možete pročitati ovdje. Ukratko, RLS će vam omogućiti da ograničite pristup podacima prema nekim uvjetima na vrijednosti polja. Na primjer, možete ograničiti pristup korisnika dokumentima u zavisnosti od vrijednosti atributa "Organizacija". Neki korisnici će raditi sa dokumentima za organizaciju "Kompanija za upravljanje", a ostali za organizaciju "Mljekara". Kao primjer.

Trening

Primjer je implementiran u demonstracijskoj konfiguraciji SCP 1.3. Kreirajmo korisnika "Storekeeper" i dodajmo mu ulogu "Storekeeper" istog imena.

Sada idemo direktno na postavljanje prava pristupa na nivou zapisa. Prijeđimo na sučelje "Korisnička administracija". U glavnom meniju izaberite "Pristup na nivou zapisa -> Opcije". Ovdje čekiramo polje "Ograniči pristup na nivou zapisa prema vrstama objekata", a na listi objekata biramo "Organizacije".

Time smo omogućili korištenje RLS-a. Sada ga trebate podesiti.

Kontrola pristupa na nivou zapisa nije konfigurisana posebno za svakog korisnika ili profile dozvola. RLS je konfiguriran za korisničke grupe. Dodajmo novu korisničku grupu, nazovimo je "Skladištari"

Sastav grupe na desnoj strani obrasca prikazuje listu korisnika koji pripadaju ovoj grupi. Dodajmo korisnika kojeg smo kreirali ranije. Na lijevoj strani je tabela ograničenja pristupa. U postavci RLS-a odabrali smo da će pristup biti ograničen samo od strane organizacija, tako da vidimo samo jednu vrstu objekta pristupa. Kliknite na dugme "Postavke pristupa". Otvara se obrada za postavljanje dozvola za trenutnu grupu.

U listu objekata pristupa za grupu dodajte organizaciju "PPE "Preduzetnik"". Ostavićemo vrstu nasljeđivanja prava nepromijenjenom. Pravo na objekt pristupa će biti postavljeno za čitanje i pisanje. Kliknite "OK", postavke su spremne. Upravo smo postavili RLS na nivou organizacije.

Šta korisnik vidi

Pokrenite program pod prethodno kreiranim korisnikom i otvorite direktorij "Organizacije". Ovako će lista izgledati za našeg korisnika i za korisnika sa punim pravima:

Kao što vidimo, korisnik skladištara vidi samo jednu organizaciju za koju smo otvorili pristup za čitanje. Isto važi i za dokumente, kao što su primici robe i usluga.

Dakle, korisnik ne samo da neće vidjeti organizacije kojima pristup nije postavljen za njega, već neće moći ni čitati/pisati dokumente i druge objekte u bazi podataka, za koje su prava u ulozi na atributu " Organizacija" su postavljeni.

Razmotrili smo najjednostavniji primjer postavljanja RLS-a. U sljedećem članku ćemo govoriti o implementaciji RLS mehanizma u konfiguraciji "Upravljanje proizvodnim poduzećem" verzija 1.3.

Top Related Articles