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

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

Как ставить блокировку в 1С: пошаговое руководство

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

Блокировка в 1С — это не одна функция, а несколько разных механизмов: блокировка сеансов пользователей для регламентных работ, блокировка конкретного пользователя, установка даты запрета редактирования и управляемые блокировки данных в коде конфигурации. Прежде чем что-то делать, нужно понять, какую именно задачу вы решаете: выгнать пользователей перед обновлением, закрыть период от изменений или защитить данные от одновременной записи двумя сеансами.

Каждый вариант реализуется по-разному и имеет свои ограничения. Блокировка сеансов ставится через консоль кластера или параметр «Блокировка установки соединений», дата запрета — через настройки прав доступа, а блокировки данных — программно через объект «БлокировкаДанных». Ниже разобраны все основные сценарии с точными шагами и проверкой результата.

Какую блокировку выбрать под свою задачу

Словом «блокировка» в 1С называют минимум четыре разных действия. Если перепутать механизмы, можно либо не добиться результата, либо нарушить работу пользователей. Например, дата запрета редактирования не остановит активные сеансы, а блокировка сеансов не защитит данные от конфликта записи.

Виды блокировок в 1С

Блокировка сеансов (соединений)

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

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

Отключает конкретного сотрудника от базы. Не завершает уже открытый сеанс — его нужно удалить отдельно.

Дата запрета изменения данных

Закрывает прошлые периоды от редактирования документов. Не мешает текущей работе.

Управляемые блокировки данных

Программная защита объектов от одновременной записи. Применяется в коде, требует навыков конфигурирования.

Определите цель: обслуживание базы, увольнение сотрудника, закрытие отчётного периода или устранение ошибок «Конфликт блокировки при выполнении транзакции». От ответа зависит инструмент.

Блокировка сеансов пользователей на сервере 1С

Это самая частая задача: нужно, чтобы никто не мог войти в базу на время обновления или регламентных работ. В клиент-серверном варианте блокировка ставится через консоль кластера серверов 1С:Предприятие.

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

Поле «Код разрешения» позволяет администратору зайти в базу, пока она заблокирована: код дописывается в строку запуска через параметр /UC. Обязательно заполните сообщение для пользователей — они увидят его при попытке входа и не будут считать, что программа сломалась.

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

Блокировка через утилиту rac и в файловой базе

Для автоматизации регламентных работ удобнее ставить блокировку скриптом через консольную утилиту rac, входящую в состав сервера 1С. Это позволяет включать и снимать блокировку по расписанию без ручных действий в консоли.

bash
rac infobase update --cluster=<ид_кластера> --infobase=<ид_базы> --sessions-block=on --permission-code=ADMIN123 --blocked-message="Идут регламентные работы"

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

Блокировка конкретного пользователя

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

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

Дата запрета изменения данных

Для защиты закрытых периодов от случайного или намеренного изменения документов используется дата запрета редактирования. В типовых конфигурациях она находится в разделе Администрирование → Настройки прав и пользователей → Даты запрета изменения данных. Установите дату — и все документы раньше неё станут недоступны для проведения и удаления.

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

Управляемые блокировки данных в коде

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

bsl
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрНакопления.ОстаткиТоваров");
Элемент.УстановитьЗначение("Номенклатура", Номенклатура);
Блокировка.Заблокировать();

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

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

Проверка результата и снятие блокировки

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

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

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

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

Появляется заданное сообщение о блокировке

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

Пользователь входит в базу без ограничений

Вход с кодом разрешения
Норма

Администратор попадает в базу

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

Код не принимается — проверьте соответствие кода в свойствах базы

Редактирование закрытого периода
Норма

Отказ с сообщением о дате запрета

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

Документ проводится — дата запрета не настроена или у пользователя есть право обхода

Управляемая блокировка в коде
Норма

Второй сеанс ждёт или получает ошибку конфликта

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

Данные записываются одновременно без ошибок

Снимается блокировка сеансов тем же способом, каким ставилась: снимите флажок в свойствах базы в консоли кластера или выполните команду rac с параметром --sessions-block=off. После снятия убедитесь, что пользователи могут войти, и проверьте журнал регистрации на предмет ошибок за период блокировки.

Итог

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

Блокировка сеансов ставится в консоли кластера или через rac и не завершает открытые сеансы. Отдельного пользователя отключают в справочнике пользователей, прошлые периоды закрывают датой запрета, а данные в коде защищают объектом «БлокировкаДанных» внутри транзакции. После любой блокировки проверяйте результат тестовым входом и не забывайте снимать ограничение по завершении работ.

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

Как заблокировать базу 1С, если она файловая, а не серверная?

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

Почему пользователи продолжают работать после включения блокировки сеансов?

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

Что делать, если возникает ошибка «Конфликт блокировки при выполнении транзакции»?

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

Можно ли заблокировать только один документ или справочник?

Штатной кнопки «заблокировать объект» нет. Варианты: дата запрета для старых документов, ограничение прав на уровне записей (RLS) в конфигурации или программные управляемые блокировки при записи. Для разовой задачи проще всего снять у пользователя права на изменение конкретного объекта через роли.

Кто может снять блокировку, если администратор недоступен?

Любой пользователь с правом администрирования кластера серверов 1С или с полными правами в конфигурации, если блокировка программная. Поэтому список администраторов кластера должен быть минимальным и защищён паролем, а код разрешения не следует сообщать рядовым пользователям.