Вы открываете документ в 1С:Предприятие, пытаетесь его провести или изменить — и внезапно видите сообщение: «Документ находится в состоянии просмотра». Что это значит? Почему система не даёт редактировать или удалять запись? И главное — как вернуть контроль над документом, не нарушив учёт?
Эта ситуация знакома многим пользователям 1С, особенно в многопользовательских базах. «Состояние просмотра» — не ошибка, а защитный механизм, предотвращающий конфликты при одновременной работе с данными. Однако если документ «завис» в этом состоянии надолго или без видимой причины, это может парализовать работу. В статье разберём:
- 🔍 Что такое «состояние просмотра» и как оно отличается от блокировки
- ⚙️ Причины появления — от сетевых сбоев до ошибок конфигурации
- 🛠️ Способы снятия состояния через интерфейс и консоль администратора
- ⚠️ Что делать, если документ «завис» навсегда и не реагирует на стандартные методы
Важно: некоторые методы требуют прав администратора или доступа к серверу 1С. Если вы работаете в облачной версии (например, 1С:Фреш), часть инструкций может не применяться — уточняйте возможности у вашего провайдера.
Что такое «состояние просмотра» в 1С?
«Состояние просмотра» (ViewState в терминологии платформы) — это временный статус документа, который возникает, когда:
- 👁️ Пользователь открыл документ для просмотра (но не для редактирования)
- 🔄 Система фиксирует, что данные могут быть востребованы другими пользователями
- 📡 Происходит обмен данными между клиентом и сервером (например, при медленном соединении)
В отличие от блокировки (когда документ редактируется), состояние просмотра не должно мешать другим пользователям открывать этот же документ. Однако на практике оно может «зависать» из-за:
- 💻 Аварийного закрытия 1С (например, при падении клиента или отключении света)
- 🌐 Проблем с сетевым подключением к серверу базы данных
- 🐛 Ошибок в конфигурации или триггерах документа
Технически состояние просмотра хранится в системных таблицах платформы и должно автоматически сниматься при:
- Закрытии формы документа пользователем
- Истечении тайм-аута сессии (обычно 5–30 минут, зависит от настроек сервера)
- Перезагрузке сервера 1С:Предприятие
Если документ в состоянии просмотра мешает срочной работе, попробуйте сначала просто подождать 10–15 минут — часто система снимает статус автоматически.
Как отличить «состояние просмотра» от блокировки?
Пользователи часто путают эти два понятия, хотя они решаются по-разному. Вот ключевые различия:
| Параметр | Состояние просмотра | Блокировка (монопольный доступ) |
|---|---|---|
| Причина | Открытие документа для чтения, сетевые задержки | Редактирование документа пользователем |
| Кто может видеть документ | Все пользователи (только для чтения) | Только тот, кто заблокировал |
| Автоснятие | Через 5–30 минут или при закрытии формы | Только после сохранения/отмены изменений |
| Как снять вручную | Через «Администрирование» или SQL-запрос | Только пользователь, заблокировавший документ |
Если вы видите сообщение Документ изменяется пользователем [Имя] — это блокировка. Если же просто Документ находится в состоянии просмотра без указания пользователя — речь именно о ViewState.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP или 1С:УТ 11) состояние просмотра может комбинироваться с другими статусами (например, «Помечен на удаление»). В этом случае сначала снимайте состояние просмотра, а затем работайте с дополнительными метками.
Причины «зависания» документа в состоянии просмотра
В 80% случаев проблема возникает из-за некорректного завершения сессии. Но есть и другие причины:
- Аварийное завершение работы 1С:
Пользователь открыл документ, а затем:
- 🖥️ Закрыл программу через «Диспетчер задач»
- 🔌 Отключилось электричество или пропал интернет
- 🔄 Сервер 1С был перезагружен без предупреждения
- Ошибки в конфигурации:
Если в модуле документа есть код, который:
- 🐞 Не закрывает транзакции
- 🔗 Вызывает рекурсивные обращения к самому себе
- 📡 Долго выполняет сетевые запросы (например, к веб-сервисам)
Например, в Microsoft SQL Server или PostgreSQL:
- 🗄️ Зависание транзакций
- 🛑 Остановка службы агента SQL
- 📦 Переполнение временных таблиц (
tempdb)
Реже проблема связана с:
- 🕒 Неправильными настройками тайм-аута сессий в кластере серверов 1С
- 🔧 Конфликтами расширений конфигурации (если используются)
- 📦 Повреждением индексов в базе данных
Как проверить, не висит ли документ в транзакции SQL?
Откройте SQL Server Management Studio и выполните запрос:
SELECT
t.session_id,
s.host_name,
s.program_name,
t.transaction_id,
t.name,
t.transaction_begin_time
FROM sys.dm_tran_active_transactions t
JOIN sys.dm_tran_session_transactions st ON t.transaction_id = st.transaction_id
JOIN sys.dm_exec_sessions s ON st.session_id = s.session_id
WHERE t.name LIKE '%1C%';
Если в результатах есть записи старше 30 минут — транзакция зависла и требует принудительного завершения.
Как снять состояние просмотра через интерфейс 1С
Если у вас есть права администратора, попробуйте эти методы без доступа к серверу:
Способ 1: Через «Администрирование» → «Активные пользователи»
Этот метод работает в большинстве конфигураций (1С:Бухгалтерия, 1С:ЗУП, 1С:УТ и др.):
- Откройте главное меню и выберите
Администрирование → Активные пользователи. - В списке найдите пользователя, который должен был работать с документом (даже если он сейчас не в сети).
- Нажмите
Завершить сеансилиОтключить(в зависимости от версии). - Подтвердите действие и дождитесь обновления списка.
Если пользователь не отображается в списке, но документ всё равно в состоянии просмотра — переходите к следующему способу.
Способ 2: Переоткрытие документа в новом окне
Иногда помогает банальный приём:
- Закройте все открытые окна с документом.
- Нажмите
Ctrl + Shift + N(или выберите в менюФайл → Новое окно). - В новом окне попробуйте открыть документ заново.
Если документ открылся без сообщения о состоянии просмотра — проблема решена. Если нет — переходите к административным методам.
Убедитесь, что документ не редактируется другим пользователем|
Сделайте резервную копию базы (если работаете на тестовом сервере)|
Проверьте права доступа (нужны права администратора)|
Закройте все сессии 1С на своём компьютере-->
Административные методы снятия состояния просмотра
Если стандартные способы не помогли, потребуется доступ к консоли администратора или серверу базы данных.
Метод 1: Через «Управление блокировками» в консоли 1С
Этот способ подходит для серверных версий 1С:Предприятие 8.3:
- Откройте
Пуск → 1С Предприятие 8.3 → Администрирование серверов 1С:Предприятие. - Подключитесь к кластеру серверов.
- Выберите вашу информационную базу и перейдите в раздел
Блокировки. - Найдите в списке документ по его
СсылкеилиИдентификатору. - Нажмите
Снять блокировку(если есть такая кнопка) илиУдалить.
Если блокировка не отображается, но документ всё равно в состоянии просмотра — проблема может быть на уровне SQL.
Метод 2: SQL-запрос для принудительного снятия
Для Microsoft SQL Server выполните этот запрос (предварительно сделайте бэкап базы!):
-- Удаление состояния просмотра для конкретного документа
DECLARE @DocRef UNIQUEIDENTIFIER = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'; -- Замените на идентификатор документа
DELETE FROM v8locks WHERE Data LIKE '%' + CAST(@DocRef AS NVARCHAR(36)) + '%';
Чтобы найти идентификатор документа:
- Откройте документ в 1С и скопируйте его ссылку (через контекстное меню или
Ctrl + Shift + C). - В ссылке будет параметр
ref=— это и естьUNIQUEIDENTIFIER.
⚠️ Внимание: Неправильный SQL-запрос может повредить данные! Если не уверены в своих навыках — обратитесь к специалисту по 1С. В облачных версиях (например, 1С:Фреш) прямой доступ к SQL обычно запрещён.
Метод 3: Перезагрузка сервера 1С
Если документ «завис» из-за системного сбоя, поможет перезапуск служб:
- На сервере 1С откройте
Пуск → Администрирование → Службы. - Найдите службы:
1C:Enterprise 8.3 Server Agent1C:Enterprise 8.3 Server
После перезагрузки все временные состояния (включая ViewState) сбросятся. Однако этот метод разрывает все активные сессии — предупредите пользователей!
Что делать, если документ «завис» навсегда?
В редких случаях состояние просмотра становится «вечным» — не снимается ни через интерфейс, ни через SQL. Это может происходить из-за:
- 🔄 Циклических ссылок в метаданных документа
- 🗃️ Повреждения системных таблиц базы данных
- 📜 Ошибок в триггерах (например, в модуле объекта)
В таких случаях поможет:
Шаг 1: Проверка целостности базы
Выполните тестирование и исправление через Конфигуратор:
- Откройте базу в режиме
Конфигуратор(с правами администратора). - Выберите
Администрирование → Тестирование и исправление. - Отметьте флажки:
- 🔧
Проверять логическую целостность - 🔧
Проверять ссылочную целостность - 🔧
Реиндексировать таблицы
- 🔧
Выполнить и дождитесь окончания процесса.Если будут найдены ошибки — исправьте их (опция Исправлять автоматически).
Шаг 2: Обновление конфигурации
Если проблема появилась после обновления 1С, попробуйте:
- Сравнить и обновить конфигурацию (
Конфигуратор → Конфигурация → Сравнить, объединить с конфигурацией из файла). - Загрузить актуальную версию с сайта 1С:ИТС и повторить обновление.
- 📝 Логи сервера 1С (папка
C:\Program Files\1cv8\srvinfo\reg_1541\) - 📊 Дамп системных таблиц (если есть доступ к SQL)
- 📋 Скриншоты ошибок и шаги для их воспроизведения
- 🔄 Настройте тайм-ауты сессий:
В файле конфигурации кластера 1С (
conf.cfg) добавьте параметры:maxSessionTimeout = 1800 -- 30 минутdefaultSessionTimeout = 900 -- 15 минут
- 📡 Оптимизируйте сеть:
Если пользователи работают по VPN или медленному интернету, увеличьте параметр
NetworkTimeoutв настройках сервера. - 🛡️ Регулярно обновляйте платформу:
В новых версиях 1С:Предприятие 8.3.20+ улучшена обработка состояний просмотра.
- 📚 Обучайте пользователей:
Напоминайте сотрудникам не закрывать 1С через «Диспетчер задач» и правильно завершать сессии.
- 🔄 Настроить репликацию базы данных для быстрого восстановления.
- 📊 Использовать мониторинг блокировок (например, через 1С:Администратор сервера).
- Некорректного закрытия программы
- Ошибок в коде конфигурации
- Повреждения файла базы (
1Cv8.1CD)
Шаг 3: Обращение в поддержку 1С
Если ни один метод не помог, соберите следующую информацию для обращения в поддержку:
Опишите проблему максимально подробно — это ускорит решение.
Если документ критически важен (например, платёжное поручение), а состояние просмотра не снимается — создайте его копию через Действия → Скопировать и работайте с копией, пока оригинал не будет разблокирован.
Как предотвратить повторное возникновение проблемы?
Чтобы минимизировать риски «зависания» документов:
Для критически важных баз (например, в банках или крупных компаниях) рекомендуется:
FAQ: Частые вопросы по состоянию просмотра в 1С
Можно ли редактировать документ в состоянии просмотра?
Нет, пока статус не снят, документ доступен только для чтения. Попытка редактирования приведёт к ошибке Объект заблокирован другим пользователем.
Как узнать, какой пользователь «заблокировал» документ?
В большинстве случаев состояние просмотра не привязано к конкретному пользователю (в отличие от блокировки). Если в сообщении не указано имя — проблема в системном сбое, а не в действиях сотрудника.
Что будет, если принудительно снять состояние просмотра через SQL?
В 99% случаев это безопасно, так как ViewState — временная метка. Однако если в этот момент шёл обмен данными (например, при репликации), возможны несоответствия в данных. Всегда делайте бэкап перед ручными изменениями!
Почему состояние просмотра появляется в однопользовательской базе?
Даже в файловом варианте 1С (без сервера) состояние просмотра может возникать из-за:
Решение: выполните Тестирование и исправление через Конфигуратор.
Как автоматизировать снятие «зависших» состояний?
Для серверных баз можно настроить регламентное задание, которое будет раз в час проверять и снимать устаревшие состояния. Пример кода для обработки:
Процедура ОчиститьЗависшиеСостоянияПросмотра()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостоянияПросмотра.Ссылка КАК Ссылка,
| СостоянияПросмотра.ВремяСоздания КАК ВремяСоздания
|ИЗ
| РегистрСведений.СостоянияОбъектов КАК СостоянияПросмотра
|ГДЕ
| СостоянияПросмотра.ВидСостояния = &ВидСостояния
| И СостоянияПросмотра.ВремяСоздания < &ГраницаВремени";
Запрос.УстановитьПараметр("ВидСостояния", ВидСостоянияОбъекта.Просмотр);
Запрос.УстановитьПараметр("ГраницаВремени", ТекущаяДата() - 3600); // Старее 1 часа
Результат = Запрос.Выполнить();
Пока Результат.Следующий() Цикл
Попытка
Состояние = Результат.Ссылка.ПолучитьОбъект();
Состояние.Удалить();
Исключение
ЗаписатьЖурналРегистрации(НСтр("ru = 'Ошибка при удалении состояния просмотра: '") + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры