Szerezze be az aktuális user 1s 8.3-as klienst. Hogyan szerezhet információkat a konfigurációs szerepekről

25.01.2021 hírek

  • 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. Privilegizált modul használata 2. A KORLÁTOZÁSOK NÉLKÜL végrehajtandó programkód elhelyezése egy közös modulban, a modulon 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, akik számára ezek az adatok nem állnak rendelkezésre. A privilegizált mód akkor javasolt, ha logikai szempontból ki kell kapcsolnia az engedélyek ellenőrzését, vagy ha a munka felgyorsítása érdekében kikapcsolhatja az engedélyek ellenőrzését. Megengedett a privilegizált mód használata, amikor 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- olyan változó, amely a kívánt paraméter értékét tárolja 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

5
Ha finomabb hozzáférési beállításra van szükség, az RLS - Record Level Security mechanizmus segít. Az 1C:Enterprise System Configurations 8-at eredetileg többvállalati könyvelési programként helyezték el, és az egyik... 3
Az 1C Enterprise rendszer 8.0 platformjától kezdve lehetőség van a felhasználói hozzáférési jogok rekordszintű korlátozására. Ehhez az RLS (Record Level Security) mechanizmust használják. Ilyen "finomhangolás" lehet... 3
Gyakran találkozom a programozott létrehozással és a felhasználói jogok beállításával kapcsolatos kérdésekkel. Ebben a cikkben példákat mutatok be azokra a szabványos és felügyelt alkalmazásokra, amelyek programozottan hoznak létre egy felhasználót a ... 2
Kérdés: Új felhasználót adtam hozzá. teremtek új felület(egy meglévő másolásával), és adja meg ezt a felületet főként a felhasználó számára. A probléma az, hogy az újonnan létrehozott felület...

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. A listájuk meglehetősen kiterjedt, de még akkor is ezt a listát nincs szükséged, mindig sorba állíthatod az értéket, és karakterláncként tárolhatod 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 Meghatá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 Meghatározatlan.

Javasoljuk, hogy lusta (lusta) inicializálást használjon, azaz a munkamenet paramétereit igény szerint inicializálja, é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.