К статье
Практический материал

Администрирование · 10 мин

Как узнать номер сеанса в 1С

Как узнать номер сеанса в 1С: через консоль кластера серверов, функцию НомерСеансаИнформационнойБазы, журнал регистрации и конфигуратор. Пошаговые инструкции.

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

Способ узнать номер зависит от режима работы базы. В файловом варианте доступны встроенные средства платформы и программные функции, а в клиент-серверном варианте основным инструментом становится консоль кластера серверов 1С. Ниже разобраны все рабочие методы — от простого просмотра в интерфейсе до получения номера программно во встроенном языке.

Что такое сеанс и чем он отличается от соединения

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

Важно не путать сеанс с соединением. В клиент-серверном варианте один сеанс обслуживается соединением с рабочим процессом кластера, но соединения могут пересоздаваться при обрывах, а сеанс при этом сохраняется. Именно номер сеанса фигурирует в журнале регистрации, в механизме управляемых блокировок и в инструментах администрирования.

Как посмотреть номер сеанса в режиме 1С:Предприятие

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

В этой таблице видны и сеансы фоновых заданий — у них в колонке «Приложение» указано «Фоновое задание» вместо «Тонкий клиент» или «Толстый клиент». Если нужно найти именно свой сеанс, ориентируйтесь на имя своего компьютера и время входа.

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

Как найти номер своего сеанса
  1. 1
    Откройте «Администрирование» → «Активные пользователи»
  2. 2
    Найдите строку со своим именем пользователя и компьютером
  3. 3
    Сверьте время начала сеанса с моментом вашего входа
  4. 4
    Считайте значение из колонки «Сеанс» — это и есть номер сеанса

Как узнать номер сеанса в консоли кластера серверов

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

Консоль показывает больше данных, чем клиентское приложение: здесь видны спящие сеансы, сеансы веб-сервисов, фоновые задания и объём вызовов СУБД. Сортировка по колонке «Сеанс» позволяет быстро найти нужный номер, а двойной щелчок по строке открывает карточку сеанса с детальной информацией.

Для доступа к консоли требуются права администратора кластера или администратора информационной базы. Если при открытии списка сеансов появляется запрос аутентификации, введите учётные данные администратора ИБ — они задаются в свойствах базы в консоли.

Как получить номер сеанса программно

Во встроенном языке 1С есть готовая функция НомерСеансаИнформационнойБазы(). Она не принимает параметров и возвращает число — номер текущего сеанса, в котором выполняется код. Это удобно для протоколирования, разграничения временных данных между сеансами и диагностики.

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

Сообщить("Текущий сеанс: " + НомерТекущегоСеанса);

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

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

Для Каждого Сеанс Из Сеансы Цикл

Сообщить(Сеанс.НомерСеанса);

КонецЦикла;

bsl
НомерСеанса = НомерСеансаИнформационнойБазы();
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
    Сообщить(Строка(Сеанс.НомерСеанса) + " | " + Сеанс.ИмяПриложения);
КонецЦикла;

Как найти номер сеанса через журнал регистрации

Журнал регистрации фиксирует события подключения и отключения с указанием номера сеанса. Откройте конфигуратор, перейдите в меню «Администрирование» → «Журнал регистрации» и установите отбор по событию «Сеанс. Аутентификация» или «Сеанс. Начало». В колонке «Сеанс» каждой записи виден номер, а рядом — пользователь и время.

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

Учтите, что при большом объёме журнала выборка может занимать время — сужайте период отбора и фильтруйте по пользователю. Если журнал ведётся в новом формате (SQLite), поиск работает заметно быстрее, чем в старом файловом формате lgf.

Сравнение способов: что выбрать в разных ситуациях

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

СпособРежим базыНужны праваКогда подходит
Активные пользователи в клиентеФайловый и клиент-серверныйОбычные (зависит от конфигурации)Быстро найти свой сеанс или сеанс коллеги
Консоль кластераТолько клиент-серверныйАдминистратор кластера или ИБПолный контроль, завершение сеансов, анализ нагрузки
НомерСеансаИнформационнойБазы()ЛюбойНе требуютсяПротоколирование и логика в коде
ПолучитьСеансыИнформационнойБазы()ЛюбойАдминистративныеМассовая обработка сеансов из кода
Журнал регистрацииЛюбойДоступ к конфигураторуПоиск уже завершённых сеансов
Маршрут решения

Как выбрать действие

Нужен номер своего текущего сеанса без прав администратораОткройте «Администрирование → Активные пользователи» или выполните НомерСеансаИнформационнойБазы()
База клиент-серверная и нужно завершить чужой сеансОткройте консоль кластера, раздел «Сеансы», найдите номер и завершите сеанс
Сеанс уже завершён и нужно узнать его номер задним числомИспользуйте журнал регистрации с отбором по пользователю и времени
Нужно найти все сеансы конкретного пользователя из кодаИспользуйте ПолучитьСеансыИнформационнойБазы() с фильтрацией по свойству Пользователь

Частые ошибки и ограничения

Распространённая ошибка — попытка завершить сеанс по имени пользователя вместо номера. Если у пользователя открыто два сеанса (например, тонкий клиент и фоновое задание), завершение «не того» сеанса приведёт к потере несохранённых данных в рабочем подключении. Всегда сверяйте номер сеанса, компьютер и время начала.

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

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

Типичные ошибки
01
Поиск сеанса только по имени пользователя — при нескольких подключениях легко перепутать и завершить рабочий сеанс
02
Использование номера сеанса как постоянного ключа в прикладной логике — после перезапуска сервера номера начинаются заново
03
Попытка посмотреть сеансы клиент-серверной базы через файловые инструменты — полная картина доступна только в консоли кластера
04
Игнорирование сеансов фоновых заданий — они тоже занимают номера и могут держать блокировки

FAQ

Может ли у одного пользователя быть несколько номеров сеансов?

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

Почему в списке активных пользователей нет номера сеанса?

В некоторых конфигурациях колонка «Сеанс» скрыта настройками формы. Нажмите «Ещё» → «Изменить форму» и включите отображение поля, либо посмотрите сеансы через консоль кластера или программно.

Сохраняется ли номер сеанса после перезапуска сервера 1С?

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

Как узнать номер сеанса фонового задания?

В консоли кластера в разделе «Сеансы» фоновые задания отображаются с типом приложения «Фоновое задание». Программно можно перебрать результат ПолучитьСеансыИнформационнойБазы() и отфильтровать по свойству ИмяПриложения.

Чем номер сеанса отличается от номера соединения?

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

Можно ли узнать номер сеанса без прав администратора?

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

Итог

Что важно запомнить

Номер сеанса — временный идентификатор подключения, уникальный только до перезапуска сервера. Свой сеанс проще всего узнать через «Активных пользователей» или функцию НомерСеансаИнформационнойБазы(), полный список сеансов клиент-серверной базы — в консоли кластера, а завершённые сеансы — в журнале регистрации.