1c 8.3 zodpovedný aktuálny používateľ. Ako zistiť, či je určitá rola dostupná pre aktuálneho používateľa

Parametre posudzované v 1C:Enterprise sú prezentované ako objekt metadát. V podstate to nie je nič iné ako globálna premenná viazaná na aktuálnu reláciu.

Globálna premenná je rovnaká premenná ako ktorákoľvek iná, ale jej zvláštnosťou je, že k nej možno pristupovať odkiaľkoľvek v programe a v prípade parametra relácie to funguje len v rámci aktuálnej relácie.

Pretože parameter relácie je objekt metadát, má určité vlastnosti:

  • Môže byť určitého typu. Povolené typy sú špecifické pre platformu. Ich zoznam je pomerne rozsiahly, ale aj keď tento zoznam neobsahuje ten, ktorý potrebujete, vždy môžete hodnotu serializovať a uložiť do parametra ako reťazec.
  • Práva k nemu, ako aj k akémukoľvek inému objektu metaúdajov, môžu byť obmedzené rolami (na zápis aj na čítanie). Zároveň existuje zvláštnosť pri používaní v RLS, ale o tom sa bude diskutovať nižšie.
  • Má limit na množstvo dát umiestnených v serializovanej forme. Ich objem by nemal presiahnuť 4 GB.

Ak typ parametra relácie:

  • FixedArray
  • FixedCollection
  • Pevná štruktúra

Potom môže byť hodnota prvku kolekcie Nedefinované.

Hlavnou oblasťou parametrov je použitie ich hodnôt v požiadavkách RLS (obmedzenie prístupu na úrovni záznamu).

Potrebujeme napríklad nastaviť podmienku pre aktuálneho používateľa v požiadavke RLS. Aby sme to dosiahli, nastavili sme parameter relácie "CurrentUser", z kódu vstavaného jazyka nastavte hodnotu:

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

Table.User = &CurrentUser

Použitie parametra relácie týmto spôsobom nezohľadňuje práva na čítanie parametra, ale môžete sa pokúsiť získať ich hodnotu zo vstavaného jazyka:

CurrentUser = SessionParameters.CurrentUser;


Parameter relácie, teda jeho hodnotu, môžete nastaviť iba programovo a iba na serveri. Ak to chcete urobiť, musíte z klienta zavolať procedúru servera. Pri prístupe k parametru relácie (nastavenie, získanie), ak parameter nie je inicializovaný, bude zavolaná procedúra Nastavenie parametrov relácie v module relácie. Tento postup má jeden parameter Požadované možnosti– pole identifikátorov parametrov relácie, ktoré sa majú nastaviť. Nastavenie parametrov relácie volá sa aj pri nadviazaní spojenia s informačnú základňu pred zavolaním všetkých ostatných psovodov. V tomto prípade Požadované možnosti sa bude rovnať Nedefinované.

Odporúča sa použiť odloženú (lenivú) inicializáciu, to znamená inicializovať parametre relácie na požiadanie a nie pri štarte systému, pretože nie všetky parametre relácie sa vyžadujú priamo pri štarte systému. Lenivá inicializácia sa vykonáva takto:

Procedure SettingSessionParameters(SessionParameterNames) Ak je SessionParameterNames nedefinovaný Then IfParameterName = "CurrentUser" Then SessionParameters.CurrentUser = ; ElseIf ParameterName = " CurrentOrganization" Then SessionParameters.CurrentOrganization = ; // atď. Koniec Ak; Koniec Ak; EndProcedurevalue>value>>

Keďže parameter relácie je viazaný na reláciu, nebude možné pristupovať k parametru relácie z metódy spustenej na pozadí, pretože pôjde o inú reláciu. Táto nuansa môže byť prekvapením, preto je najlepšie sa na ňu vopred pripraviť tak, že odošlete požadovanú hodnotu ako parameter metódy a inicializujete z parametra relácie na začiatku postupu.

  • AKTUÁLNE VYDANIE 1C
  • PRÍKLADY KÓDU NA PLATFORME 1C
Roly, prístupové práva v 1C 8.x
Ako zistím, či je určitá rola dostupná pre aktuálneho používateľa?
If Not RoleAvailable("Manager") Then Report("Zobrazenie objednávok od kupujúcich nie je povolené!"); Koniec Ak;
Ako získať informácie o konfiguračných rolách?
Funkcia Zoznam rolí možných konfigurácií() Zoznam rolí = nový zoznam hodnôt; ConfigRoles = Metadata.Roles; Pre každú rolu z RoleConfiguration Loop ListRoles.Add(Role.Name); EndCycle; Vrátiť zoznam rolí; EndFunctions
Ako spustiť kód bez kontroly práv?
1. Použite privilegovaný modul 2. Umiestnenie programový kód, ktorý by sa mal vykonať BEZ KONTROLY OBMEDZENIA, do spoločného modulu s nastaveným príznakom PRIVILEGE pre modul. Použiť privilegovaný režim vykonávania programového kódu Podobne ako režim prevádzky kódu privilegovaných modulov. Režim je možné povoliť/zakázať pomocou vstavaného jazyka: SetPrivilegedMode(<Включить>) Parameter<Включить>(povinné) Typ: Boolean. Určuje, či bude povolený privilegovaný režim: True - povolí režim; False - vypnite režim. funkcia PrivilegedMode() vám umožňuje určiť, či je privilegovaný režim povolený alebo nie. Použitie privilegovaného režimu umožňuje po prvé urýchliť prácu, pretože nebudú existovať žiadne obmedzenia prístupu k údajom, a po druhé, umožňuje vykonávať operácie s údajmi v mene používateľov, ktorým tieto údaje nie sú dostupné. Privilegovaný režim sa odporúča vtedy, keď je logicky potrebné vypnúť kontroly povolení, alebo keď môžete vypnúť kontroly povolení na urýchlenie. Privilegovaný režim je povolené používať vtedy, keď práca s údajmi v mene určitého používateľa neporušuje prístupové práva nastavené pre tohto používateľa.

Parametre relácie 1C 8.3- premenná, ktorá uchováva hodnotu požadovaný parameter po dobu trvania používateľskej relácie. V skutočnosti ide o akúsi globálnu premennú viazanú na reláciu aktuálneho používateľa.

Použitie parametrov relácie v 1C

Parametre relácie sa nastavujú iba programovo, v systéme neexistuje univerzálne rozhranie na nastavenie parametrov relácie. Zvyčajne sa nastavujú pri štarte systému v „module relácie“. Ak parameter nie je definovaný, pri prístupe k nemu sa zobrazí chyba.

Príklad nastavenia parametra relácie 1C

Pozrime sa na typický prípad použitia parametrov relácie – nastavenie aktuálneho používateľa. Uvediem príklad z prípravy na .

V strome metadát vytvorme nový parameter relácie – CurrentUser, priraďme mu typ – DirectoryReference.Individuals:

Získajte bezplatné video lekcie 267 1C:

V module relácie vytvorte procedúru, ktorá určí aktuálny parameter relácie:

Kód postupu:

Procedure SettingSessionParameters(RequiredParameters) //hľadáme fyzické. tvár podľa používateľského mena CurrentUser = Adresáre. Jednotlivci. FindByName(UserName() ) ; // ak sa nenájde, vytvorte nový Ak CurrentUser. Empty() Then NewUser = Adresáre. Jednotlivci. CreateElement() ; Nový užívateľ. Meno = Používateľské meno() ; Nový užívateľ. Napíšte() ; Aktuálny používateľ = Nový používateľ. Link; Koniec Ak ; //parametru relácie CurrentUser priradíme odkaz na adresár jednotlivcov Parametre relácie. Aktuálny používateľ = Aktuálny používateľ; EndProcedure

Načítava...
Hore