Завершаем сеансы и удаляем пользователей из базы 1С

· 9 мин

Содержание

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

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

Чем сеанс отличается от пользователя

Это ключевое различие, без него легко сломать не то.

  • 🧑‍💻 Пользователь информационной базы — это учётная запись для входа: логин, способ аутентификации, набор ролей. Он существует постоянно, пока вы его не удалите.
  • 🔌 Сеанс — это конкретное подключение этого пользователя прямо сейчас. Один человек может держать несколько сеансов (толстый клиент, веб-клиент, фоновое задание). Сеанс живёт, пока открыт клиент или не завершён принудительно.

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

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

Как завершить сеансы в клиент-серверной базе

В клиент-сервере все сеансы видит и завершает кластер серверов . Способа два: графическая консоль и командная строка.

Через консоль администрирования серверов

Оснастка называется Администрирование серверов 1С:Предприятия (ставится вместе с сервером). Порядок:

  1. Запустите консоль, разверните Central server → Кластеры → ваш кластер.
  2. Откройте узел Сеансы. В списке — все активные подключения: пользователь, приложение, компьютер, время начала.
  3. Выделите нужный сеанс (или несколько с Ctrl), правой кнопкой → Удалить.

Сеанс закрывается в течение нескольких секунд. Клиент у пользователя при этом завершится — несохранённые данные в открытой форме пропадут.

Частая причина «не отпускает базу», даже когда все люди вышли, — фоновые и регламентные задания. В списке сеансов они видны как приложение BackgroundJob или фоновое задание без привязки к конкретному сотруднику. Их тоже видно в узле Сеансы, и при подготовке к обновлению их нужно либо дождаться, либо завершить вместе с остальными. Если задания запускаются по расписанию и тут же цепляют базу снова — отключите расписание регламентных заданий на время работ.

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

Через командную строку rac

Если графической консоли под рукой нет (например, на Linux-сервере), работает утилита rac из каталога bin платформы. Базовая логика:

rac cluster list
rac session list --cluster=<идентификатор кластера>
rac session terminate --cluster=<идентификатор кластера> --session=<идентификатор сеанса>

Первая команда покажет идентификатор кластера, вторая — список сеансов с их UUID, третья завершит конкретный сеанс. Точный набор параметров и аутентификацию (администратор кластера) смотрите в rac help — там же команды для просмотра лицензий (rac session list --licenses).

Не используйте rac для «пересоздания кластера» и не удаляйте базу из списка, если просто не можете войти — так теряется вся служебная настройка. Для разлогинивания достаточно завершить сеансы.

Как закрыть сеансы в файловой базе

В файловом варианте нет службы кластера и нет узла Сеансы. Управлять подключениями на уровне сервера нечем — каждый клиент работает с файлом 1Cv8.1CD напрямую.

Что реально помогает:

  • 👥 Попросить всех выйти. Список подключённых виден в Все функции → Стандартные → Активные пользователи.
  • 🖥 Если клиент завис и не закрывается, снять процесс 1cv8.exe на машине пользователя (Диспетчер задач). После этого блокировка освобождается.
  • 🔄 Если база «думает», что в ней ещё кто-то есть, хотя все вышли — убедитесь, что на всех компьютерах закрыты окна 1С и нет запущенного веб-клиента или фонового задания.

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

Как заблокировать вход, пока идут работы

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

В режиме 1С:Предприятие (БП 3.0, ЗУП 3.1, УТ 11) откройте Администрирование → Обслуживание → Блокировка работы пользователей. Здесь задаётся время начала блокировки, текст сообщения для пользователей и код, по которому администратор сам сможет войти. По наступлении времени действующие сеансы завершаются, новые входы отклоняются.

В клиент-сервере то же самое делается в свойствах информационной базы через консоль кластера: флаг Блокировка начала сеансов включена, сообщение и код разрешения. Пользователь с этим кодом (ключ /UC в параметрах запуска) войдёт даже при включённой блокировке.

Таблица — какой способ когда удобнее:

СитуацияСпособ
Надо выгнать одного зависшегоКонсоль кластера → Сеансы → Удалить
Запретить вход всем на час обновленияБлокировка работы пользователей (в базе)
Сервер на Linux, нет оснасткиrac session terminate
Файловая базаПопросить выйти / снять процесс на машине

Монопольный режим: когда он реально нужен

Распространённое заблуждение — что Конфигуратор «захватывает базу монопольно» при любом открытии. Это не так. Открыть Конфигуратор можно и при работающих пользователях.

Монопольный (исключительный) доступ нужен только для операций, меняющих структуру или целостность базы:

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

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

Как удалить пользователя из информационной базы

Теперь про саму учётку. Здесь важно, что в типовых конфигурациях есть два связанных объекта:

  • Пользователь информационной базы — логин и аутентификация на уровне платформы;
  • Элемент справочника Пользователи — карточка сотрудника в прикладном решении, к которой привязан этот логин.

Как действовать:

  1. Снять доступ, не удаляя. Самый безопасный вариант для уволившихся. В режиме 1С:Предприятие откройте Администрирование → Настройки пользователей и прав → Пользователи, зайдите в карточку и снимите флаг Вход в программу разрешён. Человек больше не войдёт, но все его документы и история действий останутся корректными.
  2. Пометить на удаление. В том же списке выделите пользователя → Пометить на удаление. Затем через Администрирование → Обслуживание → Удаление помеченных объектов программа проверит ссылки и удалит, если на пользователя ничего не ссылается.
  3. Удалить логин в Конфигураторе. Администрирование → Пользователи — здесь живут именно учётные записи входа. Удаление строки убирает возможность входа, но карточку в справочнике не трогает.

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

Отдельно про администратора. Если потерян пароль администратора базы, его можно сбросить через Конфигуратор под другой учёткой с полными правами. А вот с паролем администратора кластера серверов так не выйдет: его не «ломают» запросами — останавливают службу сервера, восстанавливают служебные файлы кластера из резервной копии или обращаются к администратору сервера. Пересоздавать кластер и удалять его настройки ради забытого пароля нельзя — потеряете все зарегистрированные базы.

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

Почему не стоит чистить пользователей напрямую через SQL

В клиент-серверной базе под MS SQL или PostgreSQL возникает соблазн «почистить пользователей запросом» — особенно у тех, кто привык к администрированию СУБД. Делать этого не нужно, и вот почему.

Список пользователей и их аутентификация хранятся в служебных структурах 1С в зашифрованном виде и обслуживаются платформой. Прямое изменение системных таблиц 1С средствами СУБД не поддерживается и ломает аутентификацию: база перестаёт открываться, а восстановление — только из резервной копии.

Что из «уровня СУБД» законно и иногда нужно:

  • 🔎 Посмотреть, какое соединение держит блокировку. В MS SQL это Activity Monitor или системные представления; в PostgreSQL — pg_stat_activity. Это диагностика, а не чистка.
  • 🛑 В крайнем случае снять подвисшее соединение на уровне СУБД. Но «убитое» соединение — это не чистое завершение сеанса 1С: открытая транзакция откатится, и клиент получит ошибку. Делать это стоит, только если сеанс не завершается штатно через консоль.

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

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

Как не доводить до аварийного сброса

Большинство «срочных сбросов» — следствие того, что люди не выходят из базы на ночь и перед обновлениями. Несколько привычек снимают проблему.

Регламент перед обновлением и обслуживанием
Выполнено: 0 / 6

Ещё несколько мер на каждый день:

  • ⏰ Настройте автоматическое завершение неактивных сеансов — параметр тайм-аута задаётся в свойствах информационной базы на уровне кластера. Забытые с вечера клиенты будут отключаться сами.
  • 🔑 Для уволенных снимайте флаг входа сразу, а не копите «мёртвые» учётки — так и лицензии не занимаются, и список чище.
  • 📋 Держите расписание обновлений, чтобы блокировку включать заранее, а не выгонять людей в рабочее время.

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

Завершение сеанса удаляет пользователя?
Нет. Завершается только текущее подключение, учётная запись и все данные пользователя остаются. Чтобы убрать доступ, снимите флаг входа или удалите логин отдельно.
Можно ли завершить сеанс в файловой базе через консоль?
Нет, в файловом варианте нет службы кластера и узла с сеансами. Там либо просят выйти, либо снимают зависший процесс 1cv8.exe на машине пользователя.
Что делать, если не знаю код разрешения при включённой блокировке?
Код задаётся там же, где включается блокировка (в настройке блокировки работы пользователей или в свойствах базы в консоли кластера). Администратор может его изменить или отключить блокировку — после этого вход откроется.
Пользователь уволился — удалять его или просто запретить вход?
В рабочей базе надёжнее запретить вход (снять флаг Вход в программу разрешён). Полное удаление часто не проходит из-за ссылок в документах, которые он создавал, и оставляет битые ссылки.
Как узнать, кто сейчас держит базу перед обновлением?
В режиме 1С:Предприятие — Все функции → Стандартные → Активные пользователи. В клиент-сервере — узел Сеансы в консоли кластера или команда rac session list.