1c 8.3 felelős jelenlegi felhasználó. Hogyan lehet megtudni, hogy egy bizonyos szerepkör elérhető-e az aktuális felhasználó számára

Az 1C:Enterprise-ben figyelembe vett paraméterek metaadat-objektumként jelennek meg. Lényegében ez nem más, mint az aktuális munkamenethez kötött globális változó.

A globális változó ugyanaz, mint bármely más, de sajátossága, hogy a programban bárhonnan elérhető, és egy session paraméter esetén ez csak az aktuális munkameneten belül működik.

Mert a munkamenet paraméter egy metaadat objektum, rendelkezik bizonyos jellemzőkkel:

  • Lehet, hogy egy bizonyos típusú. Az engedélyezett típusok platformspecifikusak. Ezek listája meglehetősen kiterjedt, de még ha ez a lista nem is tartalmazza azt, amire szüksége van, az értéket mindig sorba rendezheti, és karakterláncként tárolhatja a paraméterben.
  • A hozzá, valamint bármely más metaadat-objektumhoz való jogokat szerepek korlátozhatják (mind írásra, mind olvasásra). Ugyanakkor van egy sajátosság az RLS-ben való használat során, de erről az alábbiakban lesz szó.
  • Korlátozott a soros formában elhelyezett adatok mennyisége. A kötet nem haladhatja meg a 4 GB-ot.

Ha a munkamenet paraméter típusa:

  • FixedArray
  • FixedCollection
  • FixedStructure

Ekkor a gyűjtőelem értéke lehet Határozatlan.

A paraméterek fő területe az értékük használata az RLS-kérésekben (a hozzáférés korlátozása rekordszinten).

Például be kell állítanunk egy feltételt az aktuális felhasználó számára egy RLS-kérésben. Ehhez beállítjuk a "CurrentUser" munkamenet paramétert, a beépített nyelv kódjából, állítsa be az értéket:

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

Table.User = &JelenlegiFelhasználó

A session paraméter ilyen módon történő használata nem veszi figyelembe a paraméter olvasási jogait, de megpróbálhatja lekérni az értéküket a beépített nyelvből:

CurrentUser = SessionParameters.CurrentUser;


Munkamenet paramétert, azaz értékét csak programozottan és csak a szerveren állíthatja be. Ehhez meg kell hívni egy szerver eljárást a klienstől. Egy session paraméter elérésekor (beállítás, beszerzés), ha a paraméter nincs inicializálva, az eljárás meghívásra kerül SettingSessionParameters a munkamenet modulban. Ennek az eljárásnak egy paramétere van Kötelező beállítások– beállítandó munkamenet-paraméter-azonosítók tömbje. SettingSessionParameters akkor is hívják, ha kapcsolat jön létre információs bázis mielőtt az összes többi kezelőt felhívná. Ebben az esetben Kötelező beállítások egyenlő lesz Határozatlan.

Javasoljuk, hogy késleltetett (lusta) inicializálást használjon, azaz igény szerint inicializálja a munkamenet paramétereit, és ne a rendszer indításakor, mivel nem minden munkamenet-paraméter szükséges közvetlenül a rendszer indításakor. A lusta inicializálás a következőképpen történik:

Eljárás SettingSessionParameters(SessionParameterNames) Ha a SessionParameterNames érték nincs definiálva, akkor IfParameterName = "CurrentUser", akkor SessionParameters.CurrentUser = ; ElseIf ParameterName = " CurrentOrganization" Then SessionParameters.CurrentOrganization = ; // stb. EndIf; EndIf; EndProcedurevalue>value>>

Mivel a session paraméter a munkamenethez van kötve, a háttérben futó metódusból nem lehet elérni a session paramétert, mivel az egy másik munkamenet lesz. Ez az árnyalat meglepő lehet, ezért a legjobb, ha előre felkészülünk rá úgy, hogy a kívánt értéket metódusparaméterként adjuk át, és az eljárás elején egy session paraméterből inicializálunk.

  • JELENLEGI KIADÁSOK 1C
  • KÓDPÉLDÁK AZ 1C PLATFORMON
Szerepek, hozzáférési jogok az 1C 8.x-ben
Hogyan tudhatom meg, hogy egy bizonyos szerepkör elérhető-e az aktuális felhasználó számára?
Ha nem RoleAvailable("Menedzser") Akkor Jelentés("Vevőktől származó rendelések megtekintése nem engedélyezett!"); EndIf;
Hogyan szerezhet információt a konfigurációs szerepkörökről?
Funkció Lehetséges konfigurációs szerepkörök listája() Szerepkörök listája = new List of Values; ConfigRoles = Metadata.Roles; Minden szerephez a RoleConfiguration Loop listából.Roles.Add(Role.Name); EndCycle; Visszatérés a szerepek listája; EndFunctions
Hogyan lehet kódot végrehajtani a jogok ellenőrzése nélkül?
1. Használjon kiemelt modult 2. Elhelyezés programkód, amelyet KORLÁTOZÁS VEZÉRLÉS NÉLKÜL kell végrehajtani, egy közös modulba, a modulhoz beállított PRIVILEGE jelzővel. Kiváltságos programkód-végrehajtási mód használata Hasonlóan a privilegizált modulok kódjának működési módjához. A mód a beépített nyelv használatával engedélyezhető/letiltható: SetPrivilegedMode(<Включить>) Paraméter<Включить>(kötelező) Típus: Boolean. Meghatározza, hogy a privilegizált mód engedélyezve legyen-e: True – az üzemmód engedélyezése; False - kapcsolja ki az üzemmódot. a PrivilegedMode() függvény lehetővé teszi annak meghatározását, hogy a privilegizált mód engedélyezve van-e vagy sem. A privilegizált mód használata lehetővé teszi egyrészt a munka felgyorsítását, mivel nem lesz korlátozás az adatokhoz való hozzáférésre vonatkozóan, másrészt lehetővé teszi, hogy olyan felhasználók nevében végezzen műveleteket az adatokkal, akiknek ezek az adatok nem állnak rendelkezésre. A privilegizált mód akkor javasolt, ha logikailag szükséges kikapcsolni az engedélyek ellenőrzését, vagy ha kikapcsolhatja az engedélyek ellenőrzését a dolgok felgyorsítása érdekében. Megengedett a privilegizált mód használata, ha egy bizonyos felhasználó nevében végzett adatokkal dolgozik, nem sérti a felhasználó hozzáférési jogait.

Munkamenet paraméterei 1C 8.3- az értéket tároló változó kívánt paramétert a felhasználói munkamenet időtartamára. Valójában ez egyfajta globális változó, amely az aktuális felhasználó munkamenetéhez kötődik.

Munkamenet-paraméterek használata az 1C-ben

A munkamenet-paraméterek beállítása csak programozottan történik, a rendszerben nincs univerzális interfész a munkamenet-paraméterek beállítására. Általában a rendszer indításakor, a "Session module"-ban vannak beállítva. Ha a paraméter nincs megadva, hibaüzenet jelenik meg az elérésekor.

Példa az 1C szekcióparaméter beállítására

Nézzük meg a munkamenet-paraméterek tipikus használati esetét – az aktuális felhasználó beállítását. Példát veszek a felkészülésből.

A metaadatfában hozzunk létre egy új munkamenet-paramétert - CurrentUser, rendeljünk hozzá egy típust - DirectoryReference.Individuals:

Ingyenes 267 1C videóleckéket kaphat:

A munkamenet modulban hozzunk létre egy eljárást, amely meghatározza az aktuális munkamenet paramétert:

Eljárás kódja:

Procedure SettingSessionParameters (szükséges paraméterek) //fizikait keresünk. arc felhasználónév alapján CurrentUser = Könyvtárak. Magánszemélyek. FindByName(Felhasználónév() ) ; // ha nem található, hozzon létre egy újat Ha CurrentUser. Empty() Majd NewUser = Könyvtárak. Magánszemélyek. CreateElement() ; Új felhasználó. Név = Felhasználónév() ; Új felhasználó. Ír() ; CurrentUser = NewUser. Link; EndIf ; //A CurrentUser session paraméterhez hozzárendel egy hivatkozást az egyének könyvtárához SessionParameters. CurrentUser = CurrentUser; Vége eljárás

Betöltés...
Top