1С 8.3 відповідальний поточний користувач. Як дізнатися, чи доступна певна роль поточному користувачеві

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Завантаження...
Top