Отримати поточного користувача 1с 8.3 клієнта. Як отримати інформацію про ролі конфігурації

25.01.2021 Новини

  • АКТУАЛЬНІ РЕЛІЗИ 1С
  • ПРИКЛАДИ КОДУ НА ПЛАТФОРМІ 1С
Ролі, права доступу до 1С 8.x
Як дізнатися, чи доступна певна роль поточному користувачеві?
Якщо Не РольДоступна("Менеджер") Тоді Повідомити("Перегляд заявок від покупців не дозволено!"); КінецьЯкщо;
Як отримати інформацію про ролі конфігурації?
Функція СписокМожливихРолейКонфігурації() СписокРолей = новий СписокЗначень; РоліКонфігурації = Метадані.Ролі; Для кожного Роль з РоліКонфігурації Цикл СписокРолей.Додати(Роль.Ім'я); КінецьЦикл; Повернення Список Ролей; КінецьФункції
Як виконати код без перевірки прав?
1. Використовувати привілейований модуль 2. Розміщення програмного коду, який має виконуватися БЕЗ КОНТРОЛЮ ОБМЕЖЕНЬ, у спільний модуль із встановленням біля модуля прапора ПРИВІЛЕВАНИЙ. Використати привілейований режим виконання програмного коду Аналогічний режим роботи коду привілейованих модулів. Режим можна увімкнути/вимкнути засобами вбудованої мови: ВстановитиПривілейованийРежим(<Включить>) Параметр<Включить>(обов'язковий) Тип: Бульово. Визначає, чи буде увімкнено привілейований режим: Істина - включити режим; Брехня - вимкнути режим. функція ПривілейованийРежим() дозволяє визначити, чи увімкнений привілейований режим, чи ні. Використання привілейованого режиму дозволяє, по-перше, прискорити роботу, оскільки не накладатимуться обмеження доступу до даних, а по-друге, дозволяє виконувати операції з даними від імені користувачів, яким ці дані недоступні. Привілейований режим рекомендується використовувати тоді, коли з логічної точки зору потрібно вимкнути перевірку прав або коли можна вимкнути перевірку прав, щоб прискорити роботу. Допустимо використовувати привілейований режим тоді, коли робота з даними від імені деякого користувача не порушує встановлені для цього користувача права доступу.

Параметри сеанси 1С 8.3— змінна, в якій зберігається значення потрібного параметра під час сеансу користувача. По суті це якась глобальна змінна, прив'язана до сеансу поточного користувача.

Використання параметрів сеансу в 1С

Параметри сеансу задаються лише програмно, універсального інтерфейсу для встановлення параметрів сеансу у системі немає. Зазвичай вони задаються при старті системи, у «Модулі сеансу». Якщо параметр не визначено, під час звернення до нього буде викликана помилка.

Приклад установки параметра сеансу 1С

Розглянемо типовий приклад використання параметрів сеансу - встановлення поточного користувача. Приклад я візьму з підготовки до.

У дереві метаданих створимо новий параметр сеансу - Поточний Користувач, призначимо йому тип - Довідник Посилання. Фізичні Особи:

Отримайте 267 відеоуроків з 1С безкоштовно:

У модулі сеансу створимо процедуру, в якій визначатиметься поточний параметр сеансу:

Код процедури:

Процедура УстановкаПараметрівСеансу(ПотрібніПараметри) //Шукаємо фіз. особа на ім'я користувачаПоточний користувач = Довідники. Фізичні особи. ЗнайтиПо Найменуванню(Ім'яКористувача() ) ; //якщо не знайшли - створимо новогоЯкщо Тек Користувач. Пуста() Тоді Новий Користувач = Довідники. Фізичні особи. Створити Елемент (); Новий Користувач. Найменування = Ім'я Користувача() ; Новий Користувач. Записати() ; Поточний користувач = Новий Користувач. Посилання; КінецьЯкщо ; //Присвоюємо параметру сеансу ПоточнийКористувач посилання на довідник фіз.осібПараметри Сеансу. ПоточнийКористувач = ТекКористувач; КінецьПроцедури

5
Коли потрібно більш тонке налаштування доступу, на допомогу приходить механізм RLS - Record Level Security. Конфігурації системи «1С:Підприємство» 8 спочатку позиціонувалася як програма для багатофірмового обліку, і... 3
Починаючи з платформи 8.0 системи 1С Підприємство існує можливість обмежувати права доступу користувачів на рівні записів. Для цього використовується механізм RLS (Record Level Security). Таке «тонке» налаштування може бути... 3
Часто зустрічаю питання щодо програмного створення та налаштування прав користувачів. У цій статті я наведу приклади для Звичайного та Керованого додатків, які програмно створюють користувача в... 2
Запитання: У мене доданий новий користувач. Створюю новий інтерфейс(Копіюванням існуючого) і вказую цей інтерфейс як основний для даного користувача. Проблема в тому, що створений новий інтерфейс.

Розглянуті параметри в 1С:Підприємство представлені як об'єкт метаданих. Фактично, це нічим іншим, як глобальна змінна, прив'язана до поточного сеансу.

Глобальна змінна - така ж змінна, як і будь-яка інша, але особливість її в тому, що звернутися до неї можна з будь-якої точки програми, а у випадку параметра сеансу це працює тільки в межах поточного сеансу.

Оскільки параметр сеансує об'єктом метаданих, він має певні особливості:

  • Він може бути певного типу.Дозволені типи визначаються платформою. Перелік їх досить великий, але навіть якщо в даному спискунемає потрібного для вас, завжди можна серіалізувати значення та зберігати його у параметрі у вигляді рядка.
  • Права на нього, як і будь-який інший об'єкт метаданих, можна обмежувати ролями (як на запис, так і на читання). При цьому існує особливість при використанні його RLS, але про це буде написано нижче.
  • Він має обмеження на обсяг даних, що розміщуються в серіалізованому вигляді.Їхній обсяг не повинен перевищувати 4 Гб.

Якщо тип параметра сеансу:

  • Фіксований Масив
  • Фіксована Колекція
  • Фіксована структура

Тоді значення елемента колекції може бути НЕ визначено.

Основна область параметрів – застосування їх значень у запитах RLS (обмеження доступу лише на рівні записів).

Наприклад, нам потрібно в запиті RLS встановити умову поточного користувача. Для цього заводимо параметр сеансу "Поточний Користувач", з коду вбудованої мови встановлюємо значення:

Параметри Сеансу.ПоточнийКористувач =<значение>

Таблиця.Користувач = &ПоточнийКористувач

При використанні параметра сеансу права на читання параметра не враховуються, однак можна спробувати отримати їх значення з вбудованої мови:

Поточний Користувач = Параметри Сеансу.


Встановити параметр сеансу, тобто його значення можна лише програмно і лише на сервері. Для цього з клієнта потрібно буде викликати серверну процедуру. При зверненні до параметра сеансу (установка, отримання), якщо параметр не ініціалізований, буде викликано процедуру УстановкаПараметрівСеансуу модулі сеансу. Ця процедура має один параметр НеобхідніПараметри– масив ідентифікаторів параметрів сеансу, що встановлюються. УстановкаПараметрівСеансувикликається також при встановленні з'єднання з інформаційною базоюдо виклику решти оброблювачів. В цьому випадку НеобхідніПараметридорівнюватиме НЕ визначено.

Рекомендовано використовувати відкладену (ліниву) ініціалізацію, тобто ініціалізувати параметри сеансу на вимогу, а не при старті системи, оскільки не всі параметри сеансу потрібні безпосередньо при старті системи. Відкладена ініціалізація виконується так:

Процедура УстановкаПараметрівСеансу(ІменаПараметрівСеансу) Якщо ІменаПараметрівСеансу Невизначено Тоді Якщо Ім'яПараметра = "ПоточнийКористувач" Тоді ПараметриСеансу.ПоточнийКористувач = ; ІнакшеЯкщо Ім'яПараметра = "ПоточнаОрганізація" Тоді ПараметриСеансу.ПоточнаОрганізація = ; // і т.д. КінецьЯкщо; КінецьЯкщо; КінецьПроцедуризначення>значення>>

Оскільки параметр сеансу прив'язаний до сеансу, не вдасться звернутися до параметра сеансу з методу, що виконується у фоні, оскільки це вже інший сеанс. Цей нюанс може стати несподіванкою, тому краще до нього підготуватися заздалегідь, передавши потрібне значення як параметр методу та ініціалізувавши параметр сеансу на початку процедури.