К статье
Практический материал

Администрирование · 10 мин

Чем отличается чтение от просмотра в 1С

Чем отличается чтение от просмотра в 1С: разница в блокировках, правах и скорости работы. Как выбрать режим открытия объекта и избежать конфликтов.

В 1С один и тот же документ или элемент справочника можно открыть по-разному: в режиме чтения или в режиме просмотра. Внешне форма выглядит почти одинаково, но внутри платформа ведёт себя принципиально иначе — по-разному накладывает блокировки, проверяет права и расходует ресурсы сервера. Понимание этой разницы помогает избежать ошибок «Конфликт блокировок», ускорить работу пользователей и правильно выстраивать обмены данными.

Режим чтения предполагает, что объект будет не только показан, но и, возможно, изменён: платформа готовит данные к редактированию и накладывает управляемую блокировку. Режим просмотра — это «витрина»: данные просто выводятся на экран, объект не блокируется, а другие пользователи могут спокойно с ним работать.

Что такое чтение и просмотр в 1С

Под чтением в контексте открытия объектов понимают загрузку данных объекта с намерением работы с ним: пользователь получает форму, в которой поля доступны для редактирования (если есть права), а платформа фиксирует, что объект «занят». В программном коде это соответствует вызову Прочитать() или открытию формы объекта в обычном режиме.

Просмотр — это открытие формы в режиме «только просмотр» (свойство формы ТолькоПросмотр или соответствующий параметр открытия). Данные загружаются, отображаются, но изменить их нельзя, и платформа не удерживает объект в заблокированном состоянии для редактирования.

Главные отличия: блокировки, права и скорость

Первое и главное отличие — блокировка. При чтении с последующим редактированием платформа накладывает управляемую блокировку на объект: если другой пользователь попытается открыть тот же документ для изменения, он получит сообщение о конфликте или будет ждать. При просмотре блокировка редактирования не устанавливается, и параллельная работа не страдает.

Второе отличие — нагрузка. Просмотр легче: не создаётся контекст редактирования, не удерживаются ресурсы на сервере и в СУБД. В крупных базах с сотнями одновременных пользователей массовое открытие объектов «на чтение» вместо «на просмотр» заметно влияет на производительность.

Третье отличие — права. Для просмотра достаточно права «Просмотр» на объект, тогда как для открытия с возможностью изменения требуется право «Изменение». Это позволяет гибко разграничивать доступ: например, менеджер видит документы, но не может их поправить.

КритерийЧтение (редактирование)Просмотр
Блокировка объектаНакладывается при начале измененияНе накладывается
Необходимые праваПросмотр + ИзменениеТолько Просмотр
Нагрузка на серверВышеНиже
Риск конфликтовЕсть при параллельной работеОтсутствует
Изменение данныхВозможноНевозможно

Как режимы работают в пользовательском интерфейсе

В типовых конфигурациях многие списки настроены так, что двойной щелчок открывает объект для редактирования. Если пользователь просто хотел посмотреть реквизиты документа, а открыл его «на изменение», он невольно заблокировал документ для коллег — и забыл закрыть форму. Это самая частая бытовая причина конфликтов блокировок.

Режим «Только просмотр» виден сразу: поля формы становятся недоступными (серыми), кнопки «Записать» и «Провести» неактивны, в заголовке или командной панели может присутствовать пометка о режиме. Пользователь в такой форме ничего испортить не может — это безопасный способ ознакомиться с данными.

Чтение и просмотр в коде 1С

Для разработчика разница между режимами проявляется в выборе методов. Чтобы просто получить данные объекта, достаточно Объект.Прочитать() — это чтение без намерения изменить. Если далее планируется запись, платформа при записи сама проверит, не изменился ли объект с момента чтения, и при конфликте выдаст ошибку версионирования.

Для гарантированного монопольного доступа при изменении используют Заблокировать() или объектные блокировки через БлокировкаДанных. Для массовых операций, где изменение не нужно, важно не читать объекты целиком, а работать запросами — запрос читает данные без объектных блокировок и намного быстрее.

Открытие формы из кода в режиме просмотра делается через параметры формы: передаётся ключ объекта и признак «только просмотр». Это типовой приём для кнопок «Показать документ» в отчётах и обработках, где редактирование не предполагается.

bsl
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ДокументСсылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", Истина);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

Когда какой режим выбирать

Правило простое: если цель — посмотреть, сверить, распечатать или скопировать данные вручную, открывайте объект в режиме просмотра. Если цель — изменить, провести или перезаполнить документ, открывайте на редактирование, но закрывайте форму сразу после завершения работы.

В обменах данными и фоновых заданиях логика та же: загрузка объекта для анализа — это чтение, загрузка для записи — чтение плюс блокировка. Ошибка в выборе режима в регламентных операциях приводит к взаимоблокировкам и остановке обменов.

Маршрут решения

Как выбрать действие

Нужно только посмотреть данные документа или элементаОткрывайте в режиме просмотра (ТолькоПросмотр)
Нужно изменить или провести объектОткрывайте на редактирование и закрывайте форму сразу после записи
Нужно обработать много объектов без измененияИспользуйте запрос вместо чтения объектов по одному
Фоновое задание изменяет объектУстанавливайте управляемую блокировку и обрабатывайте её исключения

Типичные ошибки и риски

Самая распространённая ошибка пользователей — открывать документы «на всякий случай» в режиме редактирования и держать их открытыми часами. Коллеги не могут провести эти документы, начинаются звонки и простои в работе.

Ошибка разработчиков — читать объекты в цикле, когда достаточно запроса. Это в разы медленнее и создаёт лишнюю нагрузку на СУБД. Обратная ошибка — забыть про блокировку там, где объект реально изменяется в нескольких сеансах: тогда возможна потеря изменений или ошибка «Конфликт блокировки при выполнении транзакции».

Типичные ошибки
01
Открытие документа на редактирование для простого просмотра — блокирует работу коллег
02
Длительное удержание открытой формы редактирования — конфликты блокировок у других пользователей
03
Чтение объектов в цикле вместо запроса — падение производительности
04
Изменение объекта без блокировки в фоновых заданиях — потеря данных при параллельной записи
05
Выдача права «Изменение» там, где достаточно «Просмотра» — риск случайной порчи данных

Как проверить, в каком режиме открыт объект

Признаки видны прямо в форме: в режиме просмотра поля недоступны для ввода, кнопки записи и проведения неактивны. В режиме редактирования поля доступны, а при начале ввода форма переходит в состояние модифицированности (в заголовке появляется признак изменения).

Администратор может посмотреть установленные блокировки через консоль кластера серверов 1С или через типовую обработку «Активные пользователи» / журнал блокировок. Это помогает найти, кто удерживает объект, когда возникает конфликт.

Контрольные точки

Как проверить результат

Доступность полей формы
Норма

Поля серые, ввод невозможен — режим просмотра

Тревожный признак

Поля доступны, хотя планировался только просмотр — объект открыт на редактирование

Параллельная работа коллег
Норма

Другой пользователь свободно открывает тот же документ

Тревожный признак

У коллег ошибка конфликта блокировки — кто-то держит объект открытым на изменение

Нагрузка массовой обработки
Норма

Обработка выполняется запросом без чтения объектов

Тревожный признак

В коде цикл с Прочитать() по каждой ссылке

Итог

Что важно запомнить

Чтение открывает объект для работы с возможностью изменения и связано с блокировками, просмотр только показывает данные без блокировки и с меньшей нагрузкой. Для ознакомления всегда выбирайте просмотр, а редактирование завершайте записью и закрытием формы.

Частые вопросы

Почему появляется ошибка «Конфликт блокировки при выполнении транзакции»?

Чаще всего причина в том, что другой пользователь или фоновое задание уже изменяет этот объект или связанные с ним данные (например, регистры при проведении). Дождитесь завершения чужой операции и повторите действие. Если ошибка повторяется постоянно, проверьте, не завис ли сеанс пользователя с открытой формой документа.

Можно ли настроить, чтобы документы всегда открывались только на просмотр?

Да. Это делается через права доступа (убрать право «Изменение», оставить «Просмотр») или программно — через параметр «ТолькоПросмотр» при открытии формы. Также в форме можно включить свойство «ТолькоПросмотр» по условию, например для документов закрытого периода.

Что быстрее: чтение объекта или запрос?

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

Блокирует ли запрос данные при чтении?

Обычный запрос читает данные без объектных блокировок. В управляемом режиме блокировок запрос по умолчанию выполняется без удержания читаемых данных, поэтому не мешает параллельной работе. Блокировку читаемых данных можно установить явно с помощью конструкции «ДЛЯ ИЗМЕНЕНИЯ», но без необходимости её использовать не следует.

Как узнать, кто заблокировал документ?

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

Чем отличается право «Просмотр» от права «Чтение» в ролях?

Право «Чтение» разрешает получать данные объекта программно, а «Просмотр» — открывать его в интерфейсе. Как правило, «Просмотр» без «Чтения» работать не будет, поэтому в ролях их назначают вместе. Для интерактивного ознакомления с данными достаточно этой пары прав без права «Изменение».