Сеансы пользователей 1С 8.3: от входа в базу до принудительного завершения

· 10 мин

Содержание

Сеанс в 1С — это один «вход» в информационную базу: конкретный пользователь, конкретное приложение, свой набор параметров и своё время начала. Открыли тонкий клиент — появился сеанс. Запустился регламентный обмен — ещё один сеанс. Закрыли программу — сеанс завершился.

В клиент-серверном варианте сеансами управляют через Консоль кластера серверов 1С:Предприятия или утилиту rac. В файловом — через список активных пользователей. Как работает сеанс изнутри, какие они бывают, как найти зависший и почему от сеансов зависит расход лицензий — по порядку.

Как устроен сеанс в архитектуре 1С 8.3

Сеанс — логическое понятие. Платформа создаёт его при входе и хранит о нём сведения: номер, пользователя, имя компьютера, приложение, время начала и последней активности.

Сеанс не равен сетевому подключению. Рядом с ним живёт соединение — физический канал между клиентом и рабочим процессом сервера.

ПонятиеЧто этоПример
СеансЛогический вход пользователя или задания в базуБухгалтер Иванова работает в тонком клиенте
СоединениеКанал связи с рабочим процессом rphostКлиент Ивановой в эту секунду выполняет запрос на сервере
Рабочий процессПроцесс сервера, который выполняет кодrphost.exe обслуживает десятки сеансов

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

Отсюда понятие спящего сеанса. Пассивный сеанс без связи с клиентом платформа переводит в спящее состояние, а через заданное время завершает. Оба интервала задаются в свойствах информационной базы в консоли кластера: время засыпания пассивного сеанса и время завершения спящего сеанса.

Параметры сеанса

У каждого сеанса есть свои данные — параметры сеанса. Разработчик описывает их в конфигураторе (ветка Общие → Параметры сеанса), а значения задаёт при старте в модуле сеанса, в процедуре УстановкаПараметровСеанса.

Типичный пример — текущий пользователь или текущая организация, на которые ссылаются ограничения доступа на уровне записей. Параметры сеанса видит только свой сеанс, другим пользователям они недоступны.

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

Какие бывают сеансы: пользователи, фоновые и регламентные задания

В списке сеансов видна колонка «Приложение». По ней понятно, кто именно занимает базу.

Приложение в консолиИдентификаторКто это
Тонкий клиент1CV8CОбычная работа пользователя
Толстый клиент1CV8Старые обработки, внешние отчёты, обычные формы
Веб-клиентWebClientВход через браузер
КонфигураторDesignerРазработчик или администратор
Фоновое заданиеBackgroundJobКод, запущенный без интерфейса
COM-соединениеCOMConnectionВнешняя программа через COM
Веб-сервисWSConnectionОбмен через SOAP
HTTP-сервисHTTPServiceConnectionОбращения к REST-интерфейсу базы

Идентификаторы нужны, когда работаете с сеансами из кода или через rac: там выводятся именно они.

Интерактивные сеансы

Это пользователи за компьютером: тонкий, толстый и веб-клиент, а также конфигуратор. Один человек может держать сразу несколько сеансов — например, открыть базу дважды или параллельно запустить конфигуратор.

Фоновые задания

Фоновое задание — код, который выполняется на сервере без окна. Его запускает программа: формирование тяжёлого отчёта, загрузка выписки, проведение пакета документов. Каждое задание получает свой сеанс и завершает его, когда работа окончена.

Регламентные задания

Регламентное задание — это фоновое задание по расписанию. Обмен с сайтом каждые 15 минут, пересчёт итогов ночью, загрузка курсов валют утром.

  • 🖥️ В клиент-серверном варианте регламентные задания запускает сам кластер. Отключить их для базы можно флажком «Блокировка регламентных заданий включена» в свойствах базы в консоли.
  • 📁 В файловом варианте отдельного планировщика нет. Задания выполняются в рамках сеанса одного из запущенных клиентов, поэтому, если никто не работает в базе, ночной обмен не пройдёт.

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

Управление сеансами в консоли кластера серверов

Консоль кластера ставится вместе с сервером 1С и подключается к агенту сервера, порт по умолчанию — 1540. Путь к списку сеансов в дереве:

Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы

Узел «Сеансы» есть и на уровне всего кластера — там видны сеансы всех баз сразу.

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

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

Как завершить сеанс принудительно

  1. Найдите сеанс в списке.
  2. Щёлкните правой кнопкой и выберите «Удалить».
  3. Подтвердите действие.

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

В свежих версиях платформы в контекстном меню сеанса есть также команда прерывания текущего серверного вызова. Она останавливает долгую операцию, но оставляет сеанс живым — мягкий вариант для «повисшего» отчёта.

Как выгнать всех и не пустить новых

Для обновления конфигурации или реструктуризации нужны базы без пользователей. Для этого откройте свойства базы в консоли и заполните блок блокировки:

  • ✅ флажок «Блокировка начала сеансов включена»;
  • 🕐 время начала и окончания блокировки;
  • 💬 сообщение, которое увидят пользователи при попытке входа;
  • 🔑 код разрешения.

Код разрешения — главный приём администратора. Сеансы закрыты для всех, но вы сами заходите, добавив к параметрам запуска ключ /UC:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC"Obnovlenie2"

После работ снимите флажок блокировки. Её забывают чаще, чем кажется, и утром бухгалтерия не может войти в базу.

Сеансы из командной строки: rac

Консоль удобна вручную, а для скриптов есть утилита rac. Она работает через сервер администрирования ras, его порт по умолчанию — 1545. Сначала узнайте идентификатор кластера, затем выведите сеансы:

rac cluster list
rac session list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера> --licenses
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>

Если на кластере заданы администраторы, добавьте к командам --cluster-user и --cluster-pwd. Полный список параметров покажет rac help session.

Сеансы в файловой базе

Консоли кластера здесь нет. Список работающих пользователей откройте в конфигураторе: Администрирование → Активные пользователи. В пользовательском режиме есть та же обработка: Функции для технического специалиста → Стандартные → Активные пользователи (пункт «Функции для технического специалиста» включается в параметрах программы).

Завершить чужой сеанс в файловой базе штатно нельзя. Попросите пользователя закрыть программу. Если компьютер завис или человек ушёл, завершите процесс 1cv8c.exe или 1cv8.exe на его машине через диспетчер задач.

Мониторинг сеансов и соединений: где искать нагрузку

Список сеансов — это не только «кто зашёл». В нём видно, кто сейчас грузит сервер и базу данных.

Колонки, которые стоит включить:

  • ⏱️ Время вызова (текущее) — сколько длится текущий серверный вызов. Минуты здесь — повод разобраться.
  • 🗄️ Время вызова СУБД (текущее) — сколько из этого времени ушло на запрос к СУБД.
  • 🔒 Захвачено СУБД — сеанс держит соединение с СУБД, то есть выполняет запрос или транзакцию.
  • 💤 Спящий — сеанс без связи с клиентом.
  • 🖥️ Процесс и Соединение — какой рабочий процесс обслуживает вызов.

Узел «Блокировки» рядом с «Сеансами» показывает управляемые блокировки. Если пять пользователей жалуются на зависание проведения, загляните туда: часто их всех держит один сеанс с долгой транзакцией.

Журнал регистрации

Начало и окончание каждого сеанса пишется в журнал регистрации: события «Сеанс. Начало», «Сеанс. Завершение», «Сеанс. Аутентификация». Отбор по пользователю за день покажет, когда человек входил, с какого компьютера и сколько раз переподключался.

Сеансы из кода

Для своей обработки мониторинга есть встроенные функции:

Сеансы = ПолучитьСеансыИнформационнойБазы();
ТекущийНомер = НомерСеансаИнформационнойБазы();

Для Каждого Сеанс Из Сеансы Цикл
    Если Сеанс.НомерСеанса = ТекущийНомер Тогда
        Продолжить;
    КонецЕсли;
    ИмяПользователя = ?(Сеанс.Пользователь = Неопределено, "<нет>", Сеанс.Пользователь.Имя);
    Сообщить(СтрШаблон("%1 | %2 | %3 | %4",
        Формат(Сеанс.НомерСеанса, "ЧГ=0"),
        ИмяПользователя,
        ПредставлениеПриложения(Сеанс.ИмяПриложения),
        Сеанс.ИмяКомпьютера));
КонецЦикла;

Вызывайте её в серверной процедуре обработки, которую запускает администратор.

Технологический журнал

Когда консоль показывает лишь «что-то долго», включают технологический журнал. Его настраивают файлом logcfg.xml в каталоге conf платформы. События CALL, DBMSSQL, TLOCK, TTIMEOUT, TDEADLOCK дают номер сеанса, текст запроса и длительность. Журнал быстро растёт, поэтому включайте его на конкретную задачу и с отбором по длительности.

Зависшие сеансы: причины и что делать

Зависший сеанс выглядит по-разному: пользователь давно ушёл, а сеанс висит; отчёт строится час; база не даёт войти в монопольном режиме из-за «призрака».

Диагностика: выберите симптом

Если не помогло

Когда сеансы не удаляются из консоли или их список не обновляется, проблема уже в самом рабочем процессе. Крайняя мера — перезапуск службы «Агент сервера 1С:Предприятия».

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

Чтобы зависаний было меньше:

  • 📊 тяжёлые отчёты переводите в фоновое формирование;
  • 🌙 ночные обработки разносите по времени, чтобы они не пересекались;
  • 🔁 проверяйте, не запускает ли регламентное задание само себя чаще, чем успевает отработать.

Лицензии и лимит сеансов в 1С

Число одновременно работающих пользователей ограничено клиентскими лицензиями. Лицензию занимают интерактивные клиентские сеансы: тонкий, толстый и веб-клиент, конфигуратор. Фоновые и регламентные задания клиентскую лицензию не берут.

Как считаются лицензии на практике:

  • 💻 несколько сеансов с одного компьютера обычно занимают одну клиентскую лицензию;
  • 🖥️ на терминальном сервере каждый пользователь работает в своём сеансе Windows, и лицензию считают для каждого отдельно;
  • 🔑 серверная лицензия нужна самому серверу 1С и с клиентскими не смешивается.

Кто какую лицензию держит, проще всего узнать через rac session list --licenses. В консоли кластера то же видно в свойствах сеанса.

Когда лицензий не хватает, первым делом проверьте спящие сеансы и пользователей с двумя открытыми клиентами на разных машинах. Иногда лишний десяток лицензий съедают сеансы, которые никто не закрыл с вечера.

Закрыть вход конкретному человеку можно в карточке пользователя: в конфигурациях на БСП там есть настройка разрешения входа в программу. Если нужно отсечь всех, используйте блокировку начала сеансов из раздела про консоль.

Частые вопросы о сеансах 1С

Чем сеанс отличается от пользователя информационной базы?
Пользователь — это учётная запись в списке пользователей базы. Сеанс — факт входа под этой учётной записью. Один пользователь может держать несколько сеансов одновременно.
Почему номер сеанса у одного и того же человека каждый раз разный?
Номер присваивается при старте сеанса и не закреплён за пользователем. После перезахода он будет новым.
Можно ли запретить одному пользователю открывать базу дважды?
Штатного флажка в платформе нет. Ограничение делают кодом при старте сеанса: проверяют список сеансов через ПолучитьСеансыИнформационнойБазы() и завершают работу, если сеанс этого пользователя уже есть.
Сеанс конфигуратора мешает пользователям?
Сам по себе нет. Мешает операция: обновление конфигурации базы данных с изменением структуры требует, чтобы в базе не было других сеансов.
Где посмотреть, кто был в базе вчера вечером?
В журнале регистрации. Отберите события начала и завершения сеансов за нужный период — увидите пользователей, компьютеры и время.