Блокировка входа пользователей перед обновлением 1С: программа, консоль кластера, rac

· 10 мин

Содержание

Заблокировать базу 1С 8.3 на время обновления проще всего из самой программы: Администрирование → Обслуживание → Блокировка работы пользователей, задать сообщение, время начала и код разрешения, нажать «Установить блокировку». Новые сеансы перестанут открываться, а работающие пользователи получат предупреждение и будут отключены. Сами вы входите в заблокированную базу с параметром запуска /UC <код>.

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

Подготовка: что сделать до блокировки базы

Блокировка — последний шаг подготовки, а не первый. Если поставить её внезапно, бухгалтер потеряет несохранённый документ, а вы получите звонок в разгар обновления.

Порядок, который работает в организации на 5–50 пользователей:

  1. 📢 Предупредите людей заранее. За день — письмо или сообщение в рабочий чат: когда база будет недоступна и сколько примерно. Обновление релиза типовой БП 3.0 обычно занимает от 15 минут до часа, на больших базах дольше.
  2. 🕐 Выберите окно. Вечер или выходной, не день сдачи отчётности и не время выгрузки банковских выписок.
  3. ⚙️ Проверьте регламентные задания и обмены. Обмен с сайтом, загрузка курсов, обмен с УТ или Розницей тоже держат сеансы. Их нужно остановить вместе с пользователями.
  4. 🔑 Проверьте доступы. Для серверной базы нужен логин администратора кластера (если он задан) и пользователь информационной базы с полными правами.
  5. 💾 Сделайте резервную копию. Выгрузку .dt можно сделать уже после блокировки, когда в базе никого нет, или средствами СУБД.
  6. 🔢 Придумайте код разрешения. Любой набор цифр или букв, например 0408. Запишите его: без кода вы сами не войдёте в заблокированную базу.

Не используйте в качестве кода что-то очевидное вроде 123. Пользователи, которым «очень срочно», иногда подбирают его сами.

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

Блокировка из режима «1С:Предприятие»: способ для любой типовой конфигурации

Во всех конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ) есть одна и та же обработка блокировки. Она работает и для файловой, и для серверной базы.

КонфигурацияГде искать
Бухгалтерия предприятия 3.0Администрирование → Обслуживание → Блокировка работы пользователей
ЗУП 3.1Администрирование → Обслуживание → Блокировка работы пользователей
УТ 11, КА 2, ERPраздел НСИ и администрирование, панель «Поддержка и обслуживание»

В части релизов раздел называется «Поддержка и обслуживание» вместо «Обслуживание», суть та же.

Порядок действий:

  1. Откройте форму блокировки по пути из таблицы.
  2. В поле сообщения напишите понятный текст: «Обновление программы. Не входите в базу до 20:00».
  3. Укажите время начала. Поставьте запас 10–15 минут от текущего момента, чтобы люди успели сохранить документы.
  4. Время окончания можно оставить пустым — тогда блокировку снимаете вручную.
  5. Укажите код разрешения.
  6. Для серверной базы отметьте запрет регламентных заданий, если такая настройка есть в форме.
  7. Нажмите «Установить блокировку».

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

Что увидят пользователи:

  • ⏳ до начала блокировки — периодические предупреждения с вашим текстом;
  • 🚪 после наступления времени — программа завершит их сеансы;
  • 🔒 при попытке войти — сообщение о блокировке и отказ в запуске.

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

Как войти в заблокированную базу

Добавьте в строку запуска параметр /UC с кодом. В окне списка баз: «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска» → /UC0408. Или из командной строки:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /S "srv01\buh" /N "Администратор" /P "пароль" /UC 0408

Путь к 1cv8.exe и номер платформы подставьте свои. Для файловой базы вместо /S используется /F "D:\Bases\Buh".

Блокировка параметрами запуска

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

1cv8.exe ENTERPRISE /S "srv01\buh" /N "Администратор" /P "пароль" /C "ЗавершитьРаботуПользователей" /UC 0408

После обновления блокировку снимают командой с параметром /C "РазрешитьРаботуПользователей" и тем же /UC.

Конфигуратор: что делать, если в базе остались сеансы

В самом Конфигураторе отдельной кнопки «заблокировать базу» нет. Зато он показывает, кто сейчас в базе, и сам предлагает отключить людей при обновлении.

Посмотреть активных пользователей : Администрирование → Активные пользователи. В списке видно имя, компьютер, приложение и время начала сеанса. Фоновые задания и обмены там тоже отображаются.

Когда вы запускаете Конфигурация → Обновить конфигурацию базы данных (F7), возможны три исхода:

  • ✅ Изменения допускают динамическое обновление — платформа может применить их без отключения людей. Для крупных релизов типовых конфигураций на это рассчитывать не стоит: почти всегда меняется структура таблиц.
  • 🔁 Нужен монопольный режим, а в базе есть сеансы — платформа сообщит, что монопольный доступ установить не удалось, и в серверном варианте предложит завершить сеансы и повторить попытку.
  • ❌ Сеанс не завершается — висит фоновое задание или клиент потерял связь. Тогда переходите к консоли кластера.

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

Конфигуратор, запущенный с /UC, тоже держит сеанс. Если вы держите открытым второй Конфигуратор или режим предприятия под своим пользователем, монопольный режим не получится — закройте лишние окна.

Блокировка сеансов в консоли администрирования серверов

Для клиент-серверной базы этот способ надёжнее формы в программе: он не зависит от конфигурации и работает, даже если база не открывается.

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

Блокировка не отключает тех, кто уже работает. Их завершают вручную:

  1. Раскройте базу → «Сеансы».
  2. Отсортируйте список по пользователю и приложению. «1С:Предприятие» — живые люди, «Фоновое задание» — регламентные задания и обмены, «Конфигуратор» — администраторы.
  3. Выделите сеансы → правой кнопкой → «Удалить».

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

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

Блокировка через rac и ras: командная строка для серверной базы

Когда консоли нет под рукой или обновление нужно автоматизировать скриптом, используют связку ras (сервер администрирования) и rac (клиент). Обе утилиты лежат в каталоге bin установленной платформы.

Запуск ras

ras подключается к агенту кластера и слушает свой порт, по умолчанию 1545:

cd "C:\Program Files\1cv8\8.3.24.1691\bin"
ras.exe cluster --port=1545 localhost:1540

Окно с ras держите открытым, пока работаете с rac. Для постоянной работы ras регистрируют службой Windows.

Получить идентификаторы кластера и базы

rac.exe localhost:1545 cluster list
rac.exe localhost:1545 infobase summary list --cluster=<uuid-кластера>

Из первого вывода берёте cluster, из второго — infobase нужной базы. Если на кластере задан администратор, добавляйте --cluster-user и --cluster-pwd.

Включить блокировку

rac.exe localhost:1545 infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
  --infobase-user="Администратор" --infobase-pwd="пароль" ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Обновление программы до 20:00" --permission-code=0408

Время начала и конца задают параметрами --denied-from и --denied-to. Если их нет, блокировка действует сразу и до снятия.

Найти и завершить сеансы

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

В выводе session list поля user-name, app-id и host показывают, кто и откуда подключён. Полный список параметров для вашей версии платформы выводит rac help infobase и rac help session.

Скрипт из этих команд удобно поставить в планировщик заданий Windows на 22:00, а следом — пакетное обновление через 1cv8.exe DESIGNER ... /UpdateDBCfg.

Какой способ блокировки выбрать?

SQL и СУБД: что можно сделать на стороне сервера баз данных

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

Зато СУБД полезна для двух задач.

Проверить, кто реально держит подключения. В MS SQL:

SELECT session_id, login_name, host_name, program_name, status
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh');

В PostgreSQL:

SELECT pid, usename, client_addr, application_name, state
FROM pg_stat_activity
WHERE datname = 'buh';

Если после блокировки в 1С подключения остаются, это рабочие процессы rphost, сторонние отчёты BI или чужие скрипты. Принудительное отключение (KILL в MS SQL, pg_terminate_backend(pid) в PostgreSQL) обрывает транзакции, поэтому применяйте его только к подключениям не от 1С и только в окне обновления.

Сделать резервную копию быстрее, чем выгрузкой .dt. Для базы на 50 ГБ и больше бэкап СУБД занимает минуты, а выгрузка .dt — может идти час:

BACKUP DATABASE [buh]
TO DISK = N'D:\Backup\buh_before_update.bak'
WITH COPY_ONLY, COMPRESSION, STATS = 10;

COPY_ONLY не ломает цепочку ваших регулярных бэкапов. Для PostgreSQL то же делают утилитой pg_dump.

Режимы SINGLE_USER и отключение логина 1С в MS SQL не применяйте: сервер 1С потеряет доступ к базе, и обновление упадёт посередине.

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

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

Как ставилиКак снять
Форма в программеТа же форма → «Снять блокировку»
Параметр /CЗапуск с /C "РазрешитьРаботуПользователей" /UC <код>
Консоль кластераСвойства базы → снять оба флажка блокировки
racinfobase update ... --sessions-deny=off --scheduled-jobs-deny=off

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

Перед тем как открыть базу людям, проверьте:

Проверка после обновления
Выполнено: 0 / 6

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

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

Блокирует ли форма в программе Конфигуратор других администраторов?
Да. При включённой блокировке сеансов без кода разрешения не запустится ни режим предприятия, ни Конфигуратор. Сообщите код коллегам, которые обновляют базу вместе с вами.
Что будет, если забыть код разрешения?
Для серверной базы снимите блокировку в консоли кластера или командой rac — код там не нужен, нужны права администратора. Для файловой базы такого обходного пути нет, поэтому код записывайте до установки блокировки.
Нужно ли блокировать базу для установки исправлений через расширение?
Обычно нет: многие расширения применяются без монопольного доступа. Если расширение меняет структуру данных, платформа сама запросит монопольный режим.
Почему после блокировки обмен с сайтом пишет ошибки?
Регламентные задания тоже не могут начать сеанс. После снятия блокировки обмены продолжатся по расписанию, ошибки за время обновления можно игнорировать.
Можно ли обновить базу, не отключая пользователей?
Только если изменения допускают динамическое обновление — это бывает при мелких правках. Релиз типовой конфигурации почти всегда меняет структуру таблиц и требует монопольного доступа.