Aktuální uživatel 1s 8.3 na klientovi. Jak získat informace o konfiguračních rolích

Parametry zvažované v 1C:Enterprise jsou prezentovány jako objekt metadat. V podstatě to není nic jiného než globální proměnná, která je vázána na aktuální relaci.

Globální proměnná je stejná proměnná jako kterákoli jiná, ale její zvláštností je, že k ní lze přistupovat odkudkoli v programu a v případě parametru session to funguje pouze v rámci aktuální relace.

Protože parametr relace je objekt metadat, má určité vlastnosti:

  • Může být určitého typu. Povolené typy jsou určeny platformou. Jejich seznam je poměrně obsáhlý, ale i když in tento seznam není potřeba, vždy můžete hodnotu serializovat a uložit ji do parametru jako řetězec.
  • Práva k němu, stejně jako k jakémukoli jinému metadatovému objektu, mohou být omezena rolemi (jak pro zápis, tak pro čtení). Při použití v RLS však existuje jedna zvláštnost, ale o tom bude řeč níže.
  • Má limit na množství dat, která lze umístit v serializované podobě. Jejich objem by neměl přesáhnout 4 GB.

Pokud je typ parametru relace:

  • FixedArray
  • Pevná kolekce
  • Pevná struktura

Pak by hodnota prvku kolekce mohla být Nedefinováno.

Hlavní oblastí parametrů je použití jejich hodnot v dotazech RLS (Record Level Access Restriction).

Potřebujeme například nastavit podmínku pro aktuálního uživatele v požadavku RLS. Za tímto účelem nastavíme parametr relace „CurrentUser“ a nastavíme hodnotu z vestavěného kódu jazyka:

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

Table.User = &CurrentUser

Při použití parametru session tímto způsobem se neberou v úvahu oprávnění ke čtení pro parametr, ale můžete se pokusit získat jejich hodnotu z vestavěného jazyka:

CurrentUser = SessionParameters.CurrentUser;


Parametr session, tedy jeho hodnotu, můžete nastavit pouze programově a pouze na serveru. Chcete-li to provést, budete muset zavolat proceduru serveru z klienta. Pokud při přístupu k parametru relace (nastavení, příjem) není parametr inicializován, bude zavolána procedura Nastavení Parametry relace v modulu relace. Tento postup má jeden parametr Požadované parametry– pole nastavených identifikátorů parametrů relace. Nastavení Parametry relace také voláno při navazování spojení s informační základna než zavoláte všechny ostatní manipulátory. V tomto případě Požadované parametry budou rovné Nedefinováno.

Doporučuje se používat zpožděnou (línou) inicializaci, to znamená inicializovat parametry relace na vyžádání a ne při startu systému, protože ne všechny parametry relace jsou vyžadovány přímo při startu systému. Líná inicializace se provádí takto:

Procedure SettingSessionParameters(SessionParametersNames) If SessionParametersNames je Nedefinováno Then If ParameterName = "CurrentUser" Then SessionParameters.CurrentUser = ; ElseIf ParameterName = "Aktuální organizace" ThenSessionParameters.CurrentOrganization = ; // atd. endIf; endIf; EndProcedurevalue>value>>

Protože parametr relace je vázán na relaci, nebudete mít přístup k parametru relace z metody běžící na pozadí, protože se bude jednat o jinou relaci. Tato nuance může být překvapením, proto je lepší se na ni připravit předem předáním požadované hodnoty jako parametru metody a její inicializací z parametru session na začátku procedury.

  • AKTUÁLNÍ ZPRÁVY 1C
  • PŘÍKLADY KÓDU NA PLATFORME 1C
Role, přístupová práva v 1C 8.x
Jak zjistím, zda je určitá role dostupná aktuálnímu uživateli?
If Not RoleAvailable("Manager") Then Report("Prohlížení požadavků od zákazníků není povoleno!"); endIf;
Jak získám informace o konfiguračních rolích?
Funkce Seznam možných rolíConfiguration() Seznam rolí = new Seznam hodnot; RolesConfiguration = Metadata.Roles; Pro každou roli z RoleConfiguration Loop RoleList.Add(Role.Name); EndCycle; returnListRole; EndFunction
Jak spustit kód bez kontroly oprávnění?
1. Použijte privilegovaný modul 2. Umístění programový kód, který musí být proveden BEZ KONTROLY OMEZENÍ, do společného modulu s příznakem PRIVILEGE nastaveným pro modul. Použijte privilegovaný režim provádění programového kódu Podobný režimu provozu kódu privilegovaných modulů. Režim lze zapnout/vypnout pomocí vestavěného jazyka: SetPrivilegedMode(<Включить>) Parametr<Включить>(povinné) Typ: Boolean. Určuje, zda bude povolen privilegovaný režim: True - povolí režim; False - vypněte režim. Funkce PrivilegedMode() vám umožňuje určit, zda je privilegovaný režim povolen nebo ne. Použití privilegovaného režimu umožňuje za prvé urychlit práci, protože nebudou uvalována omezení přístupu k datům, a za druhé vám umožňuje provádět operace s daty jménem uživatelů, kterým tato data nejsou dostupná. Privilegovaný režim se doporučuje, když logicky potřebujete deaktivovat kontrolu oprávnění nebo když můžete deaktivovat kontrolu oprávnění pro urychlení. Je přijatelné použít privilegovaný režim, když práce s daty jménem určitého uživatele neporušuje přístupová práva stanovená pro tohoto uživatele.

5
Když je potřeba více doladění přístup, přichází na pomoc mechanismus RLS - Record Level Security. Konfigurace systému "1C:Enterprise" 8 byl původně umístěn jako program pro účetnictví více společností a jeden z... 3
Počínaje platformou 8.0 systému 1C Enterprise je možné omezit uživatelská přístupová práva na úrovni záznamu. K tomuto účelu slouží mechanismus RLS (Record Level Security). Takové „jemné“ doladění může být... 3
Často se setkávám s dotazy týkajícími se tvorba softwaru a nastavení uživatelských práv. V tomto článku uvedu příklady pro normální a spravované aplikace, které programově vytvářejí uživatele v... 2
Otázka: Přidal jsem nového uživatele. tvořím nové rozhraní(zkopírováním existujícího) a určit toto rozhraní jako hlavní pro tohoto uživatele. Problém je, že nové rozhraní vytvořené...