1c 8.3 përdorues aktual përgjegjës. Si të zbuloni nëse një rol i caktuar është i disponueshëm për përdoruesin aktual

Parametrat në shqyrtim në 1C: Enterprise paraqiten si një objekt meta të dhënash. Në thelb, nuk është asgjë më shumë se një ndryshore globale e lidhur me sesionin aktual.

Një ndryshore globale është e njëjta ndryshore si çdo tjetër, por e veçanta e saj është se mund të aksesohet nga kudo në program, dhe në rastin e një parametri sesioni, kjo funksionon vetëm brenda sesionit aktual.

Për aq sa parametri i seancësështë një objekt metadata, ai ka veçori të caktuara:

  • Mund të jetë i një lloji të caktuar. Llojet e lejuara janë specifike për platformën. Lista e tyre është mjaft e gjerë, por edhe nëse kjo listë nuk përmban atë që ju nevojitet, gjithmonë mund ta serializoni vlerën dhe ta ruani atë në parametrin si varg.
  • Të drejtat për të, si dhe për çdo objekt tjetër të meta të dhënave, mund të kufizohen nga rolet (si për shkrim ashtu edhe për lexim). Në të njëjtën kohë, ekziston një veçanti kur përdoret në RLS, por kjo do të diskutohet më poshtë.
  • Ka një kufi në sasinë e të dhënave të vendosura në formë të serializuar. Vëllimi i tyre nuk duhet të kalojë 4 GB.

Nëse lloji i parametrit të sesionit:

  • FixedArray
  • Koleksioni Fiks
  • Struktura e fiksuar

Atëherë vlera e elementit të mbledhjes mund të jetë E papërcaktuar.

Fusha kryesore e parametrave është përdorimi i vlerave të tyre në kërkesat RLS (kufizimi i aksesit në nivel rekord).

Për shembull, ne duhet të vendosim një kusht për përdoruesin aktual në një kërkesë RLS. Për ta bërë këtë, ne vendosëm parametrin e sesionit "CurrentUser", nga kodi i gjuhës së integruar, vendosim vlerën:

Parametrat e sesionit.Përdoruesi aktual =<значение>

Tabela.Përdoruesi = &Përdoruesi aktual

Përdorimi i parametrit të sesionit në këtë mënyrë nuk merr parasysh të drejtat për të lexuar parametrin, por mund të përpiqeni të merrni vlerën e tyre nga gjuha e integruar:

CurrentUser = SessionParameters.CurrentUser;


Ju mund të vendosni një parametër sesioni, domethënë vlerën e tij, vetëm programatikisht dhe vetëm në server. Për ta bërë këtë, duhet të telefononi një procedurë serveri nga klienti. Kur aksesoni një parametër sesioni (vendosje, marrja), nëse parametri nuk inicializohet, procedura do të thirret SettingSessionParameters në modulin e sesionit. Kjo procedurë ka një parametër Opsionet e kërkuara– do të vendoset një grup identifikuesish të parametrave të sesionit. SettingSessionParameters quhet edhe kur vendoset një lidhje me bazë informacioni përpara se të telefononi të gjithë operatorët e tjerë. Në këtë rast Opsionet e kërkuara do të jetë e barabartë me E papërcaktuar.

Rekomandohet të përdorni inicializimin dembel (dembel), domethënë të inicializoni parametrat e sesionit sipas kërkesës, dhe jo në fillimin e sistemit, pasi jo të gjithë parametrat e sesionit kërkohen drejtpërdrejt në fillimin e sistemit. Inicializimi dembel bëhet si kjo:

Procedura SettingSessionParameters(SessionParameterNames) Nëse SessionParameterNames është i padefinuar atëherë IfParameterName = "CurrentUser" Pastaj SessionParameters.CurrentUser = ; ElseIf ParameterName = "Organizimi aktual" Pastaj SessionParameters.CurrentOrganization = ; // etj. FundNëse; FundNëse; EndProcedurevalue>vlera>>

Meqenëse parametri i sesionit është i lidhur me seancën, nuk do të jetë e mundur të aksesoni parametrin e sesionit nga një metodë që ekzekutohet në sfond, pasi do të jetë një sesion tjetër. Kjo nuancë mund të jetë befasuese, prandaj është më mirë të përgatiteni për të paraprakisht duke kaluar vlerën e dëshiruar si parametër të metodës dhe duke inicializuar nga një parametër sesioni në fillim të procedurës.

  • LAJMET AKTUALE 1C
  • SHEMBUJ KODI NË PLATFORMËN 1C
Rolet, të drejtat e aksesit në 1C 8.x
Si mund të zbuloj nëse një rol i caktuar është i disponueshëm për përdoruesin aktual?
Nëse nuk është RoleAvailable ("Menaxheri") Pastaj Raportoni ("Shikimi i porosive nga blerësit nuk lejohet!"); FundNëse;
Si të merrni informacion në lidhje me rolet e konfigurimit?
Lista e funksioneve të roleve të konfigurimit të mundshëm() Lista e roleve = Lista e re e vlerave; ConfigRoles = Metadata.Rolet; Për çdo Rol nga RoleConfiguration Loop ListRoles.Add(Role.Name); Cikli i Fundit; Lista e roleve të kthimit; Funksionet e Fundit
Si të ekzekutoni kodin pa kontrolluar të drejtat?
1. Përdorni modulin e privilegjuar 2. Vendosjen kodi i programit, i cili duhet të ekzekutohet PA KONTROLL KUFIZIME, në një modul të përbashkët me flamurin PRIVILEGE të vendosur për modulin. Përdorni mënyrën e privilegjuar të ekzekutimit të kodit të programit Ngjashëm me mënyrën e funksionimit të kodit të moduleve të privilegjuara. Modaliteti mund të aktivizohet/çaktivizohet duke përdorur gjuhën e integruar: SetPrivilegedMode(<Включить>) Parametri<Включить>(kërkohet) Lloji: Boolean. Përcakton nëse modaliteti i privilegjuar do të aktivizohet: E vërtetë - aktivizo modalitetin; E rreme - fik modalitetin. funksioni PrivilegedMode() ju lejon të përcaktoni nëse modaliteti i privilegjuar është i aktivizuar apo jo. Përdorimi i modalitetit të privilegjuar lejon, së pari, të shpejtoni punën, pasi nuk do të ketë kufizime në aksesin në të dhëna, dhe së dyti, ju lejon të kryeni operacione me të dhëna në emër të përdoruesve për të cilët këto të dhëna nuk janë të disponueshme. Modaliteti i privilegjuar rekomandohet kur, nga pikëpamja logjike, duhet të çaktivizoni kontrollin e lejeve ose kur mund të çaktivizoni kontrollin e lejeve për të shpejtuar punën. Lejohet përdorimi i modalitetit të privilegjuar kur puna me të dhëna në emër të një përdoruesi të caktuar nuk cenon të drejtat e aksesit të vendosura për këtë përdorues.

Parametrat e sesionit 1C 8.3- një variabël që ruan vlerën parametri i dëshiruar për kohëzgjatjen e sesionit të përdoruesit. Në fakt, ky është një lloj variabli global i lidhur me sesionin e përdoruesit aktual.

Përdorimi i parametrave të sesionit në 1C

Parametrat e sesionit vendosen vetëm në mënyrë programore; nuk ka asnjë ndërfaqe universale për vendosjen e parametrave të sesionit në sistem. Zakonisht ato vendosen në fillimin e sistemit, në "Modulin e Sesionit". Nëse parametri nuk është i përcaktuar, do të shfaqet një gabim gjatë qasjes në të.

Një shembull i vendosjes së parametrit të sesionit 1C

Le të shohim një rast tipik përdorimi për parametrat e sesionit - vendosja e përdoruesit aktual. Do të marr një shembull nga përgatitja për .

Në pemën e meta të dhënave, krijoni një parametër të ri të sesionit - CurrentUser, caktoni një lloj në të - DirectoryReference.Individuals:

Merrni mësime video 267 1C falas:

Në modulin e sesionit, le të krijojmë një procedurë që do të përcaktojë parametrin aktual të sesionit:

Kodi i procedurës:

Cilësimet e procedurës Parametrat e sesionit (Parametrat e kërkuar) //kërkojmë fizik. fytyrë sipas emrit të përdoruesit Përdoruesi aktual = Drejtoritë. Individët. FindByName(UserEmri() ); // nëse nuk gjendet, krijoni një të re Nëse Përdoruesi aktual. Empty() Pastaj NewUser = Drejtoritë. Individët. CreateElement(); Perdorues i ri. Emri = Emri i përdoruesit() ; Perdorues i ri. Shkruaj() ; Përdoruesi aktual = Përdoruesi i Ri. Lidhje; FundNëse; //cakto parametrin e sesionit CurrentUser një lidhje në drejtorinë e individëve Parametrat e sesionit. Përdoruesi aktual = Përdoruesi aktual; Procedura e Fundit

Po ngarkohet...
Top