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