1с 8.3 отримати поточного користувача на клієнті. Як дізнатися, чи доступна певна роль активного користувача
Розглянуті параметри в 1С: Підприємство представлені у вигляді об'єкта метаданих. По суті, це не що інше, як глобальна змінна, прив'язана до поточного сеансу.
Глобальна змінна - така ж мінлива, як і будь-яка інша, але особливість її в тому, що звернутися до неї можна з будь-якої точки програми, а у випадку з параметром сеансу це працює тільки в межах поточного сеансу.
оскільки параметр сеансу є об'єктом метаданих, він має певні особливості:
- Він може бути певного типу. Дозволені типи визначаються платформою. Перелік їх досить великий, але навіть якщо в даному списку немає потрібного для вас, завжди можна серіалізовать значення і зберігати його в параметрі у вигляді рядка.
- Права на нього, як і на будь-який інший об'єкт метаданих, можна обмежувати ролями (як на запис, так і на читання). При цьому існує особливість при використанні його в RLS, але про це буде написано нижче.
- Він має обмеження на обсяг поміщаються даних в серіалізовані вигляді. Їх обсяг не повинен перевищувати 4 Гб.
Якщо тип параметра сеансу:
- ФіксірованнийМассів
- ФіксірованнаяКоллекція
- ФіксірованнаяСтруктура
Тоді значення елемента колекції може бути Не визначене.
Основна область параметрів - застосування їх значень в запитах RLS (обмеження доступу на рівні записів).
Наприклад, нам потрібно в запиті RLS встановити умову по поточному користувачеві. Для цього заводимо параметр сеансу «ТекущійПользователь», з коду вбудованого мови встановлюємо значення:
ПараметриСеанса.ТекущійПользователь \u003d<значение>
Табліца.Пользователь \u003d & ТекущійПользователь
При такому використанні параметра сеансу права на читання параметра не враховуються, проте можна спробувати отримати їх значення з вбудованої мови:
ТекущійПользователь \u003d ПараметриСеанса.ТекущійПользователь;
Встановити параметр сеансу, тобто його значення, можна тільки програмно і тільки на сервері. Для цього з клієнта потрібно викликати серверну процедуру. При зверненні до параметру сеансу (установка, отримання), якщо параметр не инициализирован, буде викликана процедура УстановкаПараметровСеанса в модулі сеансу. Дана процедура має один параметр ТребуемиеПараметри - масив встановлюються ідентифікаторів параметрів сеансу. УстановкаПараметровСеанса викликається також під час активного з'єднання з інформаційною базою до виклику всіх інших обробників. В цьому випадку ТребуемиеПараметри буде дорівнює Не визначене.
Рекомендовано використовувати відкладену (ледачу) ініціалізацію, тобто ініціалізувати параметри сеансу на вимогу, а не при старті системи, так як не всі параметри сеансу потрібні безпосередньо при старті системи. Відкладене ініціалізація виконується так:
Процедура УстановкаПараметровСеанса (ІменаПараметровСеанса) Якщо ІменаПараметровСеанса Не визначено Тоді Якщо ІмяПараметра \u003d "ТекущійПользователь" Тоді ПараметриСеанса.ТекущійПользователь \u003d; ІначеЕслі ІмяПараметра \u003d "ТекущаяОрганізація" Тоді ПараметриСеанса.ТекущаяОрганізація \u003d; // і т.д. КонецЕсли; КонецЕсли; КонецПроцедуризначеніе\u003e значення \u003e\u003eТак як параметр сеансу прив'язаний до сеансу, не вийде звернутися до параметру сеансу з методу, що виконується у фоновому режимі, оскільки це буде вже інший сеанс. Цей нюанс може стати несподіванкою, тому краще до нього підготуватися заздалегідь, передавши потрібне значення як параметр методу і запускати з параметра сеансу на початку процедури.
Параметри сеанси 1С 8.3- змінна, в якій зберігається значення потрібного параметра на час сеансу користувача. По суті, це якась глобальна змінна, прив'язана до сеансу поточного користувача.
Використання параметрів сеансу в 1С
Параметри сеансу задаються тільки програмно, універсального інтерфейсу для установки параметрів сеансу в системі немає. Зазвичай вони задаються при старті системи, в «Модулі сеансу». Якщо параметр не визначений, під час звернення до нього буде викликана помилка.
Приклад установки параметра сеансу 1С
Розглянемо типовий приклад використання параметрів сеансу - установку поточного користувача. Приклад я візьму з підготовки до.
У дереві метаданих створимо новий параметр сеансу - ТекущійПользователь, призначимо йому тип - СправочнікСсилка.ФізіческіеЛіца:
Отримайте 267 відеоуроків по 1С безкоштовно:
У модулі сеансу створимо процедуру, в якій буде визначатися поточний параметр сеансу:
Код процедури:
Процедура УстановкаПараметровСеанса (ТребуемиеПараметри) // шукаємо фіз. особа на ім'я користувача ТекПользователь \u003d Довідники. Фізичні особи. НайтіПоНаіменованію (ім'я користувача ()); // якщо не знайшли - створимо нового Якщо ТекПользователь. Порожня () Тоді НовПользователь \u003d Довідники. Фізичні особи. СоздатьЕлемент (); НовПользователь. Найменування \u003d ім'я користувача (); НовПользователь. Записати (); ТекПользователь \u003d НовПользователь. Посилання; КонецЕсли; // присвоюємо параметру сеансу ТекущійПользователь посилання на довідник фіз.осіб ПараметриСеанса. ТекущійПользователь \u003d ТекПользователь; КонецПроцедури
5
Там, де необхідно більш тонка настройка доступу, на допомогу приходить механізм RLS - Record Level Security. Конфігурації системи «1С: Підприємство» 8 спочатку позиціонувалася як програма для багатофірмового обліку, і один з ...
3
Починаючи з платформи 8.0 системи 1С Підприємство, існує можливість обмежувати права доступу користувачів на рівні записів. Для цього використовується механізм RLS (Record Level Security). Така «тонка» налаштування може бути ...
3
Часто зустрічаю питання що стосуються програмного створення і налаштування прав користувачів. В цей статті я приведу приклади для Звичайного і Керованого додатків, які програмно створюють користувача в ...
2
Питання: У мене доданий новий користувач. створюю новий інтерфейс (Копіюванням існуючого) і вказую цей інтерфейс в якості основного для даного користувача. Проблема в тому, що створений новий інтерфейс ...
- АКТУАЛЬНІ РЕЛІЗИ 1С
- Приклади КОДА НА ПЛАТФОРМІ 1С