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

· 10 мин

Содержание

Объекты «Параметры сеанса» объявляются в Конфигураторе, в ветке Общие → Параметры сеанса, а значения получают в модуле сеанса, в процедуре УстановкаПараметровСеанса(). Это ответ для программиста. Администратору же важнее другое: на то, как сеанс запустится и как себя поведёт, влияют ещё клиентские файлы, ключи командной строки и настройки кластера серверов.

Каждый уровень меняет свой человек: программист, администратор сервера или сам пользователь. Всё относится к платформе 8.3 и не зависит от конфигурации — БП, ЗУП и УТ работают по одним правилам.

Параметры сеанса в конфигурации: где объявляются и где заполняются

Параметр сеанса — это переменная, которая живёт ровно столько, сколько живёт сеанс пользователя. Её значение хранится на сервере и сбрасывается при завершении сеанса. Типичные примеры: текущий пользователь, текущая организация, признак обмена данными.

Как найти и посмотреть параметры сеанса:

  1. Откройте базу в Конфигураторе.
  2. Разверните дерево Конфигурация → Общие → Параметры сеанса.
  3. Откройте нужный параметр: на вкладке основных свойств виден его тип.
  4. Права на параметр задаются в ролях: для каждого параметра сеанса есть право «Получение» и право «Установка».

Значения параметрам присваивает модуль сеанса: правый клик по корню конфигурации → Открыть модуль сеанса. Платформа вызывает процедуру УстановкаПараметровСеанса в двух случаях:

  • 🚀 при старте сеанса — аргумент равен Неопределено;
  • 🔁 при первом обращении к параметру, который ещё не установлен, — аргумент содержит массив имён нужных параметров.

Второй случай позволяет не заполнять всё сразу, а ставить «тяжёлые» параметры по требованию. Пример модуля без БСП:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)

    Если ТребуемыеПараметры = Неопределено Тогда
        // Начало сеанса: ставим то, что нужно всегда
        УстановитьТекущегоПользователя();
        Возврат;
    КонецЕсли;

    // Отложенная установка: платформа передала имена параметров
    Для Каждого ИмяПараметра Из ТребуемыеПараметры Цикл
        Если ИмяПараметра = "ТекущийПользователь" Тогда
            УстановитьТекущегоПользователя();
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

Процедура УстановитьТекущегоПользователя()

    ИмяВхода = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    Ссылка = Справочники.Пользователи.НайтиПоНаименованию(ИмяВхода, Истина);
    ПараметрыСеанса.ТекущийПользователь = Ссылка;

КонецПроцедуры

Модуль сеанса выполняется в привилегированном режиме, поэтому права ролей здесь не мешают.

В типовых конфигурациях на БСП модуль сеанса почти пустой: он передаёт управление в СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(). Свои параметры там добавляют через обработчики в общем модуле ОбщегоНазначенияПереопределяемый (процедура ПриДобавленииОбработчиковУстановкиПараметровСеанса), а не правкой модуля сеанса.

Клиентские файлы: ibases.v8i, 1CEStart.cfg и conf.cfg

Часть параметров сеанса задаётся ещё до подключения — на компьютере пользователя. Это файлы стартера и платформы.

ФайлГде лежитЧто в нём влияет на сеанс
ibases.v8i%APPDATA%\1C\1CEStart\Строка подключения к базе, тип клиента, версия платформы, дополнительные параметры запуска
1CEStart.cfg (пользовательский)%APPDATA%\1C\1CEStart\Списки баз, версия по умолчанию, настройки стартера
1CEStart.cfg (общий)%ProgramData%\1C\1CEStart\То же для всех пользователей компьютера, общие списки баз
conf.cfgпапка conf установленной платформыРасположение общих настроек (ConfLocation)
logcfg.xmlпапка confТехнологический журнал
nethasp.iniпапка confПоиск сервера аппаратных ключей защиты

Главный из них — ibases.v8i. Каждая база в нём — отдельная секция. Пример:

[Бухгалтерия — офис]
Connect=Srvr="srv1c";Ref="buh";
ID=3f1c2a10-0000-0000-0000-000000000000
Folder=/
ClientConnectionSpeed=Normal
App=ThinClient
WA=1
Version=8.3
AdditionalParameters=/DisableStartupMessages

Что здесь важно для сеанса:

  • 🔌 Connect — куда подключаться: File= для файловой базы, Srvr= и Ref= для серверной;
  • 🖥️ App — тип клиента: ThinClient, ThickClient, WebClient или Auto;
  • 🔐 WA=1 — разрешена аутентификация Windows;
  • 🔢 Version — какой версией платформы открывать базу;
  • ⚙️ AdditionalParameters — ключи запуска, которые добавятся к каждому старту.

Править файл руками удобно при массовом развёртывании. Для одного пользователя проще открыть окно запуска, выделить базу и нажать «Изменить»: последний шаг мастера содержит поле дополнительных параметров запуска.

Ключи командной строки, которые меняют параметры сеанса

Ключи запуска 1cv8.exe (или 1cv8c.exe для тонкого клиента ) задают параметры конкретного сеанса. Они действуют только на этот запуск и ничего не сохраняют в базе.

Пример ярлыка:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8c.exe" ENTERPRISE /S"srv1c\buh" /N"Иванова" /WA- /C"РежимОбмена" /DisableStartupMessages

Номер версии в пути — пример, подставьте свой.

КлючЧто задаёт
/F"путь"Каталог файловой базы
/S"сервер\база"Серверная база
/N"имя", /P"пароль"Пользователь и пароль
/WA- / /WA+Запретить или разрешить аутентификацию Windows
/C"строка"Произвольная строка, которую программа читает через ПараметрЗапуска
/LЯзык интерфейса
/VLКод локализации сеанса (формат чисел и дат)
/UC"код"Код разрешения входа при установленной блокировке сеансов
/Z"..."Значения разделителей для конфигураций с разделением данных
/O"Low"Низкая скорость соединения
/ClearCacheОчистка кеша клиента перед стартом
/UsePrivilegedModeЗапуск в привилегированном режиме (нужны административные права)

Пароль в /P хранится в ярлыке открытым текстом. Для рабочих мест лучше аутентификация Windows или ввод пароля при входе.

Ключ /C — самый «программистский». Строку из него можно разобрать в обработчике ПриНачалеРаботыСистемы и, например, через серверный вызов записать в параметр сеанса признак особого режима.

Параметры сеансов на сервере: консоль кластера и свойства базы

В клиент-серверном варианте часть правил сеанса задаётся на сервере 1С. Консоль администрирования кластера работает через агент сервера (порт 1540 по умолчанию).

Свойства информационной базы (консоль → кластер → Информационные базы → база → Свойства):

  • 🔒 блокировка начала сеансов: включение, время начала и окончания, сообщение, код разрешения;
  • ⏸️ блокировка регламентных заданий;
  • 🔗 внешнее управление сеансами и признак его обязательного использования;
  • 🛡️ профиль безопасности;
  • 🎫 разрешение выдавать клиентские лицензии сервером 1С:Предприятия;
  • 📅 смещение дат, параметры СУБД.

Ветка Сеансы показывает все активные сеансы базы: пользователя, компьютер, приложение, время начала, рабочий процесс. Отсюда же сеанс можно завершить.

Завершение сеанса из консоли обрывает работу пользователя без сохранения. Несохранённый документ пропадёт. Предупредите человека или делайте это вне рабочего времени.

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

Без графической консоли то же делают утилитой rac через сервер администрирования ras:

rac cluster list
rac session list --cluster=<id кластера>

Остальные подкоманды смотрите в справке: rac help session, rac help infobase.

Ещё один набор серверных параметров — в самой базе. В Конфигураторе: Администрирование → Параметры информационной базы. Там находятся время засыпания пассивного сеанса, время завершения спящего сеанса, требования к паролям и ограничения неудачных попыток входа.

Реестр Windows и переменные окружения

Реестр в 1С играет скромную роль. Параметры конкретного сеанса пользователя там не хранятся. Но в реестре записана строка запуска службы агента сервера, а от неё зависит, как сервер принимает сеансы.

Где посмотреть:

  1. Откройте regedit.
  2. Перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
  3. Найдите службу агента сервера 1С:Предприятия 8.3 (имя вида «1C:Enterprise 8.3 Server Agent (x86-64)»).
  4. Значение ImagePath содержит строку запуска ragent.exe.

В строке видны порт агента (-port), порт менеджера кластера (-regport), диапазон портов рабочих процессов (-range), каталог служебных файлов кластера (-d) и признак отладки (-debug).

Правка ImagePath требует перезапуска службы, а он обрывает все сеансы на сервере. Делайте это в окно обслуживания и сохраните копию значения до изменения.

Переменные окружения Windows влияют на клиент косвенно:

  • 📁 %APPDATA% — где лежат ibases.v8i и пользовательский 1CEStart.cfg;
  • 🗂️ %LOCALAPPDATA% — где хранится кеш клиента (%LOCALAPPDATA%\1C\1cv8);
  • 🧪 %TEMP% — временные файлы сеанса.

Если на терминальном сервере профили перенаправлены, эти пути меняются. Отсюда частая «загадка»: у пользователя пропал список баз — профиль переехал, а ibases.v8i остался по старому адресу.

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

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

// Общий модуль РаботаСПараметрамиСеанса: Сервер, Вызов сервера
Функция ТекущаяОрганизация() Экспорт
    Возврат ПараметрыСеанса.ТекущаяОрганизация;
КонецФункции

Что ещё нужно знать при работе из кода:

  • 🔑 права. Вне модуля сеанса чтение и запись проверяются по ролям. Если у роли нет права «Установка», запись упадёт с ошибкой доступа. Выход — дать право или обернуть код в УстановитьПривилегированныйРежим(Истина);
  • 🧱 типы. Для коллекций используйте фиксированные варианты: ФиксированныйМассив, ФиксированнаяСтруктура;
  • 🛡️ RLS. В текстах ограничений доступа к данным параметр сеанса подставляется как &ИмяПараметра. Поэтому правильная установка параметров в модуле сеанса — условие работы RLS;
  • 📝 запросы. В обычном запросе параметр сеанса сам не подставится, его передают через Запрос.УстановитьПараметр().

Рядом с параметрами сеанса есть встроенные функции, которые управляют свойствами самого сеанса:

ФункцияЧто делает
УстановитьЧасовойПоясСеанса() / ЧасовойПоясСеанса()Часовой пояс сеанса
ТекущийКодЛокализации()Код локализации, с которым работает сеанс
НомерСеансаИнформационнойБазы()Номер текущего сеанса
ПолучитьТекущийСеансИнформационнойБазы()Объект сеанса: пользователь, компьютер, приложение, время начала
ПолучитьСеансыИнформационнойБазы()Все активные сеансы базы
УстановитьБлокировкуСеансов()Программная блокировка входа
СтрокаСоединенияИнформационнойБазы()Строка подключения текущей базы

Блокировка из кода и из консоли кластера — одна и та же блокировка базы. Поэтому обработка БСП «Блокировка работы пользователей» в режиме Предприятия и флажок в консоли видят изменения друг друга.

Какая настройка главнее: приоритеты и конфликты

Когда одна и та же настройка задана в нескольких местах, действует правило: чем ближе к конкретному запуску, тем выше приоритет.

Что конфликтуетЧто победит
Ключ в ярлыке и параметры в ibases.v8iКлюч командной строки
AdditionalParameters в ibases.v8i и пустой ярлыкПараметры из ibases.v8i
/VL и региональные установки базыКлюч /VL
Значение параметра сеанса из модуля сеанса и запись из кода позжеПоследняя запись в рамках сеанса
Блокировка сеансов и код /UCВход пройдёт только при совпадении кода
Пользовательский и общий 1CEStart.cfgСписки баз объединяются

Отдельный случай — параметры сеанса и RLS. Если параметр, на который ссылается ограничение доступа, не удалось установить, пользователь получит ошибку уже при открытии списка. Причина в модуле сеанса, а не в ролях.

Что именно вы хотите настроить?

Как проверить, с какими параметрами работает сеанс

Если пользователь жалуется, что «у него всё не так», проверяйте по уровням снизу вверх.

1. Кто и откуда подключён. В Конфигураторе: Администрирование → Активные пользователи. Для серверной базы — ветка Сеансы в консоли кластера. Видны компьютер, приложение (тонкий, толстый, веб-клиент) и время начала.

2. С какими ключами запущен клиент. Откройте свойства ярлыка и проверьте ibases.v8i пользователя. Частая находка — забытый /C или /O"Low" в поле дополнительных параметров.

3. Какие значения у параметров сеанса. Запустите отладку, поставьте точку останова в серверной процедуре и вычислите в табло ПараметрыСеанса.ИмяПараметра. Без отладчика поможет простая внешняя обработка, которая через серверный вызов выводит значения сообщением.

4. Что записано в журнал регистрации. Начало и завершение сеансов фиксируются в журнале регистрации. Отфильтруйте по пользователю и событиям сеанса — увидите, когда и с какого компьютера был вход.

5. Технологический журнал — для сложных случаев. Создайте logcfg.xml в папке conf платформы:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1c_techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="SESN"/>
    </event>
    <property name="all"/>
  </log>
</config>

События SESN показывают работу сеансов, EXCP — исключения, в том числе ошибки установки параметров.

Технологический журнал быстро растёт. Включайте его на время диагностики, ставьте ограничение history в часах и удаляйте logcfg.xml, когда закончили.

Частые вопросы

Можно ли изменить параметр сеанса без перезапуска 1С?
Да. Код на сервере может записать новое значение в любой момент, если у роли есть право «Установка» или включён привилегированный режим. Новое значение действует до конца сеанса.
Сохраняются ли параметры сеанса после выхода из программы?
Нет. Значения живут только в рамках сеанса. Для постоянных настроек используйте хранилище общих настроек, константы или регистры сведений.
Почему параметр сеанса недоступен в клиентском модуле?
Коллекция ПараметрыСеанса существует только на сервере. Прочитайте значение функцией общего модуля с флагом «Вызов сервера».
Где задать параметры сеанса для файловой базы?
Так же, как для серверной: в конфигурации и модуле сеанса. Отличие только в том, что настроек кластера нет — блокировку ставят из Конфигуратора или обработкой в режиме Предприятия.
Почему после обновления конфигурации пользователи получают ошибку доступа при входе?
Обычно в обновлении появился новый параметр сеанса, на который ссылаются ограничения доступа, а в доработанном модуле сеанса его не заполняют. Сравните модуль сеанса с типовым и восстановите вызовы БСП.