THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

Параметри сеанси 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
Питання: У мене доданий новий користувач. створюю новий інтерфейс (Копіюванням існуючого) і вказую цей інтерфейс в якості основного для даного користувача. Проблема в тому, що створений новий інтерфейс ...

THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму