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

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

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

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

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

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

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

Способы скрытия поля: что выбрать

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

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

Способы скрытия поля

Свойство Видимость в конфигураторе

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

Программное скрытие (код)

Гибкие условия по данным объекта. Код выполняется на клиенте или сервере, нужно продумать обработчики.

Функциональная опция

Видимость зависит от настроек системы. Меняется без доработки кода, через параметры.

Права доступа (роли)

Реальное ограничение доступа к данным, а не только к отображению. Сложнее в настройке.

Настройка формы пользователем

Без изменения конфигурации, но действует только у конкретного пользователя и легко сбрасывается.

Скрытие поля в конфигураторе

Откройте конфигуратор, найдите нужный объект (документ, справочник), раскройте ветку «Формы» и откройте основную форму. В дереве элементов формы найдите нужное поле, откройте его свойства (правый клик — «Свойства» или Alt+Enter) и снимите флажок «Видимость».

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

Если поле относится к табличной части, найдите колонку внутри элемента таблицы и снимите видимость у колонки, а не у всей таблицы.

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

Программное скрытие через свойство Видимость

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

&НаКлиенте

Процедура УстановитьВидимостьПолей()

Элементы.Договор.Видимость = ЗначениеЗаполнено(Объект.Контрагент);

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

&НаКлиенте

Процедура КонтрагентПриИзменении(Элемент)

УстановитьВидимостьПолей();

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

Обращение к элементу формы выполняется через коллекцию Элементы по имени элемента формы, а не по имени реквизита. Если элемент не найден (например, переименован), код вызовет ошибку — поэтому после переименования элементов всегда проверяйте связанный код.

Для управляемых форм помните про разделение клиентского и серверного контекста. Устанавливать видимость можно и на клиенте — это не требует обращения к данным базы и работает быстрее, чем серверный вызов.

bsl
Элементы.ИмяПоля.Видимость = Ложь; // скрыть поле программно

Скрытие через функциональные опции

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

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

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

Скрытие поля без изменения конфигурации

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

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

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

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

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

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

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

Отображение поля на форме
Норма

Поля нет ни при создании, ни при открытии объекта

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

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

Поведение при изменении данных
Норма

При смене связанного реквизита видимость переключается корректно

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

Видимость не меняется до переоткрытия формы

Доступ к данным
Норма

Если нужна защита — реквизит закрыт правами, а не только скрыт

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

Поле скрыто, но значение видно в отчётах и списках

Итог

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

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

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

Как скрыть поле только для определённых пользователей?

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

Почему поле скрыто, но его значение видно в отчётах?

Свойство Видимость влияет только на отображение элемента на конкретной форме. Данные реквизита хранятся в базе и доступны запросам, отчётам и спискам. Чтобы закрыть доступ к данным, настройте права на реквизит в ролях.

Как программно скрыть колонку табличной части?

Обратитесь к элементу колонки через коллекцию Элементы по имени колонки: Элементы.ТоварыЦена.Видимость = Ложь. Имя элемента колонки смотрите в дереве элементов формы в конфигураторе — оно может отличаться от имени реквизита табличной части.

Поле скрывается при открытии, но появляется после изменения данных. Что делать?

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

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

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