1c 8.3 obține utilizatorul curent pe client. Cum să aflați dacă un anumit rol este disponibil pentru utilizatorul actual

Parametrii luați în considerare în 1C:Enterprise sunt prezentați ca obiect de metadate. În esență, nu este altceva decât o variabilă globală legată de sesiunea curentă.

O variabilă globală este aceeași variabilă ca oricare alta, dar particularitatea sa este că poate fi accesată de oriunde în program, iar în cazul unui parametru de sesiune, acesta funcționează numai în cadrul sesiunii curente.

Deoarece parametrul de sesiune este un obiect de metadate, are anumite caracteristici:

  • Poate fi de un anumit tip. Tipurile permise sunt specifice platformei. Lista acestora este destul de extinsă, dar chiar dacă această listă nu conține pe cea de care aveți nevoie, puteți oricând să serializați valoarea și să o stocați în parametru sub formă de șir.
  • Drepturile asupra acestuia, precum și asupra oricărui alt obiect de metadate, pot fi limitate de roluri (atât pentru scriere, cât și pentru citire). În același timp, există o particularitate atunci când îl utilizați în RLS, dar acest lucru va fi discutat mai jos.
  • Are o limită a cantității de date plasate în formă serializată. Volumul lor nu trebuie să depășească 4 GB.

Dacă tipul de parametru de sesiune:

  • FixedArray
  • FixedColelection
  • FixedStructure

Atunci valoarea elementului de colectare poate fi Nedefinit.

Zona principală a parametrilor este utilizarea valorilor acestora în solicitările RLS (restricția accesului la nivel de înregistrare).

De exemplu, trebuie să setăm o condiție pentru utilizatorul curent într-o solicitare RLS. Pentru a face acest lucru, setăm parametrul de sesiune „CurrentUser”, din codul limbajului încorporat, setăm valoarea:

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

Table.User = &CurrentUser

Utilizarea parametrului de sesiune în acest fel nu ține cont de drepturile de citire ale parametrului, dar puteți încerca să obțineți valoarea acestora din limbajul încorporat:

CurrentUser = SessionParameters.CurrentUser;


Puteți seta un parametru de sesiune, adică valoarea acestuia, numai în mod programatic și numai pe server. Pentru a face acest lucru, trebuie să apelați o procedură de server de la client. La accesarea unui parametru de sesiune (setare, obținere), dacă parametrul nu este inițializat, procedura va fi apelată SettingSessionParametersîn modulul de sesiune. Această procedură are un singur parametru Opțiuni necesare– o serie de identificatori de parametri de sesiune care urmează să fie setate. SettingSessionParameters este de asemenea apelat atunci când se stabilește o conexiune cu baza de informații înainte de a apela toți ceilalți handleri. În acest caz Opțiuni necesare va fi egal cu Nedefinit.

Se recomandă utilizarea inițializării amânate (leneșe), adică inițializarea parametrilor de sesiune la cerere și nu la pornirea sistemului, deoarece nu toți parametrii de sesiune sunt necesari direct la pornirea sistemului. Inițializarea leneșă se face astfel:

Procedură SettingSessionParameters(SessionParameterNames) Dacă SessionParameterNames este nedefinit, atunci IfParameterName = "CurrentUser" Apoi SessionParameters.CurrentUser = ; ElseIf ParameterName = " CurrentOrganization" Then SessionParameters.CurrentOrganization = ; // etc. EndIf; EndIf; EndProcedurevalue>valoare>>

Deoarece parametrul de sesiune este legat de sesiune, nu va fi posibil să accesați parametrul de sesiune dintr-o metodă care rulează în fundal, deoarece va fi o sesiune diferită. Această nuanță poate veni ca o surpriză, așa că cel mai bine este să vă pregătiți în avans, trecând valoarea dorită ca parametru de metodă și inițialând dintr-un parametru de sesiune la începutul procedurii.

5
Când este necesară o setare de acces mai precisă, mecanismul RLS - Record Level Security vine în ajutor. 1C: Enterprise System Configurations 8 a fost poziționat inițial ca un program pentru contabilitatea multi-companii și unul dintre... 3
Pornind de la platforma 8.0 a sistemului 1C Enterprise, este posibil să se restricționeze drepturile de acces ale utilizatorilor la nivel de înregistrare. Pentru aceasta se folosește mecanismul RLS (Record Level Security). O astfel de reglare „fină” poate fi... 3
Întâlnesc adesea întrebări legate de crearea programatică și configurarea drepturilor de utilizator. În acest articol, voi oferi exemple pentru aplicații standard și gestionate care creează în mod programatic un utilizator în... 2
Întrebare: Am adăugat un utilizator nou. Creez o nouă interfață (prin copierea celei existente) și specific această interfață ca principală pentru acest utilizator. Problema este că interfața nou creată...

  • VERSIUNI CURENTE 1C
  • EXEMPLE DE CODURI PE PLATFORMA 1C
Roluri, drepturi de acces în 1C 8.x
Cum pot afla dacă un anumit rol este disponibil utilizatorului actual?
If Not RoleAvailable("Manager") Then Report("Vizualizarea comenzilor de la cumpărători nu este permisă!"); EndIf;
Cum să obțineți informații despre rolurile de configurare?
Funcție Lista de roluri de configurare posibile() Listă de roluri = listă nouă de valori; ConfigRoles = Metadata.Roles; Pentru fiecare rol din bucla RoleConfiguration ListRoles.Add(Role.Name); EndCycle; Returnează lista de roluri; EndFunctions
Cum se execută codul fără a verifica drepturile?
1. Utilizați un modul privilegiat 2. Plasarea codului programului care trebuie executat FĂRĂ CONTROLUL RESTRICȚILOR într-un modul comun cu flag-ul PRIVILEGE setat pe modul. Utilizați modul privilegiat de execuție a codului de program Similar cu modul de funcționare a codului modulelor privilegiate. Modul poate fi activat/dezactivat folosind limbajul încorporat: SetPrivilegedMode(<Включить>) Parametru<Включить>(obligatoriu) Tip: boolean. Stabilește dacă modul privilegiat va fi activat: True - activați modul; Fals - dezactivați modul. funcția PrivilegedMode() vă permite să determinați dacă modul privilegiat este activat sau nu. Utilizarea modului privilegiat permite, în primul rând, accelerarea activității, deoarece nu vor exista restricții privind accesul la date, iar în al doilea rând, vă permite să efectuați operațiuni cu date în numele utilizatorilor cărora aceste date nu sunt disponibile. Modul privilegiat este recomandat atunci când este logic necesar să dezactivați verificările de permisiuni sau când puteți dezactiva verificările de permisiuni pentru a accelera lucrurile. Este permisă utilizarea modului privilegiat atunci când lucrul cu date în numele unui anumit utilizator nu încalcă drepturile de acces setate pentru acest utilizator.