Кто держит документ: ищем пользователя, из-за которого 1С не даёт записать

· 9 мин

Содержание

Узнать, кем заблокирован документ в 1С 8.3, проще всего из самого сообщения об ошибке. Платформа пишет Объект уже заблокирован и рядом перечисляет данные сеанса: пользователя, компьютер, приложение, номер сеанса и время его начала. Если этого мало, откройте список активных пользователей (Все функции → Стандартные → Активные пользователи), а на сервере — консоль кластера.

Частое заблуждение — что документ «блокирует» тот, кто последним его менял. Нет: блокировку держит тот, у кого форма документа открыта прямо сейчас и в ней начато редактирование. Автор последнего изменения в журнале может давно уйти домой, а виновник — коллега, который полчаса назад поправил комментарий и не закрыл окно.

Инструкция общая для платформы 8.3 и подходит для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых конфигураций.

Какие бывают блокировки документа и что говорит ошибка

Под словом «заблокирован» прячутся три разных ситуации. Способ поиска виновника зависит от того, какая у вас.

Что видит пользовательТип блокировкиВидно ли, кто держит
Не удалось заблокировать объект. Объект уже заблокированОбъектная (пессимистическая): документ открыт на редактирование в другом сеансеДа, прямо в тексте ошибки
Данные были изменены или удалены другим пользователемОптимистическая: документ успели записать, пока у вас была открыта старая версияБлокировки уже нет, автора ищут в журнале регистрации
Конфликт блокировок при выполнении транзакцииТранзакционная: другой сеанс записывает связанные данныеНет, нужен список сеансов или консоль кластера

Объектная блокировка

Как только пользователь меняет что-то в открытой форме документа, платформа ставит на документ блокировку. Она держится, пока форма открыта. Второй человек может открыть документ и смотреть его, но изменить и записать не сможет.

В тексте ошибки 8.3 обычно есть строка вида:

Объект уже заблокирован:
Сеанс: 14
Компьютер: BUH-PC03
Приложение: Тонкий клиент
Пользователь: Петрова А.С.
Начат: 09.10.2026 09:12:47

Обычно этого достаточно: звоните Петровой и просите закрыть документ.

Оптимистическая блокировка

Здесь документ никто не держит. Вы открыли форму, коллега в это время записал документ, и ваша копия устарела. Закройте форму без сохранения, откройте документ заново и повторите правку. Кто именно записал документ, покажет журнал регистрации (о нём ниже).

Транзакционная блокировка

Возникает при проведении, когда два сеанса одновременно пишут одни и те же регистры. Например, один бухгалтер проводит реализацию, а второй в это же время запустил закрытие месяца . Текст ошибки не называет виновника: его ищут по списку сеансов.

Список активных пользователей в самой базе

Это главный способ для файловой базы и самый быстрый для серверной. Список показывает, кто сейчас подключён к информационной базе.

Где открыть список

  • 🔹 Типовые конфигурации на БСП: Администрирование → Обслуживание, там же, где журнал регистрации. В ЗУП и УТ раздел может называться «Поддержка и обслуживание».
  • 🔹 Любая конфигурация: Главное меню → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его: Главное меню → Сервис → Параметры, флажок «Отображать команду “Все функции”».
  • 🔹 Конфигуратор: Администрирование → Активные пользователи.

Как найти нужного человека

  1. Возьмите из текста ошибки номер сеанса или имя компьютера.
  2. Отсортируйте список по колонке с номером сеанса или компьютером.
  3. Найдите строку и посмотрите пользователя и время начала сеанса.
  4. Если под одним именем работает несколько человек (например, все входят как «Бухгалтер»), ориентируйтесь на имя компьютера.

Сеанс, начатый вчера или раньше, почти всегда «забытый»: человек свернул 1С и ушёл. Это первый кандидат в виновники.

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

Консоль кластера и rac: серверная база

В клиент-серверной базе картина полнее. Консоль администрирования серверов 1С показывает не только сеансы, но и сами блокировки.

Через консоль администрирования

  1. Откройте консоль, разверните Кластеры → <кластер> → Информационные базы → <ваша база>.
  2. Узел «Сеансы» покажет всех подключённых: пользователь, компьютер, приложение, время начала и последней активности.
  3. Узел «Блокировки» покажет активные блокировки по базе с номером сеанса и описанием объекта.
  4. Найдите в описании свой документ и сопоставьте номер сеанса со списком сеансов.

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

Если консоль не открывается и пишет про отсутствие компоненты, перерегистрируйте radmin.dll той же разрядности и версии, что и сервер: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll" от имени администратора.

Через rac из командной строки

Утилита rac работает через сервер администрирования ras. Его нужно запустить заранее, по умолчанию он слушает порт 1545.

rem 1. Узнать UUID кластера
rac localhost:1545 cluster list

rem 2. Узнать UUID базы
rac localhost:1545 infobase summary list --cluster=<uuid_кластера>

rem 3. Список блокировок по базе
rac localhost:1545 lock list --cluster=<uuid_кластера> --infobase=<uuid_базы>

rem 4. Список сеансов, чтобы сопоставить номер сеанса с пользователем
rac localhost:1545 session list --cluster=<uuid_кластера> --infobase=<uuid_базы>

Если на кластере задан администратор, добавьте параметры авторизации; их точные имена покажет rac help cluster. В выводе session list у каждого сеанса есть поля user-name, host, app-id и признаки ожидания блокировок blocked-by-dbms и blocked-by-ls. Ненулевое значение в них указывает, какой сеанс кого держит.

Журнал регистрации и технологический журнал

Что даёт журнал регистрации

Сам факт объектной блокировки журнал регистрации не пишет. Зато он отвечает на соседние вопросы:

  • 📝 кто последним изменил документ — событие «Данные. Изменение» или «Данные. Проведение» с отбором по данным;
  • 🕒 когда начался сеанс подозреваемого — событие «Сеанс. Начало»;
  • 🔍 что пользователь делал перед конфликтом — отбор по пользователю и интервалу времени.

Как поставить отбор:

  1. Откройте журнал регистрации (Администрирование → Обслуживание или Все функции → Стандартные → Журнал регистрации).
  2. Нажмите «Установить отбор».
  3. Задайте интервал: 30–60 минут до появления ошибки.
  4. В поле данных выберите документ, по событиям — изменение и проведение.

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

Технологический журнал для повторяющихся конфликтов

Если конфликты блокировок при проведении повторяются каждый день, включите технологический журнал с событиями TLOCK, TTIMEOUT и TDEADLOCK. Их настраивают в файле logcfg.xml в каталоге conf платформы.

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\techlog" history="24">
    <event><eq property="name" value="TLOCK"/></event>
    <event><eq property="name" value="TTIMEOUT"/></event>
    <event><eq property="name" value="TDEADLOCK"/></event>
    <property name="all"/>
  </log>
</config>

В событии TTIMEOUT свойство WaitConnections содержит номер соединения, которое не отпустило блокировку. По нему в консоли находят сеанс и пользователя.

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

Файловая и серверная база: в чём разница

Файловый режимКлиент-серверный режим
Где смотреть сеансыСписок активных пользователейСписок активных пользователей, консоль кластера, rac
Видны ли сами блокировкиНет, только сообщение об ошибкеДа, узел «Блокировки» и rac lock list
Масштаб транзакционной блокировкиВся таблица целикомОтдельные записи при управляемом режиме блокировок
Как снять зависшую блокировкуЗакрыть программу на компьютере владельцаЗавершить сеанс в консоли

В файловой базе транзакция блокирует таблицу целиком. Поэтому долгое проведение у одного пользователя останавливает запись у всех, кто пишет в те же регистры. Конфликты при одновременной работе 5–7 человек здесь нормальное явление, а не сбой.

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

Как снять блокировку, если человека нет на месте

  • Файловая база: закрыть 1С на компьютере владельца. Если сеанс завис, а компьютер недоступен, блокировка исчезнет, когда процесс клиента завершится.
  • Серверная база: в консоли кластера выделить сеанс и выбрать «Удалить». Через командную строку: rac session terminate --cluster=<uuid> --session=<uuid_сеанса>.

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

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

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

&НаКлиенте
Процедура ПроверитьДокумент(Команда)
    Сообщить(ПроверитьБлокировкуНаСервере(Документ));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьБлокировкуНаСервере(Ссылка)
    Попытка
        ЗаблокироватьДанныеДляРедактирования(Ссылка);
        РазблокироватьДанныеДляРедактирования(Ссылка);
        Возврат "Документ никем не заблокирован";
    Исключение
        // В тексте исключения платформа указывает сеанс-владелец
        Возврат ОписаниеОшибки();
    КонецПопытки;
КонецФункции

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

Список всех сеансов базы без консоли кластера:

&НаСервереБезКонтекста
Процедура ПоказатьСеансы()
    Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
        Сообщить(СтрШаблон("Сеанс %1 | %2 | %3 | %4 | начат %5",
            Формат(Сеанс.НомерСеанса, "ЧГ=0"),
            Сеанс.Пользователь,
            Сеанс.ИмяКомпьютера,
            Сеанс.ИмяПриложения,
            Сеанс.НачалоСеанса));
    КонецЦикла;
КонецПроцедуры

ПолучитьСеансыИнформационнойБазы() требует права администрирования. Номер сеанса из ошибки ищите в первой колонке вывода.

Как сделать, чтобы документы реже блокировались

Блокировка документа — нормальная защита от одновременной правки. Цель не убрать её, а сократить время, на которое документ остаётся занятым.

  • ✅ Договоритесь закрывать формы. Записали документ — закройте его. Открытая с утра форма с начатой правкой держит документ весь день.
  • ✅ Разведите тяжёлые операции по времени. Закрытие месяца, перепроведение и групповую обработку запускайте, когда остальные не проводят документы.
  • ✅ Проверьте регламентные задания. Обмен с сайтом или банком, загрузка курсов и полнотекстовый индекс тоже пишут в базу и попадают в конфликты. Расписание смотрите в Администрирование → Обслуживание → Регламентные операции.
  • ✅ Ограничьте права на изменение. Если документ может править только его автор и главбух, конфликтов меньше. Профили групп доступа настраиваются в Администрирование → Настройки пользователей и прав.
  • ✅ Дайте каждому свою учётную запись. Общий вход «Бухгалтер» на пятерых делает поиск виновника гаданием по именам компьютеров.
  • ✅ Переходите на серверный режим, если пользователей больше 8–10. В файловой базе блокировки целых таблиц при таком числе людей неизбежны.
Диагностика: выберите симптом

Частые вопросы о заблокированных документах

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