Почему в 1С 7.7 все документы внезапно открываются только для чтения и как это исправить?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

Ситуация, когда пользователи заходят в базу данных «1С:Предприятие 7.7» (особенно работающую под управлением MS SQL Server) и обнаруживают, что абсолютно все ранее введенные документы заблокированы для изменения, является классической проблемой администрирования «семерки». При этом в конфигурации может быть установлена корректная дата запрета редактирования (например, много лет назад), но программа все равно жестко блокирует любые изменения.

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

Форма.ТолькоПросмотр(0);

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

В этой статье мы подробно разберем причины этой проблемы и пошагово рассмотрим методы ее решения.

---

Причина 1: Зависание сетевых маркерных файлов (.lck)

Даже если ваша база данных работает на SQL-версии, платформа «1С:Предприятие 7.7» продолжает активно использовать общую сетевую папку (каталог информационной базы). В ней хранятся конфигурационный файл 1cv7.md, список пользователей users.usr и служебные файлы сетевых блокировок с расширением .lck (например, 1cv7.lck).

Если у кого-то из пользователей внезапно «отвалилась» сеть, произошел скачок напряжения или аварийно завершился сеанс работы, сетевая операционная система сервера (Windows Server или Samba на Linux) продолжает считать файлы блокировок открытыми этим пользователем. В результате файл 1cv7.lck в корне базы или аналогичные файлы в каталогах пользователей оказываются заблокированы системным процессом файл-сервера.

Пошаговое решение проблемы сетевых блокировок:

  1. Завершим работу всех пользователей. Попросим всех сотрудников полностью выйти из базы данных 1С.
  2. Проверим открытые файлы на сервере. Перейдем на файл-сервер (где расположена сетевая папка базы данных). Откроем стандартную оснастку «Управление компьютером» (Computer Management) -> «Общие папки» (Shared Folders) -> «Открытые файлы» (Open Files).
  3. Закроем зависшие сессии. Найдем в списке открытых файлов все объекты с расширением .lck и принудительно закроем их (правой кнопкой мыши -> «Закрыть открытый файл»). Также закроем зависшие сессии пользователей.
  4. Сбросим сетевую «шару» (если файлы не удаляются). Если операционная система сервера продолжает удерживать монопольный замок на файлы, кратковременно отключим общий доступ к сетевой папке базы данных и сразу включим его заново. Это принудительно разорвет все мертвые сетевые подключения.
  5. Удалим файлы блокировок вручную. Зайдем в каталог информационной базы через проводник и вручную удалим файлы 1cv7.lck, а также аналогичные файлы *.lck из папок конкретных пользователей в каталоге usrdef.

---

Причина 2: Блокировки и ограничения на уровне MS SQL Server

Если манипуляции с файлами блокировок в сетевой папке не помогли, значит, проблема кроется непосредственно в СУБД. Нам необходимо проанализировать состояние базы данных в консоли SQL Server Management Studio (SSMS).

Рассмотрим основные сценарии на стороне SQL Server:

---

Причина 3: Сбой системной даты на сервере

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

Если на сервере СУБД или на файл-сервере внезапно села батарейка CMOS на материнской плате или сбились настройки синхронизации времени по протоколу NTP, системная дата могла «откатиться» далеко назад (например, на 2000-е годы).

В этом случае текущая дата сервера становится меньше, чем дата запрета редактирования (2013 год). Платформа 1С начинает воспринимать любые текущие операции как попытку работы в «заблокированном будущем» или закрытом периоде, из-за чего превентивно блокирует возможность изменения любых документов.

Что необходимо сделать:

Проанализируем и сопоставим системное время на сервере СУБД, файл-сервере и рабочих станциях пользователей. Установим актуальную дату и время, а также настроим их автоматическую синхронизацию с контроллером домена или внешним NTP-сервером.

---

Причина 4: Локальные настройки интерфейса платформы у пользователя

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

В платформе «1С:Предприятие 7.7» предусмотрена персональная настройка открытия объектов:

  1. Откроем главное меню программы: Сервис -> Параметры.
  2. Перейдем на вкладку «Общие».
  3. Найдем переключатель «Режим открытия объектов».
  4. Если там по ошибке установлено значение «Просмотр», то при обычном двойном клике на документ в журнале он всегда будет открываться в режиме «Только для чтения». Программный метод Форма.ТолькоПросмотр(0) не сможет снять это ограничение, так как объект изначально считывается из базы без возможности изменения.
  5. Установим значение в положение «Редактирование».

Также напомним пользователям полезный лайфхак: если нужно принудительно открыть документ на редактирование в обход этой настройки, достаточно выделить документ в журнале и нажать комбинацию клавиш Shift + Enter.

---

Причина 5: Права доступа роли в Конфигураторе

Если вышеописанные способы не помогли, проверим настройки прав доступа в Конфигураторе для роли конкретного пользователя.

Если для данной роли (прав доступа) для конкретного вида документа сняты флажки «Редактирование» или «Корректировка», платформа автоматически открывает его форму в режиме ТолькоПросмотр(1). Любые попытки принудительно вызвать в коде Форма.ТолькоПросмотр(0) будут полностью проигнорированы системой безопасности платформы.

Проанализируем роли пользователей в Конфигураторе, при необходимости вернем флажки прав на изменение документов и сохраним конфигурацию.

← На главную