Добавление собственных параметров сеанса с использованием типовых механизмов 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.ПараметрыСеанса(), мы можем обращаться к созданным нами параметрам сеанса читать и изменять их.

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

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

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

См. также

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

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    2593    user2012581    44    

46

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

В типовых решениях типа УТ, КА, ERP при вводе строк в поля ввода осуществляется поиск по первым символам. С помощью небольшой доработки (делается через расширение) можно организовать поиск по вхождению.

02.06.2025    587    lkey    0    

5

Работа с интерфейсом БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С v8.3 1C:ERP Бесплатно (free)

В этой статье я расскажу, как в конфигурации 1С:ERP 2.5 при начале работы системы настроить открытие своих нетиповых форм (в том числе и из внешних обработок). Данную методику можно использовать как на тонком клиенте, так и на мобильном или веб-клиенте, а также в мобильном приложении.

12.05.2025    2416    PROSTO-1C    1    

16

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

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

27.02.2025    1040    PROSTO-1C    1    

6
Оставьте свое сообщение