Снимаем блокировку с информационной базы 1С:Предприятия 8.3 — в программе, в консоли кластера и в файлах

· 10 мин

Содержание

Чтобы разблокировать базу 1С, сначала поймите, кто её держит. Если при входе программа пишет, что начало сеансов запрещено, — снимите флажок «Блокировка начала сеансов включена» в свойствах базы в консоли кластера или запустите 1С с параметром /UC<код разрешения> и выключите блокировку в Администрирование → Обслуживание. Если не удаётся получить монопольный режим — завершите чужие сеансы, а в файловой базе проверьте зависшие процессы 1cv8.exe и файл 1Cv8.1CL.

Способы идут от безопасных, которые не обрывают ничью работу, к радикальным. Инструкция общая для платформы 8.3 и типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.

Почему база 1С оказывается заблокированной

Слово «заблокирована» в 1С описывает три разные ситуации. Лечатся они по-разному, поэтому начните с того, какая у вас.

Что видитеЧто произошлоГде снимать
При входе — сообщение, что начало сеансов запрещено, иногда с текстом администратораВключена блокировка начала сеансовПрограмма, консоль кластера, rac
Ошибка установки монопольного режима при обновлении или загрузке .dtВ базе есть другие сеансыСписок сеансов, консоль кластера
Документ не записывается: объект уже заблокирован другим пользователемКто-то держит открытой ту же формуСеанс этого пользователя

Откуда обычно берётся блокировка начала сеансов:

  • 🔄 Прерванное обновление. Помощник обновления конфигурации ставит блокировку перед обновлением и снимает после. Если процесс упал или компьютер выключили, блокировка остаётся.
  • 👤 Администратор забыл её снять после ночного обслуживания: свёртки, тестирования, загрузки.
  • 📅 Блокировка с интервалом. Её поставили «с 22:00 до 06:00», а время окончания не указали — и она действует бессрочно.
  • 🖥️ Внешний скрипт обслуживания (пакетное обновление, бэкап) включил блокировку и не дошёл до шага её снятия.

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

Как найти, кто держит базу: сеансы и соединения

Прежде чем кого-то выкидывать, посмотрите список. Иногда в нём оказывается коллега, который сейчас проводит закрытие месяца .

Из самой программы. В типовых конфигурациях откройте Администрирование → Обслуживание и найдите команду «Активные пользователи». Список покажет пользователя, компьютер, время начала сеанса и приложение (тонкий клиент, фоновое задание, COM-соединение, Конфигуратор).

Из Конфигуратора. Меню Администрирование → Активные пользователи. Этот же список, удобно, когда в режим «Предприятие» войти не получается.

В консоли администрирования серверов (клиент-серверная база ). Раскройте Кластеры → <кластер> → Информационные базы → <база>. Внутри два узла:

  • Сеансы — пользователи, фоновые задания, сеансы Конфигуратора. Видно приложение, время последней активности, рабочий сервер.
  • Соединения — физические подключения к рабочим процессам. Соединение может жить без сеанса, например у консоли или COM-подключения.

Из командной строки через утилиту rac (поставляется с платформой, нужна служба ras):

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>

Первая команда даёт идентификатор кластера, вторая — идентификатор базы, третья — список её сеансов. Если на кластере есть администратор, добавьте --cluster-user и --cluster-pwd. Порт 1545 — порт ras по умолчанию.

Смотрите на колонку «Приложение». «Фоновое задание» с давним временем начала — частая причина, по которой не включается монопольный режим, хотя людей в базе нет.

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

Самый мягкий способ. Никого не выкидывает и подходит для файловой и серверной базы.

Если в программу войти можно

  1. Войдите пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание.
  3. Найдите команду «Блокировка работы пользователей».
  4. В открывшейся форме нажмите кнопку снятия блокировки (она заменяет кнопку установки, когда блокировка уже стоит).
  5. Проверьте вход под обычным пользователем.

Если при входе пишет, что сеансы запрещены

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

Запустите 1С с ключом /UC:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /S"srv1c\buh" /UC"KodRazresheniya"

Номер платформы и путь подставьте свои, для файловой базы вместо /S используйте /F"D:\Bases\Buh". После входа снимите блокировку по шагам выше.

В конфигурациях на БСП есть ещё один приём — параметр запуска /C"РазрешитьРаботуПользователей". Программа при старте сама снимает блокировку. Его удобно прописать в ярлык администратора или в скрипт обслуживания.

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UC"KodRazresheniya" /C"РазрешитьРаботуПользователей"

Пароль в ярлыке или bat-файле видит любой, кто откроет файл. Для разовой операции вводите пароль руками, а скрипты храните в папке с доступом только для администраторов.

Разблокировка базы в консоли администрирования серверов 1С

Если кода разрешения никто не помнит, а в программу не войти, снимайте блокировку на уровне кластера. Это работает только для клиент-серверной базы.

  1. Откройте консоль администрирования серверов 1С:Предприятия.
  2. Раскройте Кластеры → <кластер> → Информационные базы.
  3. Правой кнопкой по базе — «Свойства». Консоль спросит логин и пароль администратора информационной базы, а не кластера.
  4. Снимите флажок «Блокировка начала сеансов включена».
  5. Очистите поля «Начало», «Конец», «Сообщение» и «Код разрешения», чтобы старые значения не путали следующего администратора.
  6. Если стоит флажок «Блокировка регламентных заданий включена», а задания должны работать, — снимите и его.
  7. Нажмите «ОК».

Та же операция из командной строки:

rac localhost:1545 infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
  --infobase-user="Администратор" --infobase-pwd="пароль" ^
  --sessions-deny=off --scheduled-jobs-deny=off

Если на вашей версии платформы команда ругается на параметр, проверьте синтаксис через rac help infobase.

Как завершить зависшие сеансы

Когда нужен монопольный режим, а в списке висят сеансы, их завершают.

  1. Предупредите людей: незаписанные изменения в документах при завершении сеанса пропадут.
  2. В консоли откройте узел «Сеансы» нужной базы.
  3. Выделите сеанс — правой кнопкой — «Удалить».
  4. Фоновые задания удаляйте в последнюю очередь и только если знаете, что это за задание: обрыв обмена или закрытия месяца может оставить данные в промежуточном состоянии.

Через rac:

rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Перезапуск службы «Агент сервера 1С:Предприятия» или завершение процесса rphost обрывает сеансы во всех базах этого сервера, а не только в проблемной. Это крайняя мера — в нерабочее время и после предупреждения пользователей.

Файловая база: процессы, файл 1Cv8.1CL и сетевые блокировки

У файловой базы нет кластера и консоли. Блокировку начала сеансов здесь снимают из программы (раздел выше), а монопольный режим мешают получить процессы, которые держат файл 1Cv8.1CD.

Шаг 1. Найдите, кто открыл базу

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

Шаг 2. Закройте зависшие процессы

На компьютерах пользователей и на терминальном сервере откройте диспетчер задач и найдите 1cv8.exe или 1cv8c.exe. У процесса без окна сохранить уже нечего — его можно завершить. Процесс с окном сначала попросите закрыть самого пользователя.

Шаг 3. Проверьте открытые файлы на файловом сервере

Если база лежит в общей папке Windows, на сервере откройте «Управление компьютером» → «Общие папки» → «Открытые файлы». Там видно, с какого компьютера держат 1Cv8.1CD. Закрыть сетевое открытие файла можно правой кнопкой, но закрывайте только когда пользователь точно вышел из программы — иначе велик риск повредить базу.

Шаг 4. Файл блокировки 1Cv8.1CL

В каталоге базы рядом с 1Cv8.1CD лежит служебный файл 1Cv8.1CL. Платформа ведёт в нём учёт подключений. После аварийного завершения он может остаться и мешать.

  1. Убедитесь, что ни одного процесса 1С с этой базой нигде не запущено.
  2. Сделайте копию каталога базы.
  3. Переименуйте 1Cv8.1CL, например в 1Cv8.1CL.old.
  4. Запустите базу. Платформа создаст файл заново.
  5. Если всё работает — удалите старый файл.

Не трогайте 1Cv8.1CD — это сама база. Переименование или удаление чего-либо в каталоге при открытой базе может её повредить.

Если файл не переименовывается, значит, его кто-то держит — вернитесь к шагам 2 и 3. Перезагрузка файлового сервера тоже освобождает файлы, но обрывает работу всех, кто с ним связан.

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

Как снять блокировку базы программно, кодом

Пригодится разработчикам и тем, кто пишет обработки обслуживания. Работает в серверном контексте и требует права администрирования.

Снять блокировку начала сеансов:

&НаСервере
Процедура СнятьБлокировкуСеансовНаСервере()
	
	Блокировка = ПолучитьБлокировкуСеансов();
	Если Блокировка.Установлена Тогда
		Блокировка.Установлена = Ложь;
		УстановитьБлокировкуСеансов(Блокировка);
	КонецЕсли;
	
КонецПроцедуры

Посмотреть, кто сейчас в базе:

&НаСервере
Процедура ПоказатьСеансыНаСервере()
	
	Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
		Сообщить(СтрШаблон("%1 — %2, начало %3",
			Сеанс.Пользователь, Сеанс.ИмяПриложения, Сеанс.НачалоСеанса));
	КонецЦикла;
	
КонецПроцедуры

Если ваша обработка сама включала монопольный режим через УстановитьМонопольныйРежим(Истина), выключайте его в той же процедуре — УстановитьМонопольныйРежим(Ложь) — в том числе в ветке Исключение. Иначе после ошибки сеанс останется монопольным, и остальные не войдут, пока он не закроется.

УстановитьМонопольныйРежим(Истина);
Попытка
	ВыполнитьОбслуживание();
	УстановитьМонопольныйРежим(Ложь);
Исключение
	УстановитьМонопольныйРежим(Ложь);
	ВызватьИсключение;
КонецПопытки;

Процедура ВыполнитьОбслуживание() здесь условная — подставьте свою.

Чтобы завершать чужие сеансы из кода, платформенного метода нет: это делается через администрирование кластера (rac или COM-объект V83.COMConnector). В конфигурациях на БСП проще вызвать стандартную форму «Блокировка работы пользователей» — она умеет и запретить вход, и завершить сеансы.

Как не допускать повторных блокировок: регламент и профилактика

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

  • ⏰ Ставьте блокировку с временем окончания. В форме блокировки и в консоли кластера есть поле «Конец». Если скрипт упадёт, блокировка всё равно снимется по времени.
  • 🔑 Записывайте код разрешения в общий для администраторов менеджер паролей, а не в голову одного человека.
  • 📜 Добавьте в скрипты обслуживания финальный шаг снятия блокировки, который выполняется и при ошибке. Например, запуск с /C"РазрешитьРаботуПользователей" в конце bat-файла после бэкапа и обновления.
  • 📅 Переносите тяжёлые регламентные задания на ночь. Загрузка курсов, полнотекстовый индекс, обмены во время обновления не дадут включить монопольный режим . Перед обслуживанием включайте «Блокировку регламентных заданий», после — выключайте.
  • 🚪 Настройте автоматический выход из программы при простое у пользователей удалённого рабочего стола и сессиях RDP: отключённая, но не завершённая терминальная сессия держит сеанс 1С сутками.
  • 📢 Сообщение блокировки. Пишите в поле «Сообщение» понятный текст: «Обновление до 23:30, по вопросам — Иван, доб. 105». Пользователь не будет звонить с вопросом «почему не пускает».

Короткий порядок для ночного обслуживания серверной базы:

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

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

Где взять код разрешения, если его никто не помнит?
В клиент-серверной базе он виден и меняется в свойствах информационной базы в консоли кластера. Там же можно просто снять блокировку. В файловой базе код знает тот, кто ставил блокировку: администратор или скрипт обслуживания, в bat-файле которого он прописан после ключа /UC.
Блокировку сняли, а пользователи всё равно не входят. Почему?
Проверьте, нет ли блокировки, заданной интервалом в будущем, и не держит ли кто-то монопольный режим. Монопольный сеанс видно в списке активных пользователей — часто это Конфигуратор, открытый администратором.
Какие права нужны, чтобы снять блокировку?
В программе — полные права или роль администратора системы. В консоли кластера — логин и пароль администратора информационной базы, а если на кластере назначены администраторы, то и учётная запись администратора кластера.
Нужен ли монопольный режим для обычного обновления конфигурации?
Монопольный доступ нужен для обновления структуры базы, загрузки .dt, тестирования и исправления. Загрузить изменения в основную конфигурацию можно и при работающих пользователях, а применить к базе — уже без них.
Опасно ли завершать сеанс пользователя?
Для базы — нет: транзакция, которая не завершилась, откатится. Для пользователя — да: всё, что он не записал, пропадёт. Поэтому сначала предупреждение, потом завершение.