Работа с файловыми базами 1С часто сопряжена с трудностями при необходимости проведения регламентных работ, таких как обновление конфигурации или создание резервной копии. Основная проблема заключается в «зависших» или «спящих» сеансах (поможет инструмент мониторинга и прерывания проблемных сеансов), которые блокируют доступ к базе, даже если физически пользователь за компьютером уже не работает. В этой статье мы подробно разберем все доступные методы — от штатных средств 1С до глубокого администрирования на уровне операционной системы.
Прежде чем переходить к радикальным мерам на уровне системы, проанализируем возможности самой платформы 1С. В современных конфигурациях, особенно тех, что используют Библиотеку стандартных подсистем (БСП), предусмотрены механизмы для корректного выдворения пользователей.
Рассмотрим порядок действий для активации принудительного завершения:
ЗавершатьСеансыБезПредупрежденияПоУмолчанию.Проанализируем ситуацию: если в базе остаются фоновые задания, они могут продолжать держать соединение. Не забудьте в окне блокировки установить флажок Завершить регламентные задания. Это критически важно для файлового режима, так как одно из соединений часто создается самой системой для выполнения заданий в фоновом режиме, хотя иногда требуется обход блокировки регламентных заданий.
Если штатные средства 1С не помогают, и пользователь «завис» на терминальном сервере, нам придется вмешаться в работу операционной системы. Разберем по шагам, как найти нужного пользователя в списке процессов:
1cv8.exe мы увидим полный путь запуска, включая параметр /F, в котором указан путь к нашей файловой базе.Этот метод эффективен, если все пользователи работают на одном терминальном сервере. Если же пользователи подключаются со своих локальных машин к общей папке, нам потребуется другой подход.
Когда база лежит в «расшаренной» папке, а пользователи работают локально, операционная система сервера видит открытые файлы. Мы можем разорвать эти соединения принудительно, используя командную строку Windows и команду openfiles.
Для начала выясним, кто открыл файл базы данных 1Cv8.1CD. Выполним в командной строке (запущенной от имени администратора):
openfiles /query
Если список слишком большой, можно отфильтровать его по имени файла. После того как мы определили ID соединения или имя пользователя, используем команду для отключения:
openfiles /disconnect /id [номер_ID]
Также полезно проверить список активных сетевых сессий командой net session. Если мы видим, что компьютер конкретного сотрудника держит сессию, мы можем ее сбросить:
net session \\ИмяКомпьютера /delete
Важно: такой метод может привести к повреждению данных, если в этот момент шла активная запись. Используйте его только в крайнем случае, предварительно убедившись, что пользователь действительно не активен.
Бывают случаи, когда физически в базе никого нет, процессы завершены, но 1С все равно выдает сообщение «Ошибка разделенного доступа к базе данных». Это происходит из-за того, что в каталоге базы остались «мусорные» файлы блокировок, которые не удалились при аварийном завершении работы.
Проанализируем содержимое папки с базой данных. Нам нужно найти и удалить следующие файлы:
1Cv8.lcl — файл локальной блокировки.1Cv8.cdn — файл блокировки установки соединений.1Cv8tmp.1cd — временный файл базы данных (если он остался после закрытия всех программ).Помните, что удалять эти файлы можно только тогда, когда вы на 100% уверены, что все процессы 1cv8.exe, 1cv8c.exe и 1cv8s.exe на всех компьютерах завершены.
Если ваша файловая база опубликована через веб-сервер для работы через браузер или тонкий клиент по HTTP, ситуация меняется. В этом случае блокировку может держать сам процесс веб-сервера.
Рассмотрим решение для Apache:
Для IIS процедура аналогична — необходимо перезапустить пул приложений (AppPool), в котором работает публикация 1С, или выполнить команду iisreset в консоли. Это мгновенно оборвет все веб-сессии, и база будет разблокирована.
Если стандартный диспетчер задач не дает полной картины, воспользуемся утилитой Handle от Microsoft. Она позволяет точно определить, какая программа «держит» конкретный файл.
Разберем пример использования:
handle.exe 1Cv8.1CD
Подводя итог, отметим: для файловых баз лучшей практикой является настройка автоматического завершения сеансов через параметры запуска. Например, запуск 1С с ключом /C ЗавершитьРаботуПользователей позволяет программно инициировать выход всех клиентов, поддерживающих механизмы БСП. Всегда начинайте с «мягких» методов и только при их неэффективности переходите к системным средствам завершения задач.