Администрирование · 11 мин
Как проверить блокировку объекта в 1С
Как проверить блокировку объекта в 1С: просмотр сеансов, журнал регистрации, консоль кластера, управляемые блокировки и способы снять зависший сеанс без потери данных.
Ошибка «Конфликт блокировок при выполнении транзакции» или сообщение о том, что объект уже редактируется другим пользователем, — типичная ситуация в многопользовательской работе 1С. Блокировка сама по себе не ошибка: это штатный механизм, который защищает данные от одновременного изменения. Проблемой она становится, когда сеанс завис, пользователь давно вышел, а объект остаётся недоступным.
Проверить блокировку можно несколькими способами: через консоль кластера серверов 1С, через журнал регистрации, штатные функции управляемого приложения и программные средства встроенного языка. Выбор способа зависит от режима работы базы (файловый или клиент-серверный) и от того, какая блокировка возникла — транзакционная на уровне СУБД или управляемая на уровне платформы.
Ниже разобраны практические шаги для обоих режимов, способы определить, кто именно держит объект, и безопасные методы снятия зависшей блокировки.
Какие бывают блокировки в 1С и почему они возникают
Платформа 1С использует два типа блокировок. Управляемые блокировки устанавливаются платформой и прикладным кодом при записи объектов в транзакции — они видны в консоли кластера и снимаются при завершении сеанса. Транзакционные блокировки накладывает сама СУБД (MS SQL, PostgreSQL) при чтении и изменении данных — они живут внутри транзакции и снимаются при её фиксации или откате.
Типичные причины «зависших» блокировок: аварийное завершение клиентского приложения (пропала сеть, перезагрузился компьютер), длительная транзакция в фоновом задании, обмен данными, который выполняется дольше обычного, а также программные ошибки — например, транзакция, открытая в коде и не закрытая из-за исключения.
Как проверить блокировку через консоль кластера серверов
Это основной инструмент для клиент-серверных баз. Откройте «Администрирование серверов 1С:Предприятия» на компьютере, где установлена оснастка, разверните нужный кластер, затем рабочий сервер и информационную базу. В ветке «Сеансы» отображаются все активные подключения: видно пользователя, время начала сеанса, приложение (тонкий клиент, фоновое задание, COM-соединение) и объём прочитанных и записанных данных.
Чтобы увидеть конкретные блокировки, выделите сеанс и откройте его свойства или контекстное меню — в зависимости от версии платформы список блокировок доступен в отдельной вкладке либо через ветку «Блокировки» внутри информационной базы. Там указано, какой объект заблокирован (таблица, пространство блокировок) и каким сеансом.
Признак проблемного сеанса: он висит долго, активность по чтению и записи не меняется, а пользователь подтверждает, что программа у него закрыта или зависла. Такой сеанс — кандидат на завершение.
- 1Откройте оснастку «Администрирование серверов 1С» и найдите нужную информационную базу
- 2Разверните ветку «Сеансы» и найдите сеанс пользователя, у которого возникла ошибка
- 3Проверьте ветку «Блокировки»: какие объекты удерживаются и какими сеансами
- 4Сопоставьте время начала сеанса и активность с реальной работой пользователя
- 5Если сеанс завис — завершите его через контекстное меню «Удалить»
Как найти виновника через журнал регистрации
Журнал регистрации помогает понять, кто и когда обращался к объекту, особенно если блокировка уже снялась, а разобраться в причинах нужно. Откройте в режиме «1С:Предприятие»: «Администрирование» → «Обслуживание» → «Журнал регистрации» (в типовых конфигурациях путь может немного отличаться).
Настройте отбор по периоду, когда возникла ошибка, по пользователю и по событию. Полезны события с комментариями о конфликте блокировок, а также события записи и изменения данных по конкретному объекту. По цепочке событий видно, какой сеанс первым захватил объект и завершился ли он корректно.
Ограничение метода: журнал показывает историю, но не текущее состояние блокировок в реальном времени. Для «живой» диагностики он дополняет консоль кластера, а не заменяет её.
Проверка блокировок в файловой базе
В файловом режиме консоли кластера нет, поэтому инструментарий уже. Первый шаг — список активных пользователей: «Администрирование» → «Активные пользователи». Здесь видно, кто сейчас подключён к базе, с какого компьютера и когда начал сеанс. Если объект заблокирован, а в списке висит сеанс пользователя, который давно ушёл, — вероятно, это зависшее подключение.
Завершить чужой сеанс из этого списка штатно нельзя. Варианты: попросить пользователя корректно закрыть программу, перезагрузить компьютер с зависшим клиентом либо при монопольном доступе перезапустить базу. Если файл базы лежит на сетевом ресурсе, иногда помогает закрытие открытых файлов на стороне файлового сервера — но это крайняя мера, требующая уверенности, что запись в базу не идёт.
Программная проверка блокировок встроенным языком
Разработчикам и администраторам с доступом к конфигуратору доступны программные методы. Функция ПолучитьСеансыИнформационнойБазы() возвращает массив сеансов с их свойствами — имя пользователя, приложение, время начала, текущее фоновое задание. Метод ПолучитьБлокировкиСеансов() показывает управляемые блокировки по каждому сеансу.
Для проверки конкретного объекта в транзакции можно использовать попытку установки управляемой блокировки через БлокировкаДанных: если объект уже заблокирован другим сеансом, вызов Заблокировать() вызовет исключение, которое можно перехватить и обработать — например, вывести пользователю понятное сообщение вместо стандартной ошибки платформы.
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
Сообщить(Сеанс.ИмяПользователя + " | " + Сеанс.ИмяПриложения + " | начат: " + Сеанс.НачалоСеанса);
КонецЦикла;Как снять зависшую блокировку без потери данных
Безопасная последовательность такая. Сначала идентифицируйте сеанс, держащий блокировку, и свяжитесь с пользователем. Если его клиент работает — пусть завершит редактирование и закроет объект штатно. Если клиент завис — попросите закрыть его через диспетчер задач; блокировка снимется автоматически после таймаута сеанса.
Если пользователь недоступен, завершите сеанс принудительно через консоль кластера (команда «Удалить» в списке сеансов). Платформа откатит незавершённую транзакцию и освободит блокировки. Для блокировок на уровне СУБД, которые не снимаются, может потребоваться завершение процесса на стороне SQL-сервера — это задача администратора СУБД, выполнять её без понимания, какая транзакция прерывается, не следует.
После снятия блокировки проверьте результат: повторно откройте объект и убедитесь, что он редактируется, а в журнале регистрации нет новых ошибок конфликта.
Как проверить результат
Объект открывается на редактирование без сообщений о блокировке
Ошибка «объект заблокирован» повторяется — сеанс не завершён или есть вторая блокировка
Зависшего сеанса нет, активность остальных сеансов меняется
Сеанс снова появляется с тем же компьютера — клиент переподключается автоматически
Новых ошибок конфликта блокировок нет
Ошибки повторяются — ищите фоновое задание или обмен, создающий длительную транзакцию
Частые ошибки и профилактика блокировок
Самая распространённая ошибка администратора — снятие блокировки «вслепую», без анализа причины. Если блокировку создаёт регламентное задание или обмен, она появится снова через несколько минут. Вторая ошибка — завершение всех сеансов подряд вместо поиска конкретного: пользователи теряют несохранённые данные, а проблема при этом может остаться на уровне СУБД.
Для профилактики полезны: настройка таймаута завершения неактивных сеансов в свойствах информационной базы, контроль длительных транзакций в фоновых заданиях, перевод конфигурации в режим управляемых блокировок (если она ещё работает в автоматическом режиме) и разнесение тяжёлых операций — обменов, закрытия месяца — на нерабочее время.
Как выбрать действие
Частые вопросы
Как узнать, кто заблокировал документ, если ошибка появляется только у одного пользователя?
Откройте консоль кластера и посмотрите ветку «Блокировки» в момент, когда пользователь воспроизводит ошибку. Там будет виден сеанс, удерживающий объект. В файловой базе сопоставьте время ошибки с журналом регистрации — по событиям записи объекта видно, чей сеанс захватил его последним.
Снимется ли блокировка сама, если ничего не делать?
Да, если сеанс завершится — корректно или по таймауту. Управляемые блокировки привязаны к сеансу и освобождаются при его окончании. Если таймаут не настроен, зависший сеанс может висеть долго, поэтому рекомендуется задать время завершения неактивных сеансов в свойствах базы.
Чем отличается ошибка «Конфликт блокировок при выполнении транзакции» от сообщения «объект редактируется»?
Первое — конфликт на уровне транзакции и СУБД: два процесса одновременно меняют одни данные. Второе — прикладная блокировка объекта в интерфейсе: кто-то открыл тот же документ на редактирование. Во втором случае достаточно дождаться закрытия формы, в первом нужно искать конкурирующую транзакцию.
Опасно ли принудительно завершать сеанс через консоль кластера?
Для самой базы это штатная операция: платформа откатит незавершённую транзакцию. Риск в другом — если пользователь в этот момент реально работал, его несохранённые данные пропадут. Поэтому перед завершением проверьте активность сеанса и по возможности предупредите пользователя.
Почему блокировки появляются каждую ночь в одно и то же время?
Почти наверняка в это время запускается регламентное задание: обмен данными, пересчёт итогов, выгрузка. Проверьте расписание фоновых заданий и журнал регистрации за этот период. Решение — перенести задание на менее загруженное время или оптимизировать его транзакции.
Можно ли проверить блокировку без прав администратора?
Частично. Список активных пользователей и журнал регистрации доступны при соответствующих правах в конфигурации. Консоль кластера и программные методы получения сеансов требуют административных прав на сервер 1С. Без них остаётся обратиться к администратору с точным временем ошибки и именем объекта.
Что важно запомнить
Блокировку проверяют через консоль кластера (сеансы и ветка «Блокировки»), журнал регистрации и список активных пользователей в файловом режиме. Зависший сеанс завершают только после проверки его активности. Если блокировки повторяются — ищите причину в фоновых заданиях и длительных транзакциях, а не снимайте симптом.