1с как инициализировать параметр сеанса
Перейти к содержимому

1с как инициализировать параметр сеанса

  • автор:

Использование параметров сеанса

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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С

В окне «Дополнительно» интересует закладка «Права», в которой следует проверить флажки у прав Получение и Установка для нужной роли.

Права параметра сеанса в 1С

Получение ­– это право на получение значения параметра сеанса;

Установка – это право на установку значения параметра сеанса;

Параметр сеанса создан, теперь необходимо написать алгоритм установки значения в этот параметра сеанса. Делается это в модуле сеанса.

Модуль сеанса в 1С

Модуль сеанса необходим для установки значений параметров сеанса. Мы уже создали единственный параметр сеанса в конфигурации – «Имя текущего компьютера».

Научимся устанавливать значение в этот параметр сеанса при запуске сеанса пользователя. Делается это в модуле сеанса. Откроем его. Модуль сеанса открывается достаточно просто: выделяется самый верхний узел конфигурации, вызывается контекстное меню, в котором необходимо выполнить команду «Открыть модуль сеанса».

Открытие модуля сеанса в 1С

Впоследствии откроется модуль сеанса, в котором нас интересует один-единственный обработчик событий «УстановкаПараметровСеанса». Создадим процедуру – обработчик события, для этого после открытия модуля сеанса выполним команду «Процедуры и функции», которая расположена в меню «Текст» главного меню (модуль должен быть активен).

Создание обработчика УстановкаПараметровСеанса в 1С

В открывшемся окне нужно выделить единственную процедуру и нажать на кнопку «Перейти».

Создание обработчика УстановкаПараметровСеанса в 1С

Будет создана процедура «УстановкаПараметровСеанса»

Процедура УстановкаПараметровСеанса в модуле сеанса 1С

В этой процедуре параметру сеанса ИмяТекущегоКомпьютера установим имя текущего компьютера.

Проверим, как работает установка параметров сеанса. Для этого создадим обработку, форму обработки, и на управляемой форме обработки создадим реквизит ИмяКомпьютера, который разместим на форме в виде поля надписи.

Управляемая форма обработки 1С

Следующим шагом, создадим событие формы обработки ПриСозданииНаСервере, и в этом событии реквизиту формы обработки будем присваивать значение параметра сеанса.

Осталось проверить работу обработки.

Параметр сеанса на форме обработки 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

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

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