К статье
Практический материал

Администрирование · 10 мин

Как заблокировать подключение к базе 1С

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

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

Способ блокировки зависит от режима работы базы. Для клиент-серверного варианта основной инструмент — консоль кластера серверов 1С, для файловой базы — программная установка блокировки через код или параметр запуска конфигуратора. Дополнительно соединения можно разорвать на уровне СУБД (MS SQL, PostgreSQL), но это крайняя мера.

Ниже разобраны все рабочие методы: установка и снятие блокировки, завершение активных сеансов, блокировка через код, типичные ошибки и проверка результата. Инструкции подходят для платформы 8.3 в актуальных версиях.

Когда нужна блокировка и что она даёт

Блокировка начала сеансов запрещает создание новых подключений к информационной базе. Уже работающие пользователи при этом не отключаются автоматически — их сеансы нужно завершать отдельно. Это важно понимать: галочка блокировки сама по себе не «выкидывает» никого из базы.

Типовые ситуации, когда блокировка обязательна:

  • обновление конфигурации с реструктуризацией базы данных;
  • загрузка данных из dt-файла или обмена, меняющая структуру;
  • тестирование и исправление информационной базы;
  • регламентные операции СУБД, требующие монопольного доступа;
  • восстановление из резервной копии.

Если пропустить блокировку перед обновлением, платформа выдаст ошибку «Конфликт блокировок при выполнении транзакции» или обновление зависнет на этапе реструктуризации. В худшем случае база останется в рассогласованном состоянии, и потребуется восстановление из копии.

Блокировка через консоль кластера серверов

Это основной способ для клиент-серверных баз. Консоль кластера (оснастка «Администрирование серверов 1С:Предприятия») устанавливается вместе с сервером 1С и доступна на машине, где развёрнут агент сервера.

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

Поле «Сообщение» увидит пользователь при попытке входа — напишите там причину и ориентировочное время окончания работ, например: «Идёт обновление конфигурации, база будет доступна до 21:00». Это снимет лишние обращения к администратору.

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

text
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /S"Server\Base" /UC12345

Завершение активных сеансов пользователей

После включения блокировки в базе остаются сеансы тех, кто вошёл раньше. Их нужно завершить вручную: в консоли кластера откройте ветку «Сеансы», отсортируйте по нужной базе, выделите сеансы и выберите «Удалить». Сеанс завершится принудительно.

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

Мягкий вариант: предупреждение и отложенное завершение

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

Блокировка файловой базы

Для файловой базы консоли кластера нет, поэтому блокировку устанавливают программно. В конфигурациях на БСП это делается из интерфейса: «Администрирование» → «Обслуживание» → «Блокировка работы пользователей». Механизм задаёт период блокировки и код разблокировки, хранящиеся в константах базы.

В собственной конфигурации используйте методы объекта БлокировкаСеансов:

Блокировка = Новый БлокировкаСеансов;

Блокировка.Установлена = Истина;

Блокировка.Начало = ТекущаяДатаСеанса();

Блокировка.КодРазблокировки = "12345";

Блокировка.Сообщение = "Идёт обновление базы";

УстановитьБлокировкуСеансов(Блокировка);

Также файловую базу можно запустить в монопольном режиме конфигуратора с параметром /UC, но сама установка блокировки для других пользователей всё равно выполняется кодом или через БСП. Физическое ограничение доступа к файлу 1Cv8.1CD на сетевом ресурсе — грубый метод, использовать его не рекомендуется: при обращении пользователи получат ошибку чтения файла, а не понятное сообщение.

Блокировка на уровне СУБД

Иногда требуется запретить подключения на стороне SQL-сервера — например, при обслуживании самой СУБД. В MS SQL Server базу переводят в однопользовательский режим:

sql
ALTER DATABASE [MyBase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

Опция ROLLBACK IMMEDIATE немедленно откатывает открытые транзакции и разрывает соединения. После работ базу возвращают в обычный режим командой SET MULTI_USER. В PostgreSQL аналогичный эффект даёт отзыв права CONNECT у ролей и завершение backend-процессов через pg_terminate_backend.

Этот способ не заменяет блокировку на уровне кластера 1С: он не показывает пользователям осмысленное сообщение и не поддерживает код разблокировки. Применяйте его только для задач администрирования СУБД.

Сравнение способов блокировки

Консоль кластера

Основной способ для клиент-серверных баз: сообщение пользователям, код разблокировки, расписание. Требует доступа к серверу 1С.

Механизм БСП

Подходит для файловых и клиент-серверных баз из интерфейса 1С. Работает только в конфигурациях на Библиотеке стандартных подсистем.

Программная установка

Гибкий вариант для автоматизации и скриптов обновления. Требует права администратора и внешнего соединения с базой.

Средства СУБД

Только для обслуживания самой СУБД. Нет сообщения пользователям и кода разблокировки, соединения рвутся жёстко.

Снятие блокировки и проверка результата

После завершения работ снимите блокировку тем же способом, каким ставили: в консоли кластера снимите флаг «Блокировка начала сеансов включена», в БСП — отключите блокировку в разделе обслуживания, программно — установите БлокировкаСеансов.Установлена = Ложь. Если задавали время окончания, блокировка снимется автоматически, но лучше проверить вручную.

Контрольные точки

Как проверить результат

Вход обычного пользователя
Норма

При блокировке — сообщение о работах; после снятия — нормальный вход

Тревожный признак

Пользователь входит при включённой блокировке без кода

Вход с параметром /UC
Норма

Администратор с кодом разблокировки входит в заблокированную базу

Тревожный признак

Вход с кодом отклоняется — проверьте код и пробелы в параметре

Список сеансов в консоли
Норма

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

Тревожный признак

Остаются спящие сеансы — завершите их принудительно

Фоновые задания
Норма

Регламентные задания завершены или заблокированы

Тревожный признак

Задание запускается во время реструктуризации

Частая ситуация: блокировка снята, но пользователи всё равно не могут войти. Проверьте, не осталось ли заданным время начала блокировки в будущем с датой окончания в прошлом — такие «перевёрнутые» интервалы иногда ведут себя неочевидно. Также убедитесь, что соединение с базой не запрещено на уровне СУБД.

Типичные ошибки
01
Включили блокировку, но не завершили активные сеансы — обновление падает с ошибкой монопольного доступа
02
Забыли снять блокировку после работ — утром пользователи не могут войти
03
Не задали код разблокировки — администратор сам не может войти в базу для контроля
04
Завершили сеансы без предупреждения — пользователи потеряли несохранённые данные
05
Заблокировали только пользовательские сеансы, но не фоновые задания — регламентное задание мешает реструктуризации

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

Можно ли заблокировать базу по расписанию?

Да. В свойствах информационной базы в консоли кластера задаются дата и время начала и окончания блокировки. Для регулярных работ удобнее использовать внешние скрипты через RAC или COM-соединение, которые включают блокировку перед регламентным обновлением и снимают после.

Как войти в заблокированную базу администратору?

Запустите клиент 1С с параметром /UC и кодом разблокировки, указанным при установке блокировки, например: 1cv8.exe ENTERPRISE /S"Сервер\База" /UC12345. Если код не задан, снимите блокировку через консоль кластера или СУБД.

Блокировка отключает уже работающих пользователей?

Нет. Она запрещает только создание новых сеансов. Активные сеансы завершайте отдельно через консоль кластера или механизм завершения работы пользователей в БСП.

Что делать, если консоли кластера нет на компьютере?

Установите компоненту администрирования с дистрибутива сервера 1С либо используйте утилиту командной строки RAC, которая позволяет управлять блокировкой сеансов информационной базы (команда infobase update с параметрами sessions-deny). Также подойдёт программная установка блокировки через COM-соединение.

Работают ли регламентные задания во время блокировки?

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

Итог

Что важно запомнить

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