Кто держит документ: как найти и снять блокировку в 1С 8.3
Содержание
Проверить, не заблокирован ли документ другим пользователем, быстрее всего по тексту ошибки: в сообщении Объект уже заблокирован платформа сама называет сеанс, пользователя и компьютер. Дальше откройте Все функции → Стандартные → Активные пользователи, найдите этого человека и попросите закрыть форму. Если он ушёл, сеанс завершает администратор.
Когда текста ошибки нет, а документ «висит» при проведении, речь уже о транзакционной блокировке. Её видно в консоли кластера и в технологическом журнале. Ниже — по порядку: какие блокировки бывают, где их смотреть и как снять, не испортив работу коллегам.
Какие блокировки бывают и как их различить
В 1С 8.3 под словом «заблокирован» скрываются три разных механизма. Способ проверки и снятия у каждого свой, поэтому сначала определите, с каким вы столкнулись.
| Вид блокировки | Когда возникает | Как проявляется |
|---|---|---|
| 🔒 Пессимистическая (объектная) | Пользователь открыл документ и начал его менять | Объект уже заблокирован + данные сеанса |
| 🔄 Оптимистическая (по версии данных) | Документ записали в другом сеансе, пока ваша форма была открыта | Объект изменен или удален другим пользователем |
| ⏳ Транзакционная (блокировка данных) | Два сеанса одновременно проводят документы с общими регистрами | Долгое ожидание, затем Конфликт блокировок при выполнении транзакции или превышение времени ожидания |
Пессимистическая блокировка
Платформа ставит её, когда вы вносите первое изменение в открытую форму: меняете поле, добавляете строку. Простое открытие документа на просмотр блокировку не ставит.
Блокировка живёт, пока форма открыта, и снимается при её закрытии или при завершении сеанса. Именно этот случай имеют в виду, когда говорят «документ открыт другим пользователем».
Оптимистическая блокировка
Здесь документ никто не держит. Платформа просто сравнивает версию данных в вашей форме с версией в базе. Если коллега успел записать документ, ваша запись отклоняется.
Решение простое: закройте форму без записи, откройте документ заново и повторите правку.
Транзакционная блокировка
Возникает при проведении, когда сеанс записывает движения в регистры. В управляемом режиме блокировок второй сеанс ждёт освобождения данных. По умолчанию время ожидания — 20 секунд, затем транзакция прерывается с ошибкой.
Такую блокировку обычно держит не форма, а длинная операция: закрытие месяца , групповое перепроведение, обмен данными.
Отличить её от пессимистической легко. Если ошибка появилась сразу при попытке изменить поле — это объектная блокировка. Если документ долго «думает» при проведении и только потом выдаёт ошибку — транзакционная. Пример: бухгалтер проводит реализацию в 10:15, а в это время коллега запустил перепроведение документов за квартал. Оба сеанса пишут в одни и те же регистры остатков, и реализация ждёт свою очередь.
Как прочитать сообщение об ошибке
Первый и самый надёжный инструмент — само сообщение. При пессимистической блокировке оно выглядит примерно так:
Не удалось заблокировать объект.
Объект уже заблокирован:
Сеанс: 14, Пользователь: Иванова Мария,
Компьютер: BUH-07, Приложение: Тонкий клиент,
Начало: 07.10.2026 09:42:15
Что из этого брать в работу:
- 👤 Пользователь — кому звонить или писать.
- 💻 Компьютер — помогает, если под одной учётной записью работают несколько человек.
- 🔢 Номер сеанса — по нему администратор найдёт и при необходимости завершит именно нужный сеанс.
- 🕘 Начало — если сеансу несколько дней, пользователь почти наверняка забыл закрыть программу.
Если в сообщении указан ваш же пользователь, но другой компьютер или другой номер сеанса — у вас открыт второй экземпляр 1С. Часто это забытое окно на удалённом рабочем столе.
Где посмотреть, кто держит документ
Список активных пользователей
Обработка есть во всех типовых конфигурациях. Откройте её через Все функции → Стандартные → Активные пользователи или в конфигураторе через Администрирование → Активные пользователи.
В списке видно пользователя, компьютер, приложение, время начала и номер сеанса. Сопоставьте номер сеанса с сообщением об ошибке. Этот способ работает и в файловой, и в клиент-серверной базе.
Если пункта «Все функции» нет в меню, включите его: Главное меню → Сервис → Параметры, флажок «Отображать команду «Все функции»».
Консоль администрирования кластера
В клиент-серверном варианте откройте консоль кластера, разверните Информационные базы → <ваша база> и выберите узел Блокировки. Там перечислены блокировки с указанием сеанса и соединения, а в описании виден объект.
Тот же список можно получить утилитой rac:
rac cluster list
rac lock list --cluster=<uuid-кластера> --infobase=<uuid-базы>
Точный набор параметров для вашей версии платформы смотрите в rac help lock. Для доступа к базе может понадобиться указать пользователя и пароль администратора кластера.
Многие называют узел «Блокировки» консоли кластера «монитором блокировок». Отдельного стандартного монитора блокировок в пользовательском режиме 1С 8.3 нет.
Технологический журнал — для транзакционных блокировок
Конфликты при проведении в списке активных пользователей не видны. Их фиксирует технологический журнал. Настройка лежит в файле logcfg.xml в каталоге conf платформы. Нужные события:
TLOCK— установка управляемой блокировки;TTIMEOUT— превышено время ожидания;TDEADLOCK— взаимоблокировка двух сеансов.
Пример минимальной настройки:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<event>
<eq property="name" value="TDEADLOCK"/>
</event>
<property name="all"/>
</log>
</config>
В записи TTIMEOUT есть свойство WaitConnections — номера соединений, которые держали данные. По ним в консоли кластера находят виновный сеанс.
Технологический журнал быстро растёт. Включайте его на время диагностики, ограничивайте событиями и не забывайте удалять или переименовывать logcfg.xml после разбора.
Журнал регистрации: что он покажет, а что нет
Журнал регистрации (Все функции → Стандартные → Журнал регистрации) сами блокировки не записывает. Но он отвечает на смежные вопросы: кто и когда менял документ и чем был занят сеанс перед конфликтом.
Как настроить отбор :
- Откройте журнал и нажмите кнопку отбора.
- В поле Данные выберите проблемный документ.
- Ограничьте Интервал часом-двумя вокруг момента ошибки.
- Посмотрите события
Данные. ИзменениеиДанные. Проведение: кто последним записал документ. - Снимите отбор по данным и поставьте отбор по Сеансу из сообщения об ошибке. Так видно, что делал этот пользователь.
Полезные приёмы:
- 🧾 Если сеанс много часов не оставлял событий — человек открыл документ и ушёл.
- 🔁 Если в журнале серия записей одного документа от двух пользователей подряд — это источник ошибок
Объект изменен или удален другим пользователем. - ⚙️ Если перед зависанием идут события регламентного задания или обмена — блокировку держала фоновая операция, а не человек.
Уровень Ошибка в журнале стоит просмотреть отдельно: необработанные исключения при записи документов туда попадают вместе с текстом.
Программная проверка занятости документа
Иногда нужно проверить блокировку из кода: перед групповой обработкой или в собственной форме. Для этого пытаются заблокировать данные и сразу снимают блокировку. Код выполняется на сервере.
&НаСервереБезКонтекста
Функция ДокументЗанят(Ссылка, ТекстОшибки)
Попытка
ЗаблокироватьДанныеДляРедактирования(Ссылка);
Исключение
ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Истина;
КонецПопытки;
РазблокироватьДанныеДляРедактирования(Ссылка);
ТекстОшибки = "";
Возврат Ложь;
КонецФункции
Если функция вернула Истина, в ТекстОшибки будет то же сообщение с номером сеанса и пользователем, что видит человек в форме.
Второй вариант — через объект:
ДокументОбъект = Ссылка.ПолучитьОбъект();
Попытка
ДокументОбъект.Заблокировать();
// документ свободен, работаем с ним
ДокументОбъект.Разблокировать();
Исключение
Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Метод Заблокирован() у объекта не подходит для проверки чужой блокировки. Он отвечает только на вопрос, заблокирован ли объект этим же экземпляром объекта в текущем сеансе.
В групповой обработке пропускайте занятые документы, а их список выводите в конце. Так один забытый документ не остановит перепроведение сотни других.
Как снять блокировку документа
Действуйте от мягкого к жёсткому.
| Способ | Когда подходит | Последствия |
|---|---|---|
| Попросить закрыть форму | Пользователь на месте | Никаких |
| Завершить сеанс из «Активных пользователей» | Пользователь ушёл, клиент-серверная база | Несохранённые правки в этом сеансе пропадут |
Удалить сеанс в консоли кластера или rac session terminate | Обработка не помогла или нет прав в 1С | То же, плюс оборвётся фоновая операция |
| Дождаться окончания операции | Блокировку держит закрытие месяца или обмен | Никаких, нужно только время |
Завершение сеанса администратором
В типовых конфигурациях на базе БСП в форме активных пользователей есть команда завершения выбранного сеанса. Нужны административные права в базе и, для клиент-серверного варианта, доступ к кластеру.
Через консоль кластера: узел Сеансы базы → найдите сеанс по номеру → контекстное меню → Удалить. Через rac:
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Завершение сеанса обрывает работу пользователя без сохранения. Если сеанс выполняет проведение или обмен, транзакция откатится и операцию придётся запускать заново. Перед завершением чужого сеанса предупредите пользователя или убедитесь, что его нет на месте.
Файловая база
В файловом варианте консоли кластера нет. Найдите компьютер по списку активных пользователей и закройте 1С на нём.
Удалять служебные файлы в каталоге базы, пока в ней работают люди, нельзя: это повреждает базу. Если программа на рабочем месте зависла, завершите процесс 1cv8.exe или 1cv8c.exe на этом компьютере через диспетчер задач.
Как сделать так, чтобы блокировки не мешали
Организационные меры:
- 📝 Договоритесь закрывать формы документов после правки, а не держать их открытыми весь день.
- 🌙 Тяжёлые операции — закрытие месяца, перепроведение, загрузку больших пакетов — ставьте на нерабочее время.
- 👥 Не давайте одну учётную запись нескольким сотрудникам: иначе по сообщению об ошибке не понять, кто держит документ.
- ⏰ Настройте автоматическое завершение неактивных сеансов, если это поддерживает ваша конфигурация или инфраструктура терминального сервера.
Технические меры для программиста:
- ⚙️ Проверьте свойство конфигурации Режим управления блокировкой данных. В управляемом режиме блокируются только нужные записи регистров, а не целые таблицы.
- ✂️ Держите транзакции короткими: не открывайте диалоги и не обращайтесь к внешним сервисам внутри транзакции.
- 📊 Используйте одинаковый порядок блокировки ресурсов в разных документах, чтобы избегать взаимоблокировок.
- 🧩 В групповых обработках проверяйте занятость документа кодом из раздела выше и пропускайте занятые.
Если конфликты при проведении идут каждый день в одно и то же время, сравните это время с расписанием регламентных заданий. Часто виновник — обмен или загрузка выписок, запущенные в рабочие часы.
Частые вопросы
Ставится ли блокировка, если документ просто открыт на просмотр?
Сколько держится блокировка, если пользователь ушёл домой?
Можно ли снять блокировку одного документа, не выкидывая пользователя?
Почему в «Активных пользователях» сеанс есть, а человек говорит, что 1С закрыта?
Можно ли увеличить время ожидания блокировки при проведении?
УстановитьВремяОжиданияБлокировкиДанных(). Но это лечит симптом: лучше найти и укоротить операцию, которая долго держит данные.