Как принудительно завершить сеансы пользователей в файловой базе 1С?

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование встроенных констант и обработки блокировки

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

Рассмотрим порядок действий для активации принудительного завершения:

  1. Зайдем в базу под пользователем с полными правами.
  2. Перейдем в раздел Функции для технического специалиста (или через меню «Все функции»).
  3. Найдем и откроем константу ЗавершатьСеансыБезПредупрежденияПоУмолчанию.
  4. Установим флаг в значение «Истина». Это позволит системе игнорировать подтверждение со стороны пользователя при команде на выход.
  5. После этого воспользуемся стандартной обработкой Блокировка работы пользователей или сторонним инструментом для блокировки входа пользователей — для этого подойдёт внешний инструмент управления активными сеансами. Установим интервал времени и нажмем кнопку «Установить блокировку».

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

Метод 2. Управление процессами через Диспетчер задач Windows

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

  1. Откроем Диспетчер задач (Ctrl+Shift+Esc).
  2. Перейдем на закладку Подробности (в старых версиях Windows — «Процессы»).
  3. Для того чтобы понять, какой именно процесс относится к нашей базе, нам нужно включить отображение командной строки. Нажмем правой кнопкой мыши на заголовки столбцов, выберем пункт Выбрать столбцы и установим флажок напротив Командная строка.
  4. Теперь в списке процессов 1cv8.exe мы увидим полный путь запуска, включая параметр /F, в котором указан путь к нашей файловой базе.
  5. Найдем процесс того пользователя, который блокирует базу (в этом поможет консоль активности пользователей), и выберем Снять задачу.

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

Метод 3. Сетевое управление через командную строку (Openfiles и Net Session)

Когда база лежит в «расшаренной» папке, а пользователи работают локально, операционная система сервера видит открытые файлы. Мы можем разорвать эти соединения принудительно, используя командную строку Windows и команду openfiles.

Для начала выясним, кто открыл файл базы данных 1Cv8.1CD. Выполним в командной строке (запущенной от имени администратора):

openfiles /query

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

openfiles /disconnect /id [номер_ID]

Также полезно проверить список активных сетевых сессий командой net session. Если мы видим, что компьютер конкретного сотрудника держит сессию, мы можем ее сбросить:

net session \\ИмяКомпьютера /delete

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

Метод 4. Очистка служебных файлов блокировок

Бывают случаи, когда физически в базе никого нет, процессы завершены, но 1С все равно выдает сообщение «Ошибка разделенного доступа к базе данных». Это происходит из-за того, что в каталоге базы остались «мусорные» файлы блокировок, которые не удалились при аварийном завершении работы.

Проанализируем содержимое папки с базой данных. Нам нужно найти и удалить следующие файлы:

Помните, что удалять эти файлы можно только тогда, когда вы на 100% уверены, что все процессы 1cv8.exe, 1cv8c.exe и 1cv8s.exe на всех компьютерах завершены.

Метод 5. Особенности работы через веб-сервер (Apache или IIS)

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

Рассмотрим решение для Apache:

  1. Откроем консоль управления службами (services.msc).
  2. Найдем службу Apache2.4 (или другую версию).
  3. Выполним команду Перезапустить.

Для IIS процедура аналогична — необходимо перезапустить пул приложений (AppPool), в котором работает публикация 1С, или выполнить команду iisreset в консоли. Это мгновенно оборвет все веб-сессии, и база будет разблокирована.

Метод 6. Использование продвинутого ПО (Sysinternals Handle)

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

Разберем пример использования:

  1. Скачаем утилиту и запустим командную строку в папке с программой.
  2. Выполним команду для поиска блокировок файла базы:
  3. handle.exe 1Cv8.1CD
  4. Система выдаст список процессов и их PID. Зная PID, мы можем гарантированно завершить именно тот процесс, который мешает работе.

Подводя итог, отметим: для файловых баз лучшей практикой является настройка автоматического завершения сеансов через параметры запуска. Например, запуск 1С с ключом /C ЗавершитьРаботуПользователей позволяет программно инициировать выход всех клиентов, поддерживающих механизмы БСП. Всегда начинайте с «мягких» методов и только при их неэффективности переходите к системным средствам завершения задач.

← На главную