Использование параметров сеанса
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже раздел 2.1), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:
- ТекущийПроект – тип СправочникСсылка.Проекты ;
- ОбменДаннымиВключен – тип Булево ;
- РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста .
Параметры сеанса доступны из встроенного языка 1С:Предприятия , например:
В этом случае, для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.
Также они могут использоваться в текстах ограничений доступа, например:
ГДЕ Документ.Автор = &ТекущийПользователь
В последнем случае для получения значения параметра сеанса наличия у текущего пользователя соответствующего права не требуется.
1.2. Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно.
В таких случаях следует использовать глобальные переменные модуля управляемого приложения (и обычного приложения – для режима обычного приложения, соответственно).
1.3. Также не рекомендуется использовать параметры сеанса для кеширования вычисленных значений, которые многократно используются в серверной бизнес-логике. В таких случаях следует определять функцию в серверном общем модуле с повторным использованием возвращаемых значений. Исключение составляют случаи, когда время вычисления результата функции модуля с повторным использованием возвращаемых значений соизмеримо с периодом сброса платформенного кеша.
Установка параметров сеанса «по требованию»
2.1. Не следует производить инициализацию параметров сеанса при запуске программы, так как:
- не все параметры сеанса запрашиваются из кода конфигурации при запуске программы.
- при работе программы возможно намеренное обнуление значений параметров сеанса из кода на встроенном языке.
Правильным способом установки значений параметров сеанса является установка значений «по требованию» в обработчике УстановкаПараметровСеанса модуля сеанса. Т.е. параметры сеанса должны быть инициализированы только в тот момент, когда к ним происходит первое обращение, как к неустановленным.
Пример установки параметров сеанса «по требованию»:
Если ИменаПараметровСеанса = Неопределено Тогда
// Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено)
// Выполняется установка параметров сеанса, которые можно инициализировать
// при начале работы системы
Иначе
// Установка параметров сеанса «по требованию»
// Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
// следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
// имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
УстановленныеПараметры = Новый Массив;
Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
КонецЦикла;
// Установить значения параметров сеанса и возвратить имена установленных параметров сеанса
// в параметре УстановленныеПараметры.
//
// Параметры
// ИмяПараметра — Строка — имя параметра сеанса, который требуется установить (проинициализировать).
// УстановленныеПараметры — Массив — массив, в который добавляются имена
// установленных (проинициализированных) параметров.
//
Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)
// Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже
// был установлен — возврат.
Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
Возврат;
КонецЕсли;
Если ИмяПараметра = «ТекущийПользователь» Тогда
ПараметрыСеанса.ТекущийПользователь = <значение>;
ПараметрыСеанса.<другой параметра сеанса> = <значение>;
УстановленныеПараметры.Добавить(ИмяПараметра);
УстановленныеПараметры.Добавить(«<другой параметра сеанса>»);
КонецЕсли;
v8: 8.3 БСП Установка параметров сеанса
Хочу добавить новые параметры сеанса и само собой их установить.
Но сунувшись в отладчик обалдел увидев в процедуре «УстановкаПараметровСеанса» уже заполненные параметры.
Около часа уже лажу и не могу смекнуть где они их устанавливают, если эта процедура отрабатывает первой.
а как ты в отладчике смотришь установленность параметров сеанса? по шифт+ф9? если так, то они сразу тебе и рассчитываются.
(18) Спасиб.
Но камрад banco уже написал то что мне было нужно в (9)
Инициализация параметров сеанса
Для инициализации параметров сеанса требуется вписать имя параметра сеанса и путь к его обработчику в процедуру ОбработчикиИнициализацииПараметровСеанса общего модуля ОбщегоНазначенияПереопределяемый. При этом обработчик инициализации должен принимать два параметра:
? ИмяПараметра – строка – имя инициализируемого параметра
? УстановленныеПараметры – массив – имена параметров, которые были инициализированы
Только вот прописал.
Но инициализация не проходит.
(17) так ничего сложного, в ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса добавляешь
Обработчики.Вставить(«МойПараметрСеанса», «ОбщегоНазначенияПереопределяемый.УстановитьПараметрыСеанса»);
добавляешь процедуру
Процедура УстановитьПараметрыСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
ПараметрыСеанса.МойПараметрСеанса = Истина;
УстановленныеПараметры.Добавить(«МойПараметрСеанса»);
Функция ОбработчикиИнициализацииПараметровСеанса() Экспорт
Обработчики = Новый Соответствие;
Но на вот этом участке кода отрабатывает только установка одного параметра
Для каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Обработчик = Обработчики.Получить(ИмяПараметра);
Если Обработчик <> Неопределено Тогда
Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
ВызватьИсключение ТекстСообщения;
КонецЕсли;
Выполнить Обработчик + «(ИмяПараметра, УстановленныеПараметры)»;
Продолжить;
КонецЕсли;
Для Каждого ИмяКлючаПараметра Из ПараметрыСеансаКлючи Цикл
Если Лев(ИмяПараметра, СтрДлина(ИмяКлючаПараметра)) = ИмяКлючаПараметра Тогда
Обработчик = Обработчики.Получить(ИмяКлючаПараметра+»*»);
Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
ВызватьИсключение ТекстСообщения;
КонецЕсли;
Выполнить Обработчик + «(ИмяПараметра, УстановленныеПараметры)»;
КонецЕсли;
КонецЦикла;
КонецЦикла;
В ИменаПараметровСеанса потмоу что указан только один «ТекущийПользователь»
Параметры сеанса: создание и использование
Параметры сеанса являются объектами метаданных и задаются в дереве конфигурации и предназначены для хранения временных, обычно примитивных значений:
Создаем новый параметр и задаем ему имя «ТекущийПользователь» и заполняем свойства параметра:
Какие типы можно использовать для параметра сеанса:
- Все ссылочные (cправочники, документы, планы счетов и другие)
- Строка, Дата, Число
- ФиксированныйМассив
При начале работы или при первом обращении параметры сеанса должны быть заполнены значением иначе будет ошибка «попытка получения неинициализированного значения параметра сеанса».
Параметры сеанса могут использованы в шаблонах ограничения полей объектов при использовании ограничения доступа на уровне записей.
На тонком клиенте или веб-клиенте ПараметрыСеанса недоступны:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Возможен обмен с сервером.
Реклама похоронного бюро: «Если наши клиенты воскреснут, то вновь обратятся к нам!
— Аркадий Давидович
Параметр сеанса в 1С
Параметры сеанса в 1С — это переменные, которые доступны в течение всего сеанса пользователя в любом месте конфигурации. Например, в параметрах сеанса можно хранить текущего пользователя, или имя компьютера.
Для примера, создадим параметр сеанса, который назовем ИмяТекущегоКомпьютера., в этом параметре будем хранить имя текущего компьютера. Для этого нужно выделить ветку «Параметры сеанса» в группе «Общие» дерева метаданных, вызвать контекстное меню, и в контекстном меню выполнить команду «Добавить».
В правой части экрана откроется палитра свойств параметра сеанса, где следует указать название, синоним и тип (в моем случае это будет тип Строка).
На всякий случай, проверим, есть ли права у нужной роли на этот параметр сеанса. Посмотреть на роли параметра сеанса можно в окне «Дополнительно». Откроем его: выделим созданный параметр сеанса, вызовем контекстное меню и выполним команду «Дополнительно».
В окне «Дополнительно» интересует закладка «Права», в которой следует проверить флажки у прав Получение и Установка для нужной роли.
Получение – это право на получение значения параметра сеанса;
Установка – это право на установку значения параметра сеанса;
Параметр сеанса создан, теперь необходимо написать алгоритм установки значения в этот параметра сеанса. Делается это в модуле сеанса.
Модуль сеанса в 1С
Модуль сеанса необходим для установки значений параметров сеанса. Мы уже создали единственный параметр сеанса в конфигурации – «Имя текущего компьютера».
Научимся устанавливать значение в этот параметр сеанса при запуске сеанса пользователя. Делается это в модуле сеанса. Откроем его. Модуль сеанса открывается достаточно просто: выделяется самый верхний узел конфигурации, вызывается контекстное меню, в котором необходимо выполнить команду «Открыть модуль сеанса».
Впоследствии откроется модуль сеанса, в котором нас интересует один-единственный обработчик событий «УстановкаПараметровСеанса». Создадим процедуру – обработчик события, для этого после открытия модуля сеанса выполним команду «Процедуры и функции», которая расположена в меню «Текст» главного меню (модуль должен быть активен).
В открывшемся окне нужно выделить единственную процедуру и нажать на кнопку «Перейти».
Будет создана процедура «УстановкаПараметровСеанса»
В этой процедуре параметру сеанса ИмяТекущегоКомпьютера установим имя текущего компьютера.
Проверим, как работает установка параметров сеанса. Для этого создадим обработку, форму обработки, и на управляемой форме обработки создадим реквизит ИмяКомпьютера, который разместим на форме в виде поля надписи.
Следующим шагом, создадим событие формы обработки ПриСозданииНаСервере, и в этом событии реквизиту формы обработки будем присваивать значение параметра сеанса.
Осталось проверить работу обработки.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655