Администрирование · 10 мин
Чем отличается чтение от просмотра в 1С
Чем отличается чтение от просмотра в 1С: разница в блокировках, правах и скорости работы. Как выбрать режим открытия объекта и избежать конфликтов.
В 1С один и тот же документ или элемент справочника можно открыть по-разному: в режиме чтения или в режиме просмотра. Внешне форма выглядит почти одинаково, но внутри платформа ведёт себя принципиально иначе — по-разному накладывает блокировки, проверяет права и расходует ресурсы сервера. Понимание этой разницы помогает избежать ошибок «Конфликт блокировок», ускорить работу пользователей и правильно выстраивать обмены данными.
Режим чтения предполагает, что объект будет не только показан, но и, возможно, изменён: платформа готовит данные к редактированию и накладывает управляемую блокировку. Режим просмотра — это «витрина»: данные просто выводятся на экран, объект не блокируется, а другие пользователи могут спокойно с ним работать.
Что такое чтение и просмотр в 1С
Под чтением в контексте открытия объектов понимают загрузку данных объекта с намерением работы с ним: пользователь получает форму, в которой поля доступны для редактирования (если есть права), а платформа фиксирует, что объект «занят». В программном коде это соответствует вызову Прочитать() или открытию формы объекта в обычном режиме.
Просмотр — это открытие формы в режиме «только просмотр» (свойство формы ТолькоПросмотр или соответствующий параметр открытия). Данные загружаются, отображаются, но изменить их нельзя, и платформа не удерживает объект в заблокированном состоянии для редактирования.
Главные отличия: блокировки, права и скорость
Первое и главное отличие — блокировка. При чтении с последующим редактированием платформа накладывает управляемую блокировку на объект: если другой пользователь попытается открыть тот же документ для изменения, он получит сообщение о конфликте или будет ждать. При просмотре блокировка редактирования не устанавливается, и параллельная работа не страдает.
Второе отличие — нагрузка. Просмотр легче: не создаётся контекст редактирования, не удерживаются ресурсы на сервере и в СУБД. В крупных базах с сотнями одновременных пользователей массовое открытие объектов «на чтение» вместо «на просмотр» заметно влияет на производительность.
Третье отличие — права. Для просмотра достаточно права «Просмотр» на объект, тогда как для открытия с возможностью изменения требуется право «Изменение». Это позволяет гибко разграничивать доступ: например, менеджер видит документы, но не может их поправить.
| Критерий | Чтение (редактирование) | Просмотр |
|---|---|---|
| Блокировка объекта | Накладывается при начале изменения | Не накладывается |
| Необходимые права | Просмотр + Изменение | Только Просмотр |
| Нагрузка на сервер | Выше | Ниже |
| Риск конфликтов | Есть при параллельной работе | Отсутствует |
| Изменение данных | Возможно | Невозможно |
Как режимы работают в пользовательском интерфейсе
В типовых конфигурациях многие списки настроены так, что двойной щелчок открывает объект для редактирования. Если пользователь просто хотел посмотреть реквизиты документа, а открыл его «на изменение», он невольно заблокировал документ для коллег — и забыл закрыть форму. Это самая частая бытовая причина конфликтов блокировок.
Режим «Только просмотр» виден сразу: поля формы становятся недоступными (серыми), кнопки «Записать» и «Провести» неактивны, в заголовке или командной панели может присутствовать пометка о режиме. Пользователь в такой форме ничего испортить не может — это безопасный способ ознакомиться с данными.
Чтение и просмотр в коде 1С
Для разработчика разница между режимами проявляется в выборе методов. Чтобы просто получить данные объекта, достаточно Объект.Прочитать() — это чтение без намерения изменить. Если далее планируется запись, платформа при записи сама проверит, не изменился ли объект с момента чтения, и при конфликте выдаст ошибку версионирования.
Для гарантированного монопольного доступа при изменении используют Заблокировать() или объектные блокировки через БлокировкаДанных. Для массовых операций, где изменение не нужно, важно не читать объекты целиком, а работать запросами — запрос читает данные без объектных блокировок и намного быстрее.
Открытие формы из кода в режиме просмотра делается через параметры формы: передаётся ключ объекта и признак «только просмотр». Это типовой приём для кнопок «Показать документ» в отчётах и обработках, где редактирование не предполагается.
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ДокументСсылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", Истина);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);Когда какой режим выбирать
Правило простое: если цель — посмотреть, сверить, распечатать или скопировать данные вручную, открывайте объект в режиме просмотра. Если цель — изменить, провести или перезаполнить документ, открывайте на редактирование, но закрывайте форму сразу после завершения работы.
В обменах данными и фоновых заданиях логика та же: загрузка объекта для анализа — это чтение, загрузка для записи — чтение плюс блокировка. Ошибка в выборе режима в регламентных операциях приводит к взаимоблокировкам и остановке обменов.
Как выбрать действие
Типичные ошибки и риски
Самая распространённая ошибка пользователей — открывать документы «на всякий случай» в режиме редактирования и держать их открытыми часами. Коллеги не могут провести эти документы, начинаются звонки и простои в работе.
Ошибка разработчиков — читать объекты в цикле, когда достаточно запроса. Это в разы медленнее и создаёт лишнюю нагрузку на СУБД. Обратная ошибка — забыть про блокировку там, где объект реально изменяется в нескольких сеансах: тогда возможна потеря изменений или ошибка «Конфликт блокировки при выполнении транзакции».
Как проверить, в каком режиме открыт объект
Признаки видны прямо в форме: в режиме просмотра поля недоступны для ввода, кнопки записи и проведения неактивны. В режиме редактирования поля доступны, а при начале ввода форма переходит в состояние модифицированности (в заголовке появляется признак изменения).
Администратор может посмотреть установленные блокировки через консоль кластера серверов 1С или через типовую обработку «Активные пользователи» / журнал блокировок. Это помогает найти, кто удерживает объект, когда возникает конфликт.
Как проверить результат
Поля серые, ввод невозможен — режим просмотра
Поля доступны, хотя планировался только просмотр — объект открыт на редактирование
Другой пользователь свободно открывает тот же документ
У коллег ошибка конфликта блокировки — кто-то держит объект открытым на изменение
Обработка выполняется запросом без чтения объектов
В коде цикл с Прочитать() по каждой ссылке
Что важно запомнить
Чтение открывает объект для работы с возможностью изменения и связано с блокировками, просмотр только показывает данные без блокировки и с меньшей нагрузкой. Для ознакомления всегда выбирайте просмотр, а редактирование завершайте записью и закрытием формы.
Частые вопросы
Почему появляется ошибка «Конфликт блокировки при выполнении транзакции»?
Чаще всего причина в том, что другой пользователь или фоновое задание уже изменяет этот объект или связанные с ним данные (например, регистры при проведении). Дождитесь завершения чужой операции и повторите действие. Если ошибка повторяется постоянно, проверьте, не завис ли сеанс пользователя с открытой формой документа.
Можно ли настроить, чтобы документы всегда открывались только на просмотр?
Да. Это делается через права доступа (убрать право «Изменение», оставить «Просмотр») или программно — через параметр «ТолькоПросмотр» при открытии формы. Также в форме можно включить свойство «ТолькоПросмотр» по условию, например для документов закрытого периода.
Что быстрее: чтение объекта или запрос?
Для получения отдельных реквизитов и массовой обработки запрос быстрее: он читает только нужные поля и не создаёт объект в памяти. Чтение объекта оправдано, когда нужно работать со всем объектом целиком, включая табличные части и вызов его методов.
Блокирует ли запрос данные при чтении?
Обычный запрос читает данные без объектных блокировок. В управляемом режиме блокировок запрос по умолчанию выполняется без удержания читаемых данных, поэтому не мешает параллельной работе. Блокировку читаемых данных можно установить явно с помощью конструкции «ДЛЯ ИЗМЕНЕНИЯ», но без необходимости её использовать не следует.
Как узнать, кто заблокировал документ?
В серверном режиме список блокировок виден в консоли кластера серверов 1С (раздел «Блокировки»). Также можно использовать типовые средства мониторинга активных сеансов в конфигурации. По пользователю и сеансу определяется, кто удерживает объект, после чего можно попросить его закрыть форму.
Чем отличается право «Просмотр» от права «Чтение» в ролях?
Право «Чтение» разрешает получать данные объекта программно, а «Просмотр» — открывать его в интерфейсе. Как правило, «Просмотр» без «Чтения» работать не будет, поэтому в ролях их назначают вместе. Для интерактивного ознакомления с данными достаточно этой пары прав без права «Изменение».