Довідковий матеріал

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

1.1. Параметри сеансу призначені для зберігання значень певних типів для кожного клієнтського сеансу на час роботи цього сеансу. Ініціалізацію параметрів сеансу слід виконувати в модулі сеансу (див. нижче розділ 2.1), а їх значення рекомендується використовувати в запитах і умовах обмеження доступу до даних для поточного сеансу.Приклади параметрів сеансу:Установлення параметрів сеансу "за потребою". Див. також

Абстрактний сеанс на сервері: центральний світний вузол за потреби активує лише потрібні захищені модулі даних між клієнтом і сервером.

Установлення параметрів сеансу "за потребою"

Див. також

 

1.1. Параметри сеансу призначені для зберігання значень певних типів для кожного клієнтського сеансу на час роботи цього сеансу. Ініціалізацію параметрів сеансу слід виконувати в модулі сеансу (див. нижче розділ 2.1), а їх значення рекомендується використовувати в запитах і умовах обмеження доступу до даних для поточного сеансу.
Приклади параметрів сеансу:

  • ТекущийПользователь – тип СправочникСсылка.Пользователи
  • ОбменДаннымиВключен – тип Булево
  • РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста

Параметри сеансу доступні з вбудованої мови 1С:Предприятия, наприклад:

ЗначениеТекущегоПользователя = ПараметрыСеанса.ТекущийПользователь;

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

Також вони можуть використовуватися в текстах обмежень доступу, наприклад:

ГДЕ Документ.Пользователь = &ТекущийПользователь

В останньому випадку для отримання значення параметра сеансу наявність у поточного користувача відповідного права не потрібна.

1.2.Не рекомендується використовувати параметри сеансу для зберігання значень, що використовуються виключно в клієнтській логіці. Оскільки в клієнт-серверному варіанті 1С:Предприятия параметри сеансу зберігаються на сервері, то будь-яке їх зчитування або змінення в процесі роботи на клієнті потребуватиме додаткового серверного виклику та збільшить обсяг даних, що передаються з клієнта на сервер і назад.

У таких випадках слід використовувати глобальні змінні модуля керованого застосунку (і звичайного застосунку — для режиму звичайного застосунку, відповідно).

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

Установлення параметрів сеансу "за потребою"

2.1. Не слід виконувати ініціалізацію параметрів сеансу під час запуску програми, оскільки:

  • не всі параметри сеансу запитуються з коду конфігурації під час запуску програми.
  • під час роботи програми можливе навмисне обнулення значень параметрів сеансу з коду вбудованою мовою.

Правильним способом встановлення значень параметрів сеансу є встановлення значень "за потребою" в обробнику УстановкаПараметровСеанса модуля сеансу. Тобто параметри сеансу мають бути ініціалізовані лише в той момент, коли до них відбувається перше звернення, як до невстановлених.

Приклад встановлення параметрів сеансу "за потребою":

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
	
	Если ИменаПараметровСеанса = Неопределено Тогда
		// Розділ встановлення параметрів сеансу на початку сеансу (ИменаПараметровСеанса = Неопределено)
		// Виконується встановлення параметрів сеансу, які можна ініціалізувати 
		// на початку роботи системи
		
	Иначе
		// Встановлення параметрів сеансу "за потребою"
		
		// Параметри сеансу, ініціалізація яких потребує звернення до одних і тих самих даних
		// слід ініціалізувати відразу групою. Щоб уникнути їх повторної ініціалізації,
		// імена вже встановлених параметрів сеансу зберігаються в масиві УстановленныеПараметры
		УстановленныеПараметры = Новый Массив;
		Для Каждого ИмяПараметра ИЗ ИменаПараметровСеанса Цикл
			УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры
// Установити значення параметрів сеансу та повернути імена встановлених параметрів сеансу
// у параметрі УстановленныеПараметры.
//
// Параметри
// ИмяПараметра - Рядок - ім'я параметра сеансу, який потрібно встановити (ініціалізувати).
// УстановленныеПараметры - Масив - масив, до якого додаються імена
// встановлених (ініціалізованих) параметрів.
//
Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)
	
	// Якщо в цьому виклику УстановкаПараметровСеанса параметр ИмяПараметра вже 
	// був установлений — повернення.
	Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если ИмяПараметра <> "ТекущийПользователь" Тогда
		ПараметрыСеанса.ТекущийПользователь = <значение>;
		УстановленныеПараметры.Добавить(ИмяПараметра);
	КонецЕсли;
КонецПроцедуры

Див. також

  • Вплив зміни значень параметрів сеансу та функціональних опцій на продуктивність механізму обмеження доступу до даних
Записатися телефоном