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

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

Почему 1С пишет «Есть активные пользователи» и что это значит

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

  • 👥 Реальные пользователи: кто-то действительно работает в базе, но не отображается в списке из-за прав доступа или особенностей клиент-серверного взаимодействия.
  • 💻 Фоновые задачи: регламентные операции (например, обмен данными, расчёт зарплаты) или отчёты, запущенные в фоне.
  • 👻 «Зависшие» сеансы: подключения, которые не были корректно закрыты из-за сбоя сети, выключения компьютера или ошибки в 1С.
  • 🔄 Репликация или кластерные процессы: если база работает в распределённой конфигурации (например, 1С:Управление холдингом), могут блокировать обновление процессы синхронизации.
  • 🛠️ Технические блокировки: временные блокировки таблиц, установленные триггерами или внешними обработками.

Важно понимать, что 1С не всегда показывает все активные сеансы в стандартном окне «Активные пользователи». Например, подключения через COM-соединение или OLE-автоматизацию могут оставаться невидимыми, но блокировать обновление. Также проблема часто возникает при использовании веб-клиента или мобильного приложения, где сеансы не всегда корректно закрываются.

Прежде чем приступать к принудительному завершению сеансов, проверьте:

  1. Отображаются ли пользователи в списке активных сеансов (Администрирование → Активные пользователи).
  2. Не запущены ли фоновые задачи в Панель задач → Регламентные и фоновые задания.
  3. Нет ли блокировок на уровне СУБД (например, в Microsoft SQL Server или PostgreSQL).
📊 Как часто вы сталкиваетесь с блокировками при обновлении 1С?
Часто, это регулярная проблема
Иногда, раз в несколько месяцев
Рядом, но решаю быстро
Никогда не сталкивался

Способ 1: Завершение сеансов через консоль администратора 1С

Самый безопасный метод — использовать встроенные инструменты 1С:Предприятия. Он подходит, если пользователи реально работают в базе, но их можно попросить временно выйти.

Инструкция:

  1. Откройте конфигуратор 1С в режиме Администратор (для этого при запуске удерживайте Shift).
  2. Перейдите в меню Администрирование → Активные пользователи.
  3. В списке выделите всех пользователей (или только тех, кто блокирует обновление) и нажмите Завершить работу.
  4. Подтвердите действие. Система отправит пользователям уведомление и принудительно закроет их сеансы через 30 секунд.

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

  • В файле 1CV8Conf.cfg (расположен в каталоге конфигурации) найдите параметр DisconnectTimeout.
  • Установите значение в секундах (например, DisconnectTimeout=10 для 10 секунд).
  • Перезапустите сервер 1С, чтобы изменения вступили в силу.

Убедиться, что у вас права администратора

Сделать резервную копию базы данных

Предупредить пользователей о принудительном завершении

Проверьте, нет ли критичных фоновых задач-->

⚠️ Внимание: Принудительное завершение сеансов может привести к потере несохранённых данных пользователей. Всегда предупреждайте сотрудников заранее и просите сохранить изменения.

Способ 2: Принудительное завершение через SQL-запросы (для опытных)

Если сеансы не отображаются в консоли 1С, но блокировка остаётся, проблема может быть на уровне СУБД. В этом случае поможет прямой запрос к базе данных. Этот метод требует знания SQL и прав доступа к серверу баз данных.

Для Microsoft SQL Server:

-- Просмотр активных подключений

SELECT

spid,

loginame,

hostname,

program_name,

login_time

FROM master..sysprocesses

WHERE db_name(dbid) = 'ИмяВашейБазы'

-- Принудительное завершение сеанса (замените XX на ID сеанса)

KILL XX

Для PostgreSQL:

-- Просмотр активных подключений

SELECT pid, usename, application_name, client_addr, state

FROM pg_stat_activity

WHERE datname = 'ИмяВашейБазы';

-- Принудительное завершение (замените XX на PID процесса)

SELECT pg_terminate_backend(XX);

После выполнения запросов проверьте, исчезла ли блокировка в 1С. Если нет, возможно, проблема в блокировках таблиц. Для их снятия в MS SQL используйте:

-- Просмотр блокировок

EXEC sp_who2

-- Снятие блокировки (замените XX на SPID)

KILL XX

⚠️ Внимание: Не завершайте системные процессы (например, с program_name = 'SQLAgent' или loginame = 'sa'). Это может нарушить работу сервера. Всегда проверяйте, какой именно процесс вы завершаете.
Что делать, если после KILL блокировка остаётся?

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

1. Транзакции с длинными блокировками — проверьте через DBCC OPENTRAN (MS SQL) или pg_locks (PostgreSQL).

2. Репликация или зеркалирование — приостановите эти процессы перед обновлением.

3. Внешние подключения — например, интеграции через REST API или COM-соединение, которые не отображаются в стандартных списках.

В таких случаях может потребоваться перезагрузка сервера 1С или даже сервера СУБД (но это крайняя мера!).

Способ 3: Обновление в монопольном режиме (для файловой базы)

Если вы работаете с файловой версией 1С (не клиент-серверной), можно обновить базу в монопольном режиме. Это гарантированно блокирует доступ другим пользователям на время обновления.

Пошаговая инструкция:

  1. Закройте все экземпляры 1С на компьютере, где хранится база.
  2. Запустите 1С в режиме конфигуратора, удерживая Shift.
  3. Выберите нужную базу и нажмите Конфигуратор.
  4. В меню выберите Файл → Открыть... и укажите путь к файлу базы (.1CD).
  5. В диалоговом окне выберите режим Монопольный и нажмите ОК.
  6. После открытия базы в монопольном режиме запустите обновление через Конфигурация → Поддержка → Обновить конфигурацию.

Если база используется в сетевом режиме (хранится на файловом сервере), предварительно:

  • 📂 Переместите файл базы (.1CD) на локальный диск.
  • 🔄 Обновите конфигурацию в монопольном режиме.
  • 📤 Верните файл обратно на сервер.

Этот метод не подходит для клиент-серверных баз, так как монопольный режим в них не поддерживается. Для них используйте способы 1, 2 или 4.

Способ 4: Обновление через командную строку (рассчитано на администраторов)

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

Основные команды:

Действие Команда Пример
Просмотр активных сеансов rac session list rac session list --cluster=ИмяКластера
Завершение сеанса rac session terminate rac session terminate --session-id=XX
Обновление конфигурации designer /UpdateCfg designer /IBName="ИмяБазы" /UpdateCfg /Out"лог.txt"
Проверка блокировок rac lock list rac lock list --cluster=ИмяКластера

Пример полной последовательности для обновления:

-- 1. Просмотр сеансов

rac session list --cluster=MyCluster1C

-- 2. Завершение всех сеансов (если они есть)

rac session terminate --all

-- 3. Запуск обновления

"C:\Program Files\1cv8\8.3.20.1547\bin\designer.exe" /IBName="MyBase" /UpdateCfg /Out"C:\Logs\update.log"

Для работы с командной строкой потребуется:

  • 📁 Утилиты rac.exe и designer.exe из каталога установки 1С.
  • 🔑 Права администратора на сервере 1С.
  • 📝 Логирование (/Out) для отслеживания ошибок.
💡

Если команда rac session terminate не срабатывает, попробуйте добавить флаг --force. Но будьте осторожны: это может привести к потере данных в незавершённых транзакциях.

Как предотвратить блокировки при обновлении в будущем

Чтобы избежать проблем с активными пользователями при следующих обновлениях, настройте политики работы с 1С и оптимизируйте инфраструктуру:

  • Регламент обновлений: Проводите обновления в нерабочее время (ночью или в выходные). Настройте плановое техническое окно в календаре компании.
  • 🔔 Уведомления пользователям: Используйте рассылку через 1С:Документооборот или почту о предстоящем обновлении за 1–2 часа.
  • 🤖 Автоматические скрипты: Напишите скрипт на PowerShell или Bash, который будет завершать сеансы и запускать обновление по расписанию.
  • 🔄 Тестовая база: Сначала обновляйте тестовую копию базы, чтобы проверить совместимость и избежать блокировок в рабочей среде.
  • 🛡️ Резервное копирование: Настройте автоматическое создание бэкапов перед обновлением (например, через chdbfl.exe для файловой базы).
  • 📊 Мониторинг сеансов: Используйте утилиты вроде SQL Server Profiler или pgAdmin для отслеживания «зависших» подключений.

Для клиент-серверных баз на MS SQL или PostgreSQL настройте тайм-ауты сеансов:

  • В MS SQL: установите параметр remote query timeout (по умолчанию 600 секунд).
  • В PostgreSQL: настройте idle_in_transaction_session_timeout в файле postgresql.conf.

Если в вашей компании часто возникают проблемы с блокировками, рассмотрите:

  • 🔗 Переход на клиент-серверную архитектуру (если ещё используете файловую базу).
  • 🌐 Развёртывание веб-клиента с автоматическим завершением неактивных сеансов.
  • 📦 Использование контейнеров (например, Docker) для изоляции тестовых и рабочих сред.
💡

Регулярное обслуживание базы (реиндексация, сжатие, очистка логов) снижает риск «зависших» сеансов и ускоряет обновления.

Частые ошибки и как их избежать

Принудительное завершение сеансов и обновление 1С чревато ошибками, если действовать неосторожно. Рассмотрим типичные проблемы и их решения:

⚠️ Внимание: Если после обновления база не открывается или выдаёт ошибку «Конфигурация базы данных не соответствует сохранённой», значит, обновление прервалось на середине. В этом случае восстановите базу из резервной копии и повторите процедуру.
Ошибка Причина Решение
Недостаточно прав для обновления конфигурации Пользователь не имеет роли Администратор. Запустите 1С от имени администратора или назначьте роль в конфигураторе.
Блокировка объекта метки времени Конфликт версий при репликации или кластерной работе. Приостановите репликацию, обновите основную базу, затем синхронизируйте узлы.
Не найден файл обновления (cf) Путь к файлу обновления указан неверно. Проверьте расположение файла .cf и права доступа к папке.
Ошибка блокировки при записи в таблицу Активные транзакции или внешние блокировки. Используйте rac lock clear или перезапустите сервер СУБД.

Если после обновления пользователи жалуются на:

  • 🔄 Медленную работу — выполните реиндексацию таблиц в СУБД.
  • 📉 Потерю данных — восстановите из бэкапа и проверьте логи обновления.
  • 🚫 Ошибки доступа — обновите права ролей в конфигураторе.

Для диагностики сложных ошибок используйте:

  • 📄 Журналы 1С: C:\Users\Public\1C\1Cv8\logs.
  • 🗃️ Логи СУБД: SQL Server Error Log или PostgreSQL log.
  • 🔍 Утилиты: 1C:Тестирование и исправление (chdbfl.exe).

FAQ: Ответы на частые вопросы

Можно ли обновить 1С без завершения сеансов пользователей?

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

  • Используйте резервный сервер для обновления и переключите пользователей на него.
  • Применяйте обновления в тестовой базе заранее, а в рабочей — только проверенные патчи.
Что делать, если после завершения сеансов блокировка остаётся?

Это означает, что блокировка установлена на уровне СУБД или есть скрытые процессы. Действуйте по алгоритму:

  1. Проверьте блокировки в СУБД (например, sp_who2 для MS SQL).
  2. Завершите процессы через KILL (см. Способ 2).
  3. Перезапустите службу 1С:Предприятие (ragent и rmngr).
  4. Если не поможет — перезагрузите сервер СУБД (крайняя мера!).

После этого повторите попытку обновления.

Как обновить 1С, если пользователи работают удалённо и не выходят по просьбе?

В таких случаях:

  • 📢 Используйте принудительное завершение через rac session terminate --all (см. Способ 4).
  • 🕒 Настройте автоматическое обновление на ночь, когда активность минимальна.
  • 🔌 Примените политики групповой работы: ограничьте время сеанса в настройках 1С.

Для критичных систем (например, 1С:ERP) рассмотрите кластерную схему с резервными узлами, где обновления можно применять поочерёдно.

Можно ли откатить обновление, если что-то пошло не так?

Да, но только если:

  • 📦 У вас есть резервная копия базы до обновления.
  • 🔄 Вы использовали контроль версий конфигурации (хранилище .cf-файлов).

Для отката:

  1. Восстановите базу из бэкапа.
  2. В конфигураторе выберите Конфигурация → Загрузить конфигурацию из файла и укажите старую версию .cf.
  3. Обновите конфигурацию базы данных (Конфигурация → Обновить конфигурацию базы данных).

Без бэкапа откат невозможен — придётся исправлять ошибки вручную.

Как проверить, что обновление прошло успешно?

После обновления выполните проверки:

  • 📋 Версия конфигурации: В конфигураторе откройте Справка → О программе и сравните с номером патча.
  • 🔍 Тестирование: Запустите Администрирование → Тестирование и исправление.
  • 📊 Функциональность: Проверьте критичные операции (проведение документов, формирование отчётов).
  • 📄 Логи: Убедитесь, что в 1Cv8.log нет ошибок.

Если используете 1С:Бухгалтерию или 1С:ЗУП, дополнительно проверьте:

  • Корректность расчёта налогов/зарплаты.
  • Работу регламентных отчётов (например, 6-НДФЛ, РСВ).