Добавление собственных параметров сеанса с использованием типовых механизмов 1С: Кабинет сотрудника

21.07.25

Разработка - Механизмы типовых конфигураций

Небольшая инструкция по использованию механизма параметров сеанса в 1С: Кабинет сотрудника. Как добавить свои параметры и как их использовать.

Не так давно мне попалась задача по доработке Кабинета сотрудника. Это было мое первое знакомство с Элементом и с Кабинетом сотрудника. Задача стояла разработать функционал интеграции со сторонним сервисом подписания документов, но сейчас не об этом. 

В процессе решения задачи мне требовалось хранить для каждого сеанса некоторые параметры, которые актуальны только для текущего сеанса пользователя (маркер доступа, время его жизни и т.п.). В 1С 8 можно было бы использовать параметры сеанса, например, и я стал искать что-то похожее в Элементе. 

И вот что я выяснил. Для хранения подобных данных, вместо параметров сеанса, в восьмерке в элементе удобно использовать свойства клиентского приложения (конкретно в случае с кабинетом сотрудника это компонент интерфейса типа СтандартноеКлиентскоеПриложениеСРазделами, найти его можно по пути llc_1c\ess\СтандартноеПриложение\ОсновноеПриложение.yaml).
Оно существует, пока существует сам сеанс пользователя, и соответственно его свойства тоже.

Затем, разбираясь уже с самим Кабинетом сотрудника, я обнаружил, что в нем существует механизм для работы с параметрами сеанса, реализованный с помощью контрактов. В самом приложении создано одно свойство ХранилищеПараметровСеанса с типом Соответствие<Строка, Объект> и с помощью контракта ПараметрыСеансаПоставщик в него в разных подсистемах добавляются различные параметры. И есть ещё один контракт ПараметрыСеансаСервис, который используется для получения значений, его никуда добавлять не нужно, он реализуется только в одной подсистеме (СтандартноеПриложение) и используется для получения значений параметров сеанса.

Вот про этот механизм я и хочу рассказать. Как добавить свои параметры сеанса и как их использовать. Разработка велась на версии Кабинета сотрудника 8.1, версия Элемента 5.3.

При реализации задачи я создал отдельную подсистему, в которой и делал свои доработки. У меня в ней имеется модуль доступный в проекте с окружением КлиентИСервер (назовем его ИнтеграцияКриптоПроDSS), и по примеру других типовых подсистем я создал общий модуль РеализацияКонтрактовСервер с областью видимости ВПодсистеме и окружением Сервер. Этот модуль, судя по названию, используется для реализации контрактов, видимо чтобы отделить эти методы от всех остальных.

Итак, первым делом в своем модуле ИнтеграцияКриптоПроDSS (который не для реализации контрактов) я описываю структуру параметров сеанса, которые мне необходимы. Это не обязательно должна быть структура, как понятно из типа свойства ХранилищеПараметровСеанса (Соответствие<Строка, Объект>) туда можно сунуть почти что угодно, но мне подходит именно структура.

@ВПроекте
структура ПараметрыСеанса
    пер МаркерДоступа: Строка
    пер ВремяЖизниМаркераДоступа: Число
    пер МоментПолученияМаркераДоступа: Момент
    пер ИдентификаторСертификата: Число
    пер ПИНКодСертификата: Строка
;

И тут же описываю константу с именем параметров сеанса (ключ соответствия). По этому ключу я смогу обращаться к своим параметрам в хранилище.

@ВПодсистеме
конст КЛЮЧ_ПАРАМЕТРОВ_СЕАНСА: Строка = "ИнтеграцияКриптоПроDSSПараметрыСеанса"

Тут же описываем метод, который будет возвращать нам наши параметры сеанса, нашу описанную выше структуру из хранилища.

@ВПроекте
@НаКлиенте
метод ПараметрыСеанса(): ПараметрыСеанса
    возврат ПараметрыСеансаСервис.ПолучитьСервис().ПараметрПоКлючу(КЛЮЧ_ПАРАМЕТРОВ_СЕАНСА) как ПараметрыСеанса
;

Тут мы как раз и используем второй контракт ПараметрыСеансаСервис. Он вызывает метод из подсистем СтандартноеПриложение, который по переданному нами ключу получает из хранилища параметров сеанса нужный нам параметр. 

Теперь в наш модуль реализация контрактов в свойства мы добавляем настройки типа и указываем там нужный нам контракт ПараметрыСеансаПоставщик (контракт имеет область видимости ВПроекте так что проблем быть не должно).

Текст yaml файла:

ВидЭлемента: ОбщийМодуль
Ид: 32413428-81fa-432a-ad96-0b8234931dbe
Имя: РеализацияКонтрактовСервер
ОбластьВидимости: ВПодсистеме
Импорт:
    - СтандартноеПриложение
НастройкиТипа:
    Контракты:
        - ПараметрыСеансаПоставщик
Окружение: Сервер

В самом модуле нам нужно описать метод реализации контракта. Метод инициализирует параметры сеанса, создает пустую переменную с нужным нам типом и возвращает соответствие, в которое помещает наши параметры по нашему ключу. При необходимости заполнить параметры перед помещением мы можем это сделать тут же.

// Контракт ПараметрыСеансаПоставщик  
@ВПроекте
@Реализация
метод КоллекцияПараметровСеанса(МобильныйИнтерфейс: Булево): Соответствие<Строка, Объект>
    пер ПараметрыСеанса = новый ИнтеграцияКриптоПроDSS.ПараметрыСеанса()
  
    возврат {ИнтеграцияКриптоПроDSS.КЛЮЧ_ПАРАМЕТРОВ_СЕАНСА: ПараметрыСеанса}
;
// Конец ПараметрыСеансаПоставщик

И теперь при необходимости, используя метод ИнтеграцияКриптоПроDSS.ПараметрыСеанса(), мы можем обращаться к созданным нами параметрам сеанса читать и изменять их.

Если поискать в проекте реализацию контракта ПараметрыСеансаПоставщик, можно найти, какие параметры добавляют другие подсистемы.

Вступайте в нашу телеграмм-группу Инфостарт

Параметры сеанса Кабинет сотрудника Элемент

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

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данное расширение — это механизм, сделанный при помощи двух модулей из БСП (3.1.11.415), который позволяет динамически добавлять команды (кнопки и не только при желании) на формы управляемого приложения без изменения конфигурации. На примере данного механизма удобно рассмотреть некоторые возможности для расширения функционала объектов, которые подключены к механизму библиотеки стандартных подсистем.

1 стартмани

20.03.2026    1570    InFlach    0    

6

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    3120    AlexeyPROSTO_1C    4    

20

Механизмы типовых конфигураций Программист Стажер 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Как в ЗУП работает механизм расстановки времени в регистрах сведений с помощью подписки на события?Рассматривается логика сдвигов для разных типов документов (прием, увольнение, отпуск) и дается инструкция по подключению нового регистра к этому механизму.

03.03.2026    1673    YA_1100893639    1    

7

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

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

11.08.2025    8480    user1988284    0    

23
Для отправки сообщения требуется регистрация/авторизация