Скрываем реквизит на форме 1С:Предприятия 8.3 — от настройки пользователя до расширения
Содержание
Скрыть поле в 1С можно четырьмя способами. Без конфигуратора — через Ещё → Изменить форму прямо в режиме Предприятие. В конфигураторе — снять у элемента формы свойство Видимость. Для отдельных ролей — убрать право Просмотр на реквизит. Для типовой конфигурации без снятия с поддержки — сделать то же самое в расширении.
Типичная ситуация: главбух просит убрать из формы документа поле «Комментарий», чтобы кладовщики туда не писали. Или у менеджеров в карточке номенклатуры висят пять полей, которыми никто не пользуется. Способ зависит от того, кому и насколько надёжно нужно спрятать поле: одному человеку, всем пользователям или «чтобы никто не увидел значение».
Какой способ скрытия выбрать: сравнение
Сначала определитесь с целью. Убрать лишнее с экрана и закрыть данные от чужих глаз — это разные задачи.
| Способ | Где делается | Кого касается | Нужен конфигуратор | Защищает данные |
|---|---|---|---|---|
Ещё → Изменить форму | Режим Предприятие | Одного пользователя | Нет | Нет |
Свойство Видимость элемента | Конфигуратор | Всех | Да | Нет |
Пользовательская видимость по ролям | Конфигуратор | Выбранные роли | Да | Нет |
| Права на реквизит в роли | Конфигуратор, роли | Выбранные роли | Да | Да |
| Расширение конфигурации | Конфигуратор, расширение | Всех или по условию | Да | Нет (если не менять права) |
| Код модуля формы | Конфигуратор | По любому условию | Да | Нет |
Скрытое на форме поле не защищает данные. Значение реквизита остаётся в базе. Его видно в отчётах, в списках, через Все функции, в выгрузках. Если сотрудник не должен знать значение — нужны права, а не видимость.
Для типовых конфигураций (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) правьте форму через расширение или пользовательские настройки. Изменение основной конфигурации снимает её с поддержки, и каждое обновление превратится в ручное сравнение-объединение.
Скрываем поле в режиме Предприятие через «Изменить форму»
Это самый быстрый способ. Он не требует прав разработчика и не трогает конфигурацию. Настройка сохраняется для текущего пользователя и для конкретной формы.
Пошагово
- Откройте форму, где мешает поле: документ, карточку справочника или список.
- В командной панели формы нажмите
Ещё → Изменить форму.... - Откроется окно «Настройка формы». Слева — дерево элементов с флажками.
- Снимите флажок у ненужного поля. В правой части окна сразу видно результат.
- Нажмите
ОК. Форма перерисуется без этого поля.
Флажок можно снимать не только у полей, но и у групп. Скрыли группу — скрылось всё, что в неё вложено. Так удобно убрать целую вкладку или блок «Дополнительно».
Как вернуть стандартный вид
Если пользователь «насобирал» настроек и потерял нужное поле, верните исходную форму. В том же окне Изменить форму нажмите Ещё → Установить стандартные настройки. Все пользовательские изменения этой формы сбросятся.
Как раздать настройку другим пользователям
Пользовательская настройка хранится отдельно для каждого. Чтобы не настраивать форму руками у двадцати кладовщиков, в типовых конфигурациях на БСП есть обработка копирования настроек. В Бухгалтерии 3.0 и УТ 11 её ищите в разделе Администрирование → Настройки пользователей и прав, пункт «Настройки пользователей». Там можно скопировать внешний вид форм от одного пользователя другим или очистить настройки.
Пользовательская настройка — не запрет. Любой сотрудник может открыть Изменить форму и вернуть флажок. Для обязательных ограничений используйте права или конфигуратор.
Настраиваем видимость поля в конфигураторе
Если поле должно исчезнуть у всех пользователей, меняйте саму форму в конфигураторе. Для своей (нетиповой) конфигурации или конфигурации, снятой с поддержки, это основной путь.
Через свойство «Видимость»
- Запустите базу в режиме
Конфигуратор, откройтеКонфигурация → Открыть конфигурацию. - Найдите объект в дереве метаданных: документ, справочник, обработку.
- Откройте вкладку «Формы» и дважды щёлкните нужную форму.
- В редакторе формы слева вверху — дерево «Элементы». Найдите поле. Удобно выделить поле на макете внизу: курсор в дереве встанет на нужный элемент.
- Снимите флажок слева от имени элемента в дереве. Это то же самое, что свойство
Видимостьв палитре свойств (Alt+Enter). - Сохраните конфигурацию и выполните
Конфигурация → Обновить конфигурацию базы данных(F7).
Элемент со снятой видимостью в дереве остаётся. Его по-прежнему можно включить из кода. Это лучше, чем удалять элемент: удалённое поле придётся заново добавлять из реквизитов и настраивать.
Через «Пользовательскую видимость» по ролям
У элемента формы есть ещё одно свойство — Пользовательская видимость. В палитре свойств оно открывается отдельным окном: там задаётся общая видимость и значения для отдельных ролей.
Например, оставьте общую видимость включённой, а для роли кладовщика снимите флажок. Кладовщик поле не увидит, но сможет включить его через Изменить форму. Это мягкий вариант: поле убрано по умолчанию, но не запрещено.
| Свойство | Что делает | Может ли пользователь вернуть |
|---|---|---|
Видимость = Ложь | Поле скрыто у всех | Нет |
Пользовательская видимость снята | Поле скрыто по умолчанию | Да, через Изменить форму |
Обычные формы (толстый клиент)
В старых конфигурациях на обычных формах свойство тоже называется Видимость. Его ставят в палитре свойств элемента формы. Пользовательской настройки «Изменить форму» у обычных форм нет: там всё решает конфигуратор или код.
Закрываем реквизит правами доступа: роли и РЛС
Когда задача — не «убрать с экрана», а «не дать увидеть значение», работают только права.
Права на отдельный реквизит
- В конфигураторе откройте
Общие → Ролии выберите роль, которую получает нужная группа пользователей. - В левой части редактора прав разверните объект, например документ.
- Внутри объекта раскройте ветку реквизитов и выделите нужный.
- Справа снимите право
Просмотр. Для запрета только изменения — снимитеРедактирование, оставивПросмотр. - Сохраните и обновите конфигурацию базы.
Платформа сама убирает с управляемой формы поле, на реквизит которого у пользователя нет права просмотра. Ничего в форме дорабатывать не нужно. Значение не придёт и в отчёты на СКД, если они читают этот реквизит в рамках прав пользователя.
У пользователя может быть несколько ролей. Права в 1С складываются: если хотя бы одна роль даёт Просмотр реквизита, поле будет видно. Проверьте все роли пользователя, а не одну.
Что такое РЛС и почему она скрывает не поля
РЛС (ограничение доступа на уровне записей) фильтрует строки, а не колонки. С её помощью менеджер видит только документы своей организации или своего склада. Скрыть конкретное поле РЛС не может.
Поэтому схема такая:
- 🔒 закрыть поле для роли — права на реквизит;
- 📂 закрыть часть документов или элементов справочника — РЛС;
- 👁 просто убрать поле с экрана — видимость элемента.
В типовых конфигурациях на БСП роли настраивают через профили групп доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа. Готовые профили менять не дают — их копируют и правят копию. Но права на отдельный реквизит в профиле не настраиваются: для этого нужна своя роль, а значит, расширение или доработка конфигурации.
Функциональные опции
Ещё один штатный механизм — функциональные опции. Если реквизит привязан к опции, а опция выключена, поле пропадает со всех форм. Так в Бухгалтерии 3.0 исчезают, например, поля валютного учёта, если он не используется. Включаются такие опции в разделе Администрирование → Функциональность. Поэтому иногда «скрыть поле» в типовой можно, просто отключив ненужную функцию.
Скрываем поле типовой формы в расширении
Расширение — правильный способ изменить типовую форму, не снимая конфигурацию с поддержки. Расширения есть в платформе начиная с 8.3.6.
Через свойство элемента
- В конфигураторе откройте
Конфигурация → Расширения конфигурации. - Добавьте новое расширение или откройте существующее.
- В дереве основной конфигурации найдите форму объекта. Правой кнопкой —
Добавить в расширение. - Откройте заимствованную форму в расширении, найдите элемент и снимите флажок видимости.
- Обновите конфигурацию базы данных расширения.
Через код в расширении
Если поле надо скрывать по условию, добавьте обработчик в модуль заимствованной формы:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Не РольДоступна("ПолныеПрава") Тогда
Элементы.Комментарий.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Аннотация &После выполняет ваш код после типового обработчика. Типовая форма может сама включить видимость в своём коде — ваш код отработает позже и скроет поле окончательно.
Имя элемента (Комментарий в примере) берите из дерева элементов формы, а не из синонима реквизита. Они часто различаются: реквизит Ответственный, а элемент на форме — ОтветственныйПредставление или что-то похожее.
Готовое расширение можно сохранить в файл .cfe и загрузить в другую базу через Администрирование → Печатные формы, отчёты и обработки → Расширения в режиме Предприятие. Тогда в рабочую базу не нужно заходить конфигуратором.
Управляем видимостью поля из кода формы
Программное скрытие нужно, когда видимость зависит от данных: вида операции, флажка, организации, роли.
Базовая конструкция
Элементы.ИмяЭлемента.Видимость = Ложь;
Так же скрываются группы (Элементы.ГруппаДополнительно.Видимость = Ложь) и колонки табличной части (Элементы.ТоварыЦена.Видимость = Ложь). Скрыли группу — скрылись все вложенные поля.
Видимость по значению другого поля
Частая задача: показывать поле «Договор» только при определённом виде операции. Логику выносят в одну процедуру и вызывают из двух мест — при открытии и при изменении поля-условия.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьВидимость();
КонецПроцедуры
&НаКлиенте
Процедура ВидОперацииПриИзменении(Элемент)
УстановитьВидимость();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьЭлементов(Элементы, ВидОперации)
Элементы.Договор.Видимость = (ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОпераций.Поставка"));
КонецПроцедуры
&НаКлиентеНаСервере
Процедура УстановитьВидимость()
УстановитьВидимостьЭлементов(Элементы, Объект.ВидОперации);
КонецПроцедуры
Имена перечисления и его значения в примере условные — подставьте свои. Если вызывать установку только из ПриСозданииНаСервере, поле не будет реагировать на изменение вида операции до повторного открытия формы.
Скрытое поле и проверка заполнения
Есть неочевидная ловушка. Если у реквизита в метаданных стоит Проверка заполнения: Выдавать ошибку, проверка сработает и для скрытого поля. Пользователь увидит «Поле не заполнено» по реквизиту, которого нет на экране.
Решение — в модуле объекта в обработчике ОбработкаПроверкиЗаполнения убрать реквизит из проверяемых, когда он не нужен:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ВидОперации <> Перечисления.ВидыОпераций.Поставка Тогда
Индекс = ПроверяемыеРеквизиты.Найти("Договор");
Если Индекс <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Индекс);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПроверяемыеРеквизиты — массив, поэтому сначала ищем индекс, потом удаляем. Удалять по значению напрямую нельзя.
Поле пропало, а никто не скрывал: как найти причину
Обратная задача встречается не реже. Пользователь звонит: «Вчера было поле, сегодня нет». Идите от простого к сложному.
Ещё → Изменить форму и найдите поле со снятым флажком или сбросьте форму через Ещё → Установить стандартные настройки.Администрирование → Функциональность: в новом релизе поле могло привязаться к функциональной опции. Затем проверьте подключённые расширения — заимствованная форма могла устареть.ПриИзменении. Ищите в модуле формы строки с .Видимость.Видимость или его скрывает код ПриСозданииНаСервере, в том числе в расширении.Поиск в конфигураторе
- 🔎 Глобальный поиск
Правка → Глобальный поиск(Ctrl+Shift+F): ищите имя элемента или.Видимостьпо всей конфигурации и расширениям. - 🧩 Список расширений
Конфигурация → Расширения конфигурации: проверьте, нет ли там заимствованной формы этого объекта. - 🐞 Отладка: поставьте точку останова в
ПриСозданииНаСервереформы и пройдите код по шагам. Так видно, в какой строке поле прячется.
Если в режиме Предприятие поле не появляется в списке Изменить форму или не включается флажком, его скрывает не настройка пользователя. Ищите причину в правах, опциях или коде.
Частые вопросы
Можно ли скрыть поле в 1С без конфигуратора?
Ещё → Изменить форму и снимите флажок у поля. Настройка действует только для вашего пользователя и для этой формы.Чем скрытие поля отличается от запрета на просмотр?
Просмотр на реквизит в роли закрывает значение по всей программе.Как скрыть колонку в табличной части документа?
Изменить форму в Предприятии, свойство Видимость колонки в конфигураторе или кодом Элементы.ТоварыЦена.Видимость = Ложь.Слетит ли скрытие поля после обновления типовой конфигурации?
Почему поле не скрывается, хотя я снял видимость в расширении?
&После("ПриСозданииНаСервере") и скройте поле там.