Скрываем реквизит на форме 1С:Предприятия 8.3 — от настройки пользователя до расширения

· 10 мин

Содержание

Скрыть поле в 1С можно четырьмя способами. Без конфигуратора — через Ещё → Изменить форму прямо в режиме Предприятие. В конфигураторе — снять у элемента формы свойство Видимость. Для отдельных ролей — убрать право Просмотр на реквизит. Для типовой конфигурации без снятия с поддержки — сделать то же самое в расширении.

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

Какой способ скрытия выбрать: сравнение

Сначала определитесь с целью. Убрать лишнее с экрана и закрыть данные от чужих глаз — это разные задачи.

СпособГде делаетсяКого касаетсяНужен конфигураторЗащищает данные
Ещё → Изменить формуРежим ПредприятиеОдного пользователяНетНет
Свойство Видимость элементаКонфигураторВсехДаНет
Пользовательская видимость по ролямКонфигураторВыбранные ролиДаНет
Права на реквизит в ролиКонфигуратор, ролиВыбранные ролиДаДа
Расширение конфигурацииКонфигуратор, расширениеВсех или по условиюДаНет (если не менять права)
Код модуля формыКонфигураторПо любому условиюДаНет

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

Для типовых конфигураций (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) правьте форму через расширение или пользовательские настройки. Изменение основной конфигурации снимает её с поддержки, и каждое обновление превратится в ручное сравнение-объединение.

Скрываем поле в режиме Предприятие через «Изменить форму»

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

Пошагово

  1. Откройте форму, где мешает поле: документ, карточку справочника или список.
  2. В командной панели формы нажмите Ещё → Изменить форму....
  3. Откроется окно «Настройка формы». Слева — дерево элементов с флажками.
  4. Снимите флажок у ненужного поля. В правой части окна сразу видно результат.
  5. Нажмите ОК. Форма перерисуется без этого поля.

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

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

Если пользователь «насобирал» настроек и потерял нужное поле, верните исходную форму. В том же окне Изменить форму нажмите Ещё → Установить стандартные настройки. Все пользовательские изменения этой формы сбросятся.

Как раздать настройку другим пользователям

Пользовательская настройка хранится отдельно для каждого. Чтобы не настраивать форму руками у двадцати кладовщиков, в типовых конфигурациях на БСП есть обработка копирования настроек. В Бухгалтерии 3.0 и УТ 11 её ищите в разделе Администрирование → Настройки пользователей и прав, пункт «Настройки пользователей». Там можно скопировать внешний вид форм от одного пользователя другим или очистить настройки.

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

Настраиваем видимость поля в конфигураторе

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

Через свойство «Видимость»

  1. Запустите базу в режиме Конфигуратор, откройте Конфигурация → Открыть конфигурацию.
  2. Найдите объект в дереве метаданных: документ, справочник, обработку.
  3. Откройте вкладку «Формы» и дважды щёлкните нужную форму.
  4. В редакторе формы слева вверху — дерево «Элементы». Найдите поле. Удобно выделить поле на макете внизу: курсор в дереве встанет на нужный элемент.
  5. Снимите флажок слева от имени элемента в дереве. Это то же самое, что свойство Видимость в палитре свойств (Alt+Enter).
  6. Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7).

Элемент со снятой видимостью в дереве остаётся. Его по-прежнему можно включить из кода. Это лучше, чем удалять элемент: удалённое поле придётся заново добавлять из реквизитов и настраивать.

Через «Пользовательскую видимость» по ролям

У элемента формы есть ещё одно свойство — Пользовательская видимость. В палитре свойств оно открывается отдельным окном: там задаётся общая видимость и значения для отдельных ролей.

Например, оставьте общую видимость включённой, а для роли кладовщика снимите флажок. Кладовщик поле не увидит, но сможет включить его через Изменить форму. Это мягкий вариант: поле убрано по умолчанию, но не запрещено.

СвойствоЧто делаетМожет ли пользователь вернуть
Видимость = ЛожьПоле скрыто у всехНет
Пользовательская видимость снятаПоле скрыто по умолчаниюДа, через Изменить форму

Обычные формы (толстый клиент)

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

Закрываем реквизит правами доступа: роли и РЛС

Когда задача — не «убрать с экрана», а «не дать увидеть значение», работают только права.

Права на отдельный реквизит

  1. В конфигураторе откройте Общие → Роли и выберите роль, которую получает нужная группа пользователей.
  2. В левой части редактора прав разверните объект, например документ.
  3. Внутри объекта раскройте ветку реквизитов и выделите нужный.
  4. Справа снимите право Просмотр. Для запрета только изменения — снимите Редактирование, оставив Просмотр.
  5. Сохраните и обновите конфигурацию базы.

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

У пользователя может быть несколько ролей. Права в 1С складываются: если хотя бы одна роль даёт Просмотр реквизита, поле будет видно. Проверьте все роли пользователя, а не одну.

Что такое РЛС и почему она скрывает не поля

РЛС (ограничение доступа на уровне записей) фильтрует строки, а не колонки. С её помощью менеджер видит только документы своей организации или своего склада. Скрыть конкретное поле РЛС не может.

Поэтому схема такая:

  • 🔒 закрыть поле для роли — права на реквизит;
  • 📂 закрыть часть документов или элементов справочника — РЛС;
  • 👁 просто убрать поле с экрана — видимость элемента.

В типовых конфигурациях на БСП роли настраивают через профили групп доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа. Готовые профили менять не дают — их копируют и правят копию. Но права на отдельный реквизит в профиле не настраиваются: для этого нужна своя роль, а значит, расширение или доработка конфигурации.

Функциональные опции

Ещё один штатный механизм — функциональные опции. Если реквизит привязан к опции, а опция выключена, поле пропадает со всех форм. Так в Бухгалтерии 3.0 исчезают, например, поля валютного учёта, если он не используется. Включаются такие опции в разделе Администрирование → Функциональность. Поэтому иногда «скрыть поле» в типовой можно, просто отключив ненужную функцию.

Скрываем поле типовой формы в расширении

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

Через свойство элемента

  1. В конфигураторе откройте Конфигурация → Расширения конфигурации.
  2. Добавьте новое расширение или откройте существующее.
  3. В дереве основной конфигурации найдите форму объекта. Правой кнопкой — Добавить в расширение.
  4. Откройте заимствованную форму в расширении, найдите элемент и снимите флажок видимости.
  5. Обновите конфигурацию базы данных расширения.

Через код в расширении

Если поле надо скрывать по условию, добавьте обработчик в модуль заимствованной формы:

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)

    Если Не РольДоступна("ПолныеПрава") Тогда
        Элементы.Комментарий.Видимость = Ложь;
    КонецЕсли;

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

Аннотация &После выполняет ваш код после типового обработчика. Типовая форма может сама включить видимость в своём коде — ваш код отработает позже и скроет поле окончательно.

Имя элемента (Комментарий в примере) берите из дерева элементов формы, а не из синонима реквизита. Они часто различаются: реквизит Ответственный, а элемент на форме — ОтветственныйПредставление или что-то похожее.

Готовое расширение можно сохранить в файл .cfe и загрузить в другую базу через Администрирование → Печатные формы, отчёты и обработки → Расширения в режиме Предприятие. Тогда в рабочую базу не нужно заходить конфигуратором.

Управляем видимостью поля из кода формы

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

Базовая конструкция

Элементы.ИмяЭлемента.Видимость = Ложь;

Так же скрываются группы (Элементы.ГруппаДополнительно.Видимость = Ложь) и колонки табличной части (Элементы.ТоварыЦена.Видимость = Ложь). Скрыли группу — скрылись все вложенные поля.

Видимость по значению другого поля

Частая задача: показывать поле «Договор» только при определённом виде операции. Логику выносят в одну процедуру и вызывают из двух мест — при открытии и при изменении поля-условия.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    УстановитьВидимость();
КонецПроцедуры

&НаКлиенте
Процедура ВидОперацииПриИзменении(Элемент)
    УстановитьВидимость();
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьЭлементов(Элементы, ВидОперации)
    Элементы.Договор.Видимость = (ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОпераций.Поставка"));
КонецПроцедуры

&НаКлиентеНаСервере
Процедура УстановитьВидимость()
    УстановитьВидимостьЭлементов(Элементы, Объект.ВидОперации);
КонецПроцедуры

Имена перечисления и его значения в примере условные — подставьте свои. Если вызывать установку только из ПриСозданииНаСервере, поле не будет реагировать на изменение вида операции до повторного открытия формы.

Скрытое поле и проверка заполнения

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

Решение — в модуле объекта в обработчике ОбработкаПроверкиЗаполнения убрать реквизит из проверяемых, когда он не нужен:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если ВидОперации <> Перечисления.ВидыОпераций.Поставка Тогда
        Индекс = ПроверяемыеРеквизиты.Найти("Договор");
        Если Индекс <> Неопределено Тогда
            ПроверяемыеРеквизиты.Удалить(Индекс);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

ПроверяемыеРеквизиты — массив, поэтому сначала ищем индекс, потом удаляем. Удалять по значению напрямую нельзя.

Поле пропало, а никто не скрывал: как найти причину

Обратная задача встречается не реже. Пользователь звонит: «Вчера было поле, сегодня нет». Идите от простого к сложному.

Диагностика: выберите симптом

Поиск в конфигураторе

  • 🔎 Глобальный поиск Правка → Глобальный поиск (Ctrl+Shift+F): ищите имя элемента или .Видимость по всей конфигурации и расширениям.
  • 🧩 Список расширений Конфигурация → Расширения конфигурации: проверьте, нет ли там заимствованной формы этого объекта.
  • 🐞 Отладка: поставьте точку останова в ПриСозданииНаСервере формы и пройдите код по шагам. Так видно, в какой строке поле прячется.

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

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

Можно ли скрыть поле в 1С без конфигуратора?
Да. В режиме Предприятие нажмите Ещё → Изменить форму и снимите флажок у поля. Настройка действует только для вашего пользователя и для этой формы.
Чем скрытие поля отличается от запрета на просмотр?
Скрытое поле убрано только с конкретной формы. Значение остаётся доступным в отчётах и списках. Запрет права Просмотр на реквизит в роли закрывает значение по всей программе.
Как скрыть колонку в табличной части документа?
Так же, как поле: через Изменить форму в Предприятии, свойство Видимость колонки в конфигураторе или кодом Элементы.ТоварыЦена.Видимость = Ложь.
Слетит ли скрытие поля после обновления типовой конфигурации?
Пользовательские настройки обычно сохраняются, но если форма в новом релизе сильно изменилась, их сбрасывают. Изменения в расширении переживают обновление, но расширение стоит проверить после каждого релиза.
Почему поле не скрывается, хотя я снял видимость в расширении?
Типовая форма может включать видимость своим кодом при открытии. Добавьте в расширение обработчик с аннотацией &После("ПриСозданииНаСервере") и скройте поле там.