Ситуация, когда пользователи заходят в базу данных «1С:Предприятие 7.7» (особенно работающую под управлением MS SQL Server) и обнаруживают, что абсолютно все ранее введенные документы заблокированы для изменения, является классической проблемой администрирования «семерки». При этом в конфигурации может быть установлена корректная дата запрета редактирования (например, много лет назад), но программа все равно жестко блокирует любые изменения.
Попытка локализовать проблему через отладчик часто заводит разработчика в тупик. При пошаговой отладке мы видим, что управление успешно проходит через строку кода:
Форма.ТолькоПросмотр(0);
Однако при проверке значения свойства Форма.ТолькоПросмотр() оно упорно остается равным 1 (режим просмотра не снимается). Это верный признак того, что блокировка наложена не кодом конфигурации, а ядром платформы на более низком уровне — уровне сетевого доступа или СУБД.
В этой статье мы подробно разберем причины этой проблемы и пошагово рассмотрим методы ее решения.
---
Даже если ваша база данных работает на SQL-версии, платформа «1С:Предприятие 7.7» продолжает активно использовать общую сетевую папку (каталог информационной базы). В ней хранятся конфигурационный файл 1cv7.md, список пользователей users.usr и служебные файлы сетевых блокировок с расширением .lck (например, 1cv7.lck).
Если у кого-то из пользователей внезапно «отвалилась» сеть, произошел скачок напряжения или аварийно завершился сеанс работы, сетевая операционная система сервера (Windows Server или Samba на Linux) продолжает считать файлы блокировок открытыми этим пользователем. В результате файл 1cv7.lck в корне базы или аналогичные файлы в каталогах пользователей оказываются заблокированы системным процессом файл-сервера.
Пошаговое решение проблемы сетевых блокировок:
.lck и принудительно закроем их (правой кнопкой мыши -> «Закрыть открытый файл»). Также закроем зависшие сессии пользователей.1cv7.lck, а также аналогичные файлы *.lck из папок конкретных пользователей в каталоге usrdef.---
Если манипуляции с файлами блокировок в сетевой папке не помогли, значит, проблема кроется непосредственно в СУБД. Нам необходимо проанализировать состояние базы данных в консоли SQL Server Management Studio (SSMS).
Рассмотрим основные сценарии на стороне SQL Server:
.ldf) или произошел серьезный сбой файловой системы. При этом пользователи могут успешно зайти в 1С, строить отчеты, но любая попытка записи документа будет отвергнута сервером, из-за чего платформа переводит все формы в режим просмотра.
Как исправить: Проверим свободное место на дисках сервера. В SSMS зайдем в свойства нашей базы данных, выберем раздел «Options» (Параметры) и убедимся, что свойство «Database Read-Only» (База данных только для чтения) установлено в значение False.
Как исправить: Самый простой и быстрый способ снять все зависшие транзакции — перезапустить службу MS SQL Server в консоли служб Windows (Services.msc). Если перезапуск службы нежелателен из-за работы других баз, откроем в SSMS монитор активности (Activity Monitor), найдем блокирующий процесс (SPID) и выполним команду KILL [номер_процесса].
db_owner) и ей осталась доступна только роль чтения данных (db_datareader), все объекты в 1С будут открываться строго в режиме просмотра.---
В исходном обсуждении упоминалось, что дата запрета редактирования в базе установлена на 2013 год. Сбой системного времени на сервере или на рабочих станциях может привести к неожиданным последствиям:
Если на сервере СУБД или на файл-сервере внезапно села батарейка CMOS на материнской плате или сбились настройки синхронизации времени по протоколу NTP, системная дата могла «откатиться» далеко назад (например, на 2000-е годы).
В этом случае текущая дата сервера становится меньше, чем дата запрета редактирования (2013 год). Платформа 1С начинает воспринимать любые текущие операции как попытку работы в «заблокированном будущем» или закрытом периоде, из-за чего превентивно блокирует возможность изменения любых документов.
Что необходимо сделать:
Проанализируем и сопоставим системное время на сервере СУБД, файл-сервере и рабочих станциях пользователей. Установим актуальную дату и время, а также настроим их автоматическую синхронизацию с контроллером домена или внешним NTP-сервером.
---
Если проблема наблюдается не у всех, а только у конкретного пользователя, велика вероятность, что дело в локальной настройке режима работы с документами.
В платформе «1С:Предприятие 7.7» предусмотрена персональная настройка открытия объектов:
Форма.ТолькоПросмотр(0) не сможет снять это ограничение, так как объект изначально считывается из базы без возможности изменения.Также напомним пользователям полезный лайфхак: если нужно принудительно открыть документ на редактирование в обход этой настройки, достаточно выделить документ в журнале и нажать комбинацию клавиш Shift + Enter.
---
Если вышеописанные способы не помогли, проверим настройки прав доступа в Конфигураторе для роли конкретного пользователя.
Если для данной роли (прав доступа) для конкретного вида документа сняты флажки «Редактирование» или «Корректировка», платформа автоматически открывает его форму в режиме ТолькоПросмотр(1). Любые попытки принудительно вызвать в коде Форма.ТолькоПросмотр(0) будут полностью проигнорированы системой безопасности платформы.
Проанализируем роли пользователей в Конфигураторе, при необходимости вернем флажки прав на изменение документов и сохраним конфигурацию.