Попытка получения неинициализированного значения параметра сеанса

Здравствуйте! Помогите! Никак не могу получить в форме параметр сеанса «ТекущийСотрудник» (должно при начале работы системы присваиваться значение в соответствии с текущим пользователем) Где мне прописать заполнение значения параметра сеанса, чтобы потом в формах можно было получить его? В модуле приложения, модуле управляемого приложения или в модуле сеанса? и как его получить в форме? На клиенте пишет, что «Переменная не определена (ПараметрыСеанса)». Если &НаСервере выдаёт ошибку: Попытка получения неинициализированного значения параметра сеанса! Что делать? Здравствуйте! Помогите! Никак не могу получить в форме параметр сеанса «ТекущийСотрудник» (должно при начале работы системы присваиваться значение в соответствии с текущим пользователем) Где мне прописать заполнение значения параметра сеанса, чтобы потом в формах можно было получить его? В модуле приложения, модуле управляемого приложения или в модуле сеанса? и как его получить в форме? На клиенте пишет, что «Переменная не определена (ПараметрыСеанса)». Если &НаСервере выдаёт ошибку: Попытка получения неинициализированного значения параметра сеанса! Что делать?

1С:Предприятие 8.2 /
Разработчикам /
Создание и изменение объектов метаданных

Установка параметров сеанса «по требованию»

См. также

1.1. Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже раздел 2.1), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:

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

Параметры сеанса доступны из встроенного языка 1С:Предприятия, например:

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

В этом случае, для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.

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

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

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

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

В таких случаях следует использовать глобальные переменные модуля управляемого приложения (и обычного приложения – для режима обычного приложения, соответственно).

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

Установка параметров сеанса «по требованию»

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

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

Правильным способом установки значений параметров сеанса является установка значений «по требованию» в обработчике УстановкаПараметровСеанса модуля сеанса. Т.е. параметры сеанса должны быть инициализированы только в тот момент, когда к ним происходит первое обращение, как к неустановленным.
Пример установки параметров сеанса «по требованию»:

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

См. также

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

Другие материалы по теме:
текущий пользователь, неопределено, иначе, конецпроцедуры, пользователи, приложения, программы, клиент, буфер обмена, копировать, раздел, установка, пользователь, обмен, возврат, значения, время, результат, конфигурирование, параметры, работы, установить, конфигурации

А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают:

Код 1C v 8.х Процедура УстановкаПараметровСеанса()
Спр = Справочники.Сотрудники;
ПараметрыСеанса.ТекущийПользователь=Спр.НайтиПоРеквизиту(«Пользователь1С», ИмяПользователя());
КонецПроцедуры
//где Пользователь1С, это реквизит справочника сотрудники, и именем как вбито в конфигураторе
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы.
Ну а дальше подставлять сопоставленное значение при создании соответствующего документа:
Код 1C v 8.х Док.Пользователь=ПараметрыСеанса.Пользователь;
События модуля сеанса:
Глобальный контекст
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса(<Требуемые параметры>)
Параметры:
<Требуемые параметры>
Тип: Массив; Неопределено. Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой или при захвате соединения с информационной базой из пула до вызова всех остальных обработчиков. Значение параметра «Параметры сеанса» — Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра «Параметры сеанса» является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то возникает исключение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *