Internet Windows Android

1c 8.3 získať aktuálneho používateľa na klienta. Ako zistiť, či je aktuálna používateľka k dispozícii konkrétna rola

Uvažované parametre v 1C: Enterprise sú prezentované ako objekt metadát. V zásade nejde o nič iné ako o globálnu 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 je k nej prístup odkiaľkoľvek v programe a v prípade parametra relácie to funguje iba v rámci aktuálnej relácie.

Pokiaľ parameter relácie je objekt metadát, ktorý má určité vlastnosti:

  • Môže ísť o určitý typ. Povolené typy sú špecifické pre platformu. Ich zoznam je pomerne rozsiahly, ale aj keď in tento zoznam neexistuje nikto, koho potrebujete, vždy môžete hodnotu serializovať a uložiť do parametra ako reťazec.
  • Práva na ne, ako na ktorýkoľvek iný objekt metaúdajov, môžu byť obmedzené na roly (na písanie aj na čítanie). Súčasne existuje zvláštnosť pri použití v RLS, ale to bude popísané nižšie.
  • Má obmedzený počet serializovaných údajov, ktoré je možné umiestniť. Ich objem by nemal presiahnuť 4 GB.

Ak je typ parametra relácie:

  • FixedArray
  • FixedCollection
  • Pevná štruktúra

Potom môže byť hodnota zbierkového predmetu Nedefinované.

Hlavným rozsahom parametrov je aplikácia ich hodnôt v požiadavkách RLS (obmedzenie prístupu na úrovni záznamu).

Napríklad musíme v požiadavke RLS nastaviť podmienku pre aktuálneho používateľa. Za týmto účelom nastavte parameter relácie „CurrentUser“ a nastavte hodnotu z kódu vstavaného jazyka:

Parametre relácie.CurrentUser =<значение>

Table.User = & CurrentUser

Toto použitie parametra relácie neberie do úvahy povolenia na čítanie parametra, ale môžete sa pokúsiť získať ich hodnotu z integrovaného jazyka:

CurrentUser = SessionParameters.CurrentUser;


Parameter relácie, tj. Jeho hodnotu, je možné nastaviť iba programovo a iba na serveri. Ak to chcete urobiť, musíte z klienta zavolať procedúru servera. Ak pri prístupe k parametru relácie (set, get), ak parameter nie je inicializovaný, bude vyvolaná procedúra SettingSessionParameters v module relácie. Tento postup má jeden parameter. Požadované parametre- pole nastavených identifikátorov parametrov relácie. SettingSessionParameters sa nazýva aj pri nadviazaní spojenia s informačná základňa než zavoláte všetkým ostatným obsluhujúcim pracovníkom. V tomto prípade Požadované parametre bude rovnaká Nedefinované.

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

Procedúra SettingSessionParameters (SessionParameterNames) Ak sú SessionParameterNames nedefinované, potom ak ParameterName = "CurrentUser", potom SessionParameters.CurrentUser =; ElseIf ParameterName = "Aktuálna organizácia" Potom SessionParameters.CurrentOrganization =; // atď. Koniec Ak; Koniec Ak; Hodnota EndProcedure> hodnota >>

Pretože je parameter relácie viazaný na reláciu, k parametru relácie nebude možné získať prístup z metódy bežiacej na pozadí, pretože toto už bude iná relácia. Táto nuansa môže byť prekvapením, preto je lepšie sa na ňu vopred pripraviť tak, že zadáte požadovanú hodnotu ako parameter metódy a inicializujete ju z parametra relácie na začiatku postupu.

Parametre relácie 1C 8.3- premenná, ktorá uchováva hodnotu požadovaného parametra počas trvania relácie používateľa. V skutočnosti je to druh globálnej premennej viazanej na reláciu aktuálneho používateľa.

Použitie parametrov relácie v 1C

Parametre relácie sa nastavujú iba programovo, univerzálne rozhranie na nastavenie parametrov relácie v systéme neexistuje. Spravidla sa nastavujú pri spustení systému v „module relácie“. Ak parameter nie je definovaný, počas hovoru naň bude vyvolaná 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. Vezmem si príklad z prípravy na.

V strome metadát vytvorte nový parameter relácie - CurrentUser, priraďte mu typ - ReferenceLink.

Získajte 267 videonávodov 1C zdarma:

V module relácie vytvoríme postup, v ktorom bude určený aktuálny parameter relácie:

Kód postupu:

Procedúra Nastavenie parametrov relácie (povinné parametre) // hľadanie fyzického. tvár podľa používateľského mena CurrentUser = Adresáre. Jednotlivci. FindByDesign (Meno používateľa ()); // ak sa nenájde, vytvorte nový Ak CurrentUser. Prázdny () Potom NewUser = Adresáre. Jednotlivci. CreateElement (); Nový užívateľ. Meno = Meno užívateľa (); Nový užívateľ. Napíšte (); CurrentUser = NewUser. Odkaz; Koniec Ak; // priradenie parametra relácie CurrentUser k odkazu na jednotlivcov Parametre relácie. CurrentUser = CurrentUser; Koniec postupu

5
Keď je potrebné ďalšie jemné doladenie prístupu, na pomoc príde mechanizmus zabezpečenia RLS - úroveň záznamu. Konfigurácia systému 1C: Enterprise 8 bola pôvodne umiestnená ako program pre účtovníctvo viacerých spoločností a jednou z ... 3
Počnúc platformou 8.0 systému 1C Enterprise je možné obmedziť prístupové práva používateľov na úrovni záznamu. Na tento účel sa používa mechanizmus RLS (Record Level Security). Takéto „doladenie“ môže byť ... 3
Často sa stretávam s otázkami súvisiacimi s tvorbou softvéru a nastavením používateľských práv. V tomto článku uvediem príklady pre normálne a spravované aplikácie, ktoré programovo vytvoria používateľa v ... 2
Otázka: Pridal som nového používateľa. Tvorím nové rozhranie(kopírovanie existujúceho) a označte toto rozhranie ako hlavné pre tohto používateľa. Problém je v tom, že vytvorené nové rozhranie ...

  • SÚČASNÉ UVOĽŇUJE 1C
  • PRÍKLADY KÓDU NA PLATFORME 1C
Role, prístupové práva v 1C 8.x
Ako zistím, či je súčasnému používateľovi k dispozícii konkrétna rola?
Ak nie je k dispozícii žiadna rola („správca“), potom nahláste („prezeranie žiadostí od kupujúcich nie je povolené!“); Koniec Ak;
Ako získam informácie o konfiguračných rolách?
FunctionPossibleConfigurationPossibleRoles () RoleList = novýZoznam hodnôt; RolesConfigurations = Metadata.Roles; Pre každú úlohu zo zoznamu rolí RoleConfiguration Role List.Add (Role.Name); Koniec cyklu; Zoznam návratových rolí; EndFunction
Ako spustím kód bez kontroly práv?
1. Použite privilegovaný modul 2. Umiestnenie programového kódu, ktorý by sa mal vykonať BEZ KONTROLY OBMEDZENÍ, v spoločný modul s inštaláciou príznaku PRIVILEGED v module. Použite 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: Nastaviť preferovaný režim (<Включить>) Parameter<Включить>(povinné) Typ: boolovský. Určuje, či bude povolený privilegovaný režim: True - povoliť 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 v prvom rade urýchliť prácu, pretože nebudú žiadne obmedzenia prístupu k údajom, a za druhé vám umožňuje vykonávať operácie s údajmi v mene používateľov, ktorí k týmto údajom nemajú prístup. Privilegovaný režim sa odporúča použiť vtedy, keď z logického hľadiska potrebujete zakázať kontrolu práv, alebo keď môžete zakázať kontrolu práv na urýchlenie práce. Je dovolené používať privilegovaný režim, keď práca s údajmi v mene určitého používateľa neporušuje prístupové práva stanovené pre tohto používateľa.