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