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

Разработка и Конфигурация · 9 мин

Как сделать поле недоступным для редактирования в 1С

Способы запретить редактирование поля в 1С: свойство ТолькоПросмотр, доступность, программные методы, роли и расширения. Пошаговые инструкции и проверка результата.

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

Важно сразу разделить два подхода. Первый — визуальный: поле остаётся на форме, его видно и можно скопировать, но изменить нельзя. Второй — полноценный запрет на уровне прав, когда платформа блокирует запись данных независимо от того, как пользователь пытается их изменить. Для защиты от ошибок обычно достаточно первого, для защиты от намеренных действий нужен второй.

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

Определите, какой именно запрет вам нужен

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

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

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

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

Нужно защитить поле от случайного изменения в одной формеУстановите свойство «Только просмотр» у элемента формы
Доступность зависит от условий (статус, проведение, роль пользователя)Управляйте свойством ТолькоПросмотр или Доступность программно в модуле формы
Запрет должен работать при любом способе изменения данныхНастройте роли и права на реквизит или используйте подписки на события
Типовую конфигурацию нельзя изменять (она на поддержке)Реализуйте запрет через расширение конфигурации

Способ 1. Свойство «Только просмотр» в конфигураторе

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

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

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

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и разблокируйте объект конфигурации, если он на поддержке
  2. 2
    Откройте нужную форму объекта (Форма объекта или Форма документа)
  3. 3
    Выделите поле в дереве элементов формы
  4. 4
    В палитре свойств установите «Только просмотр» = Да
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Откройте форму в режиме 1С:Предприятие и проверьте, что поле не редактируется

Способ 2. Программное управление доступностью поля

Когда запрет зависит от условий — например, поле доступно только до проведения документа или только для руководителя — свойства задаются программно в модуле формы. Для этого в обработчике «ПриСозданииНаСервере» или «ПриОткрытии» обращаются к элементу формы и меняют его свойства.

Типовой пример кода в модуле формы:

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Если Объект.Проведен Тогда

Элементы.Комментарий.ТолькоПросмотр = Истина;

КонецЕсли;

КонецПроцедуры;

Для табличных частей обращение идёт к колонке: Элементы.ТоварыЦена.ТолькоПросмотр = Истина;. Учтите, что изменение свойств элементов формы в клиентских процедурах работает только с клиентскими свойствами — «ТолькоПросмотр», «Доступность» и «Видимость» к ним относятся, поэтому код можно размещать и на клиенте.

Если условие зависит от данных, доступных только на сервере (например, от роли текущего пользователя), выполняйте проверку в серверной процедуре «ПриСозданииНаСервере» и там же устанавливайте свойства элементов.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Не РольДоступна("ПолныеПрава") Тогда
        Элементы.Организация.ТолькоПросмотр = Истина;
    КонецЕсли;
КонецПроцедуры

Способ 3. Запрет на уровне прав доступа

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

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

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

Способ 4. Расширение конфигурации для типовых решений

Если конфигурация находится на полной поддержке и снимать её с поддержки нельзя, изменения вносятся через расширение. В конфигураторе создайте новое расширение, добавьте в него нужную форму типового объекта и измените свойства заимствованного элемента — свойство «Только просмотр» доступно для изменения в расширении.

Альтернатива внутри расширения — программная установка свойств через заимствованный обработчик «ПриСозданииНаСервере» с режимом «После». Такой подход гибче: логику можно сделать условной и не трогать саму форму.

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

Проверка результата и типичные ошибки

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

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

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

Редактирование в форме
Норма

Поле не принимает ввод, значение можно скопировать

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

Поле редактируется или форма не открывается

Запись объекта
Норма

Объект сохраняется, защищённое значение не меняется

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

Ошибка записи или значение изменилось

Групповое изменение реквизитов
Норма

Реквизит недоступен или изменение отклонено

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

Значение меняется в обход формы

Обмен данными
Норма

Синхронизация проходит без ошибок

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

Обмен падает с ошибкой проверки заполнения

Типичные ошибки
01
Установка «Только просмотр» вместо прав — пользователь меняет данные через обработку или другую форму
02
Проверка только под администратором — под полными правами ограничения не видны, ошибка всплывает у пользователей
03
Блокировка в подписке «ПриЗаписи» без исключений — ломается обмен данными и загрузка из внешних источников
04
Изменение типовой формы вместо расширения — при обновлении конфигурации доработка теряется или мешает обновлению
05
Скрытие поля вместо запрета редактирования — данные по-прежнему доступны и изменяемы

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

Чем «Только просмотр» отличается от «Доступность = Нет»?

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

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

Да, для колонок таблицы формы, связанной с динамическим списком, также устанавливается свойство «Только просмотр». Но надёжнее ограничивать саму возможность изменения через свойство списка «Только просмотр» или права на объект.

Как запретить редактирование поля только для части пользователей?

Проверьте роль пользователя в обработчике «ПриСозданииНаСервере» с помощью функции РольДоступна() и установите свойство элемента формы программно. Для полноценного запрета дополнительно настройте права в ролях.

Почему поле снова стало доступным после обновления конфигурации?

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

Можно ли заблокировать поле без конфигуратора?

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

Защищает ли скрытие поля данные от изменения?

Нет. Видимость влияет только на отображение. Значение скрытого реквизита можно изменить программно, через обработки и групповое изменение. Для реальной защиты используйте права доступа и проверки при записи.

Итог

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

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