Блокировка сеансов в 1С: что включилось и как вернуть людей в базу
Содержание
Утром бухгалтер звонит: «Пишет, что доступ к информационной базе запрещён». Или наоборот: база открывается, но проведение документа висит минуту, а потом падает с ошибкой о времени ожидания блокировки. Это два разных случая, и лечатся они по-разному. В первом на базе стоит запрет начала сеансов, во втором сеансы живы, но мешают друг другу блокировками данных.
Чтобы снять блокировку сеансов, откройте консоль администрирования серверов 1С, найдите базу в списке информационных баз, снимите флажок «Блокировка начала сеансов включена» и сохраните. Если нужно сначала выгнать зависших пользователей, завершите их сеансы в ветке «Сеансы» той же базы. Подробности и запасные способы ниже.
Сначала определите, какая у вас блокировка
Слово «блокировка» в 1С значит три разные вещи. Прежде чем что-то нажимать, сверьтесь с таблицей.
| Что видит пользователь | Что происходит | Где лечить |
|---|---|---|
| «Доступ к информационной базе запрещён», можно войти только с ключом доступа | Включён запрет начала сеансов | Свойства базы в консоли или форма блокировки в самой 1С |
| База не обновляется, пишет, что есть активные пользователи | Живые или зависшие сеансы мешают монопольному режиму | Список активных пользователей |
| Документы не проводятся, «Превышено время ожидания предоставления блокировки» | Конфликт блокировок данных между сеансами | Диагностика через консоль и технологический журнал |
| Не запускаются регламентные задания, обмены, фоновые отчёты | Включена блокировка регламентных заданий | Свойства базы в консоли |
Запрет начала сеансов не выгоняет тех, кто уже работает. Он лишь не пускает новых. Поэтому после его включения в базе часто остаются «хвосты» старых сеансов.
Почему сеансы вообще блокируются
Причин немного, и все они бытовые.
- 🔒 Администратор сам включил запрет перед обновлением или загрузкой копии и не снял. Самая частая история.
- 🔒 Запрет включила сама 1С: при обновлении через БСП или при загрузке данных программа закрывает вход на время работы.
- 🧟 Сеанс пользователя завис: вечер, закрытый ноутбук, оборвавшийся удалённый рабочий стол. Сервер ещё какое-то время считает его живым.
- ⏳ Длинная транзакция: закрытие месяца , массовое перепроведение, тяжёлый отчёт с записью. Остальные ждут её окончания.
- 🔁 Взаимная блокировка двух сеансов: каждый держит то, что нужно другому. Платформа разрывает такие пары сама, но жертвой становится один из пользователей.
- ⚙️ Жёсткие настройки: слишком маленький тайм-аут блокировки или включённый режим разделения данных, который держит больше, чем нужно.
Консоль администрирования: смотрим базу и сеансы
Для серверной базы это главный инструмент. Консоль входит в поставку платформы (оснастка «Администрирование серверов 1С:Предприятия»); если вы её не видите, поставьте компонент при установке платформы. Если консоль не подключается к кластеру, проверьте службу агента сервера и порт, по которому консоль обращается к серверу.
Находим базу и смотрим, что в ней творится
- Раскройте ветку центральных серверов, затем кластер.
- Откройте «Информационные базы» и выберите нужную.
- В ветке базы есть «Сеансы» и «Соединения». Первое показывает пользовательские сеансы с именем, приложением, временем начала и временем последней активности. Второе — технические подключения.
Зависший сеанс легко узнать: приложение «Тонкий клиент» или «Толстый клиент», а активности нет давно. У работающего человека время последней активности обновляется каждые несколько секунд. Если в колонке с учётной записью пусто, а приложение — фоновое задание или COM-соединение, это не человек, и трогать такой сеанс без понимания не стоит.
Снимаем запрет начала сеансов
- Двойным щелчком откройте свойства информационной базы.
- Найдите флажок включённой блокировки начала сеансов. Рядом лежат поля «Начало», «Конец», «Сообщение» и «Код разрешения».
- Снимите флажок. Если запрет был по расписанию, очистите даты: иначе блокировка включится сама в назначенное время.
- Проверьте соседний флажок блокировки регламентных заданий. Если после обновления не идут обмены или рассылки, дело в нём.
- Нажмите «ОК».
Отдельно про «Код разрешения». Пока запрет включён, зайти можно, добавив параметр /UC и код к строке запуска, например 1cv8.exe ENTERPRISE /S"srv1c\buh" /UCсвойКод. Так администратор заходит в закрытую базу, чтобы проверить результат работ, пока остальные ждут.
Завершаем сеансы вручную
Теперь самое чувствительное место: выгнать зависших или всех. Любое завершение обрывает работу пользователя, и несохранённые данные пропадут. Сначала предупредите людей, дождитесь окончания проведения, и только потом завершайте.
Через консоль администрирования
В ветке «Сеансы» выберите строку, вызовите контекстное меню и нажмите «Удалить» (в некоторых версиях консоли пункт называется «Завершить сеанс»). Консоль спросит подтверждение. После этого проверьте, что сеанс исчез. Бывает, что он остаётся в списке с пометкой завершения ещё несколько минут: сервер ждёт, пока клиент отпустит соединение.
Через сам Конфигуратор
Для файловых баз консоли нет, и этот способ часто единственный. Откройте Конфигуратор, зайдите в меню Администрирование → Активные пользователи. Список покажет компьютер, имя пользователя и время подключения. Кнопки «Завершить работу» там нет: отключить конкретного человека можно только на сервере или попросив его закрыть программу. Зато видно, кто держит базу, и это уже половина решения.
Изнутри обычной 1С
В типовых конфигурациях на БСП есть форма активных пользователей: раздел «Администрирование», подраздел «Поддержка и обслуживание», пункт «Активные пользователи». Отсюда можно посмотреть сеансы и включить блокировку работы пользователей с сообщением и временем — удобнее, чем объяснять всем голосом. Какие именно кнопки есть, зависит от версии БСП в конфигурации. Если пункта нет в вашей типовой конфигурации, работайте через консоль.
Командная строка: утилита rac
Когда консоль недоступна или нужно автоматизировать, пригодится rac, она лежит рядом с платформой на сервере. Базовые команды, в которых можно не сомневаться:
rac cluster list
rac session list --cluster=<идентификатор_кластера>
rac session terminate --cluster=<идентификатор_кластера> --session=<идентификатор_сеанса>
Идентификаторы — длинные GUID из вывода предыдущих команд. Список остальных параметров и команд смотрите в справке rac help, не угадывайте их.
Блокировки данных: когда сеансы живы, а документы не проводятся
Здесь запрет не включён, база открывается, но работа встаёт. Ошибка выглядит так:
Превышено время ожидания предоставления блокировки
Это значит, что один сеанс держит управляемую блокировку, а другой не дождался её освобождения. Виноват обычно не тот, кто получил ошибку, а тот, кто блокирует.
Что смотреть
- В консоли администрирования у кластера есть раздел «Блокировки»: там видно, кто кого ждёт. Он полезен именно в момент проблемы, потом данные исчезают.
- Для разбора постфактум включают технологический журнал и ищут события
TLOCK,TTIMEOUTиTDEADLOCK. Они показывают, какие данные не поделили, и как долго ждали. - Журнал регистрации в самой 1С (
Администрирование → Журнал регистрации) добавляет картину по пользователям: кто, в какое время и каким документом занимался.
Технологический журнал при широких настройках пишет гигабайты. Включайте его на время воспроизведения проблемы с фильтром по событиям, потом выключайте и удаляйте старые файлы.
Что делать с найденным виновником
- Выясните, что делает сеанс-держатель: проводит документы, закрывает месяц, строит отчёт.
- Если это штатная долгая операция, подождите её конца. Завершение сеанса посреди транзакции откатит всё сделанное, и операцию придётся запускать сначала.
- Если сеанс завис, завершите его способом выше.
- Если одна и та же пара операций конфликтует каждый день, разнесите их по времени. Например, массовое перепроведение переносите на вечер.
/UC. Проверьте, нет ли расписания запрета.Какой способ выбрать
| Способ | Когда подходит | Чем рискуете |
|---|---|---|
| Снять флажок в свойствах базы | Запрет забыли выключить | Ничем: сеансы не затрагиваются |
| Завершить сеанс в консоли | Один-два зависших сеанса | Пользователь теряет несохранённое |
rac session terminate | Нет консоли, нужен скрипт | То же, плюс ошибка в идентификаторе |
Завершить rphost.exe | Сеанс не отпускает никак | Обрыв всех сеансов этого процесса и откат транзакций |
| Перезапуск службы агента | Завис весь сервер | Обрыв сеансов во всех базах кластера |
Идите сверху вниз и останавливайтесь на первом способе, который помог. Каждая следующая строка таблицы бьёт по большему числу людей.
Крайняя мера: процессы на сервере
Если сеанс не завершается ни из консоли, ни через rac, остаётся убить рабочий процесс. Это уже не «снять блокировку», а грубое вмешательство. Все пользователи, чьи сеансы обслуживал этот процесс, потеряют несохранённую работу, а незавершённые транзакции откатятся.
Порядок действий:
- Предупредите людей и выберите момент без закрытия периода и без обменов.
- В консоли посмотрите, какой рабочий процесс обслуживает проблемный сеанс: у соединения указан процесс. В диспетчере задач найдите
rphost.exeс нужным номером. - Завершите именно этот процесс. Сервер сам запустит новый.
- Проверьте, что сеансы пропали из списка, и снимите запрет, если он остался.
Службу агента сервера (ragent) трогайте только если зависло всё: перезапуск службы оборвёт сеансы во всех базах кластера, а не в одной.
Не удаляйте служебные файлы кластера и не пересоздавайте кластер, чтобы «сбросить» блокировки. Это не лечит причину и может потерять настройки баз.
Если пользователи сидят через терминальный сервер
, зависший сеанс бывает и на нём: в диспетчере задач сервера терминалов видно, у какого пользователя висит 1cv8c.exe, и его можно закрыть там же. Это не затрагивает остальных и часто быстрее, чем искать причину в кластере.
С файловой базой проще и грубее: активные пользователи — это процессы 1cv8 и 1cv8c на их компьютерах. Если человек уехал, а его сессия висит, закрыть её можно только на его машине или завершив процесс в диспетчере задач сервера терминалов.
Как настроить кластер, чтобы это не повторялось
Профилактика сводится к паре привычек и нескольким настройкам.
- ⏱ Тайм-аут блокировки. Значение по умолчанию подходит большинству баз. Увеличивать его «чтобы не падало» опасно: пользователи будут ждать минутами, а причина останется.
- 🕒 Лишние сеансы. В свойствах кластера задайте время отключения неактивных соединений. Тогда вечерние «хвосты» исчезнут сами.
- 📅 Запрет по расписанию. Если вы пользуетесь запретом в окне регламентных работ, обязательно задавайте дату конца, а не оставляйте поле пустым.
- 🧩 Обновление в тихое время. Объявите окно, включите блокировку с сообщением в самой 1С, подождите завершения сеансов, и только потом обновляйте.
- 🧾 Длинные операции. Закрытие месяца и перепроведение запускайте, когда в базе мало людей.
- 📈 Мониторинг. Если проблема повторяется, держите технологический журнал включённым на узком фильтре и разбирайте самые долгие ожидания, а не гасите симптомы.
Частые вопросы
Запрет сеансов выгонит тех, кто сейчас в базе?
Можно ли зайти в базу с запретом?
/UC и сам код.