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

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

Как узнать, кто открыл документ в 1С

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

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

Механизм зависит от режима работы базы. В файловом варианте доступны активные пользователи и журнал регистрации, в клиент-серверном добавляется консоль кластера с детальной информацией о сеансах и блокировках. Ниже разобраны все рабочие способы — от штатных средств до анализа через встроенный язык.

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

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

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

Просмотр активных пользователей из режима Предприятия

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

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

Порядок действий
  1. 1
    Откройте Администрирование → Активные пользователи
  2. 2
    Найдите пользователя, указанного в сообщении о блокировке
  3. 3
    Попросите его закрыть документ или завершить сеанс штатно
  4. 4
    Если пользователь недоступен и сеанс завис — завершите сеанс из этого же списка (при наличии прав)
  5. 5
    Повторите попытку записи документа

Консоль кластера: сеансы и блокировки

В клиент-серверном варианте главный инструмент администратора — консоль кластера серверов 1С. В ветке «Сеансы» видно всех подключённых пользователей: имя, компьютер, время начала, последнюю активность и признак «спящего» сеанса. Зависший сеанс можно завершить принудительно через контекстное меню.

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

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

Журнал регистрации как источник информации

Журнал регистрации не показывает блокировки в реальном времени, но помогает восстановить картину постфактум: кто открывал, изменял и записывал документ. Откройте «Администрирование → Обслуживание → Журнал регистрации» и настройте отбор по пользователю, периоду и типу события «Данные. Изменение».

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

Программное определение блокировок

Для автоматизации мониторинга можно использовать встроенный язык. Функция ПолучитьСеансыИнформационнойБазы() возвращает массив сеансов с информацией о пользователе, компьютере и времени активности. Это позволяет строить собственные отчёты по активным подключениям.

bsl
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
    Сообщить(Сеанс.ИмяПользователя + " | " + Сеанс.ИмяКомпьютера + " | " + Сеанс.НачалоСеанса);
КонецЦикла;

Для анализа блокировок на уровне СУБД в клиент-серверном варианте администраторы используют средства самой СУБД: например, представления sys.dm_tran_locks и sys.dm_exec_sessions в MS SQL Server. Они показывают, какой процесс удерживает блокировку строки или таблицы, что помогает при тяжёлых взаимоблокировках.

Частые ошибки и спорные ситуации

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

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

Отдельная ситуация — фоновые задания. Блокировку может держать не человек, а регламентное задание: обмен данными, перепроведение, загрузка курсов. В списке сеансов такие задания видны как отдельные сеансы типа «Фоновое задание». Прерывать их стоит только понимая, что делает задание.

Как снизить количество конфликтов блокировок

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

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

Итог

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

Имя владельца блокировки чаще всего уже есть в тексте ошибки. Активных пользователей смотрите в разделе «Администрирование», точную картину по объектам — в консоли кластера. Завершайте чужие сеансы только после попытки связаться с пользователем.

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

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

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

Документ заблокирован, но пользователь говорит, что закрыл его. Что делать?

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

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

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

Как найти, кто изменил документ задним числом?

Используйте журнал регистрации с отбором по событию «Данные. Изменение» и конкретному документу. Также в карточке документа во многих конфигурациях доступна команда «История изменений» при включённом версионировании объектов.

Может ли блокировку держать обмен данными или фоновое задание?

Да. Регламентные задания и обмены работают как отдельные сеансы и блокируют объекты так же, как пользователи. В списке сеансов они видны с типом «Фоновое задание» — проверяйте его расписание при регулярных конфликтах.

Опасно ли завершать чужой сеанс принудительно?

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