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