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

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

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

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

Активность поля в 1С определяется двумя свойствами: «Доступность» и «Только просмотр». Если поле недоступно (серое, не реагирует на клик), причина почти всегда в том, что одно из этих свойств установлено в значение «Ложь» или «Истина» соответственно — либо в конфигураторе, либо программно в коде формы.

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

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

Как активировать поле через конфигуратор

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

В палитре свойств (правый клик по элементу → «Свойства») найдите два параметра. Свойство «Доступность» должно быть установлено в «Истина» — тогда элемент отвечает на действия пользователя. Свойство «Только просмотр» должно быть «Ложь» — тогда данные в поле можно изменять. Если «Доступность» = Ложь, поле становится серым и некликабельным; если «Только просмотр» = Истина, поле выглядит активным, но редактирование заблокировано.

Проверьте также родительские элементы. Если поле находится внутри группы или на странице, у которой «Доступность» = Ложь, то и само поле будет неактивно независимо от собственных настроек. Поднимайтесь по дереву элементов формы вверх и убедитесь, что ни у одного родителя доступность не отключена.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигурацию в режиме Конфигуратор и найдите нужную форму объекта
  2. 2
    Выделите неактивное поле и откройте палитру свойств
  3. 3
    Установите Доступность = Истина и ТолькоПросмотр = Ложь
  4. 4
    Проверьте эти же свойства у всех родительских групп и страниц
  5. 5
    Обновите конфигурацию базы данных (F7) и проверьте результат в режиме Предприятие

Как управлять активностью поля программно

В типовых и самописных конфигурациях доступность полей чаще всего управляется кодом. Для этого в модуле формы обращаются к элементу по имени и меняют свойство.

bsl
&НаКлиенте
Процедура УстановитьДоступностьПоля()
    Элементы.Комментарий.Доступность = Истина;
    Элементы.Комментарий.ТолькоПросмотр = Ложь;
КонецПроцедуры

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

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

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

Почему поле неактивно у пользователя в рабочей базе

Если вы работаете в режиме «Предприятие» и поле недоступно, причин несколько, и не все решаются настройкой формы. Первая группа причин — логика конфигурации: поле блокируется кодом по условиям (статус документа, заполненность других реквизитов, проведённость). Например, в проведённом документе часть полей намеренно недоступна до отмены проведения.

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

Третья группа — права доступа. Если у пользователя нет права «Изменение» на объект или на конкретный реквизит (настраивается в ролях), поле будет доступно только для просмотра. Это проверяется под другим пользователем с полными правами: если у него поле активно — проблема в ролях, и решать её нужно через администратора, а не через доработку формы.

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

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

Поле неактивно только у части пользователейПроверьте роли и права доступа — проблема в ограничении прав, а не в форме
Поле неактивно у всех и всегдаОткройте форму в конфигураторе и проверьте свойства Доступность и ТолькоПросмотр у поля и его родительских групп
Поле активируется после изменения другого реквизитаЭто штатная логика формы; проверьте код обработчиков ПриИзменении, если поведение неверное
Поле неактивно в проведённом документеОтмените проведение документа — это стандартное поведение большинства конфигураций

Управление доступностью в динамических списках и таблицах

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

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

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

Типичные ошибки
01
Меняют свойство у поля, но не проверяют родительскую группу — доступность группы переопределяет настройку поля
02
Путают Доступность и ТолькоПросмотр: при ТолькоПросмотр = Истина поле выглядит активным, но редактировать его нельзя
03
Код управления доступностью размещён только в обработчике изменения — при открытии формы состояние поля неверное
04
Пытаются активировать поле доработкой формы, когда причина в правах доступа — после обновления конфигурации доработка может конфликтовать с типовой логикой
05
Забывают обновить конфигурацию базы данных после изменений — в режиме Предприятие изменения не видны

Проверка результата и ограничения

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

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

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

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

Состояние поля при открытии формы
Норма

Поле сразу активно и доступно для ввода

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

Поле серое или активируется только после действий пользователя

Поведение при смене условий
Норма

Доступность переключается в обе стороны корректно

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

Поле активируется, но не блокируется обратно

Под пользователем с ограниченными правами
Норма

Поле доступно согласно настроенным ролям

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

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

Учтите ограничение: доработка типовой формы напрямую усложняет обновление конфигурации. Если конфигурация на поддержке, корректнее использовать расширение конфигурации или механизм «Изменение форм» в режиме «Все функции» → не изменяя типовой код. Перед любыми изменениями в рабочей базе сделайте резервную копию.

FAQ

Поле активно, но ввести данные не получается. В чём причина?

Скорее всего, у поля установлено свойство «Только просмотр» = Истина — внешне оно выглядит обычным, но редактирование заблокировано. Также проверьте, не запрещено ли изменение на уровне прав доступа к реквизиту.

Как сделать поле активным только при определённом условии?

В модуле формы напишите процедуру, которая устанавливает Элементы.ИмяПоля.Доступность в зависимости от условия, и вызывайте её из обработчика «ПриИзменении» управляющего поля и при создании формы на сервере.

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

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

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

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

Поле неактивно только в проведённом документе. Это ошибка?

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

Как заблокировать или активировать поле только в некоторых строках таблицы?

Используйте условное оформление формы: создайте элемент оформления со свойством «Только просмотр» и задайте отбор по условию на данные строки. Программно это делается через коллекцию УсловноеОформление формы.