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

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

Как убрать стандартную команду с формы 1С

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

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

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

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

Откуда на форме берутся стандартные команды

Платформа автоматически формирует командный интерфейс формы на основе типа объекта и свойств формы. Для формы документа добавляются команды «Провести», «Провести и закрыть», «Отменить проведение», для формы справочника — «Записать», «Записать и закрыть», для динамических списков — «Создать», «Скопировать», «Удалить», «Установить пометку удаления» и другие.

Часть этих команд платформа размещает в командной панели формы, часть — в меню «Ещё». Разработчик не создаёт эти кнопки вручную: они появляются в дереве элементов формы со свойством «Командуемость», привязанным к стандартным командам глобального командного интерфейса или командной панели.

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

Способ 1. Отключение команды через командный интерфейс формы

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

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

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

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

Способ 2. Программное скрытие кнопки в модуле формы

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

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда
		Элементы.ФормаПровести.Видимость = Ложь;
		Элементы.ФормаПровестиИЗакрыть.Видимость = Ложь;
	КонецЕсли;
КонецПроцедуры

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

Конфигуратор или программный код

Командный интерфейс формы

Подходит, когда команду нужно убрать навсегда для всех. Не требует кода, легко поддерживается. Ограничение: нельзя задать условие видимости.

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

Подходит для условной видимости по ролям, статусам, режимам работы. Ограничение: требует кода, усложняет поддержку, выполняется при каждом открытии формы.

Ограничение прав доступа

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

Способ 3. Отключение свойств, порождающих команду

Некоторые стандартные команды появляются из-за свойств самой формы или её элементов, и правильнее отключить источник, а не скрывать кнопку. Типичный пример — команды «Добавить», «Скопировать», «Удалить» у таблицы формы: они генерируются, пока у таблицы включено свойство «ИзменятьСоставСтрок».

Установите у элемента таблицы свойство «ИзменятьСоставСтрок» в Ложь — и весь блок команд редактирования строк исчезнет из командной панели таблицы и из контекстного меню. Аналогично свойство «ТолькоПросмотр» у формы или элемента отключает команды изменения данных.

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

Как полностью запретить действие, а не только убрать кнопку

Скрытие команды — это интерфейсная мера. Если за ней стоит требование безопасности (например, менеджеры не должны отменять проведение документов), необходимо ограничить права на уровне ролей. Откройте роль пользователя в конфигураторе и снимите права «Интерактивное проведение», «Интерактивная отмена проведения», «Интерактивное удаление» или «Интерактивная пометка удаления» для нужного объекта.

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

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

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

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

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

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

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

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

Командная панель формы
Норма

Кнопки нет в панели

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

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

Меню «Ещё»
Норма

Команды нет в списке

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

Команда доступна через «Ещё»

Контекстное меню таблицы
Норма

Команд редактирования строк нет

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

«Добавить» и «Скопировать» доступны по правой кнопке

Проверка под ролью пользователя
Норма

Действие недоступно ни визуально, ни по правам

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

Под полными правами всё проверено, под рабочей ролью — нет

Часто задаваемые вопросы

Можно ли убрать стандартную команду без изменения конфигурации?

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

Почему команда снова появилась после обновления типовой конфигурации?

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

Как убрать команду «Скопировать» у списка, но оставить «Создать»?

Откройте командный интерфейс формы списка и снимите флажок видимости только у команды «Скопировать» — команды стандартного набора настраиваются независимо друг от друга. Дополнительно проверьте контекстное меню таблицы списка: там команда скрывается отдельным флажком.

Сработает ли скрытие кнопки «Провести», если документ проводится из другой формы?

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

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

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

Чем отличается удаление кнопки из дерева элементов от отключения команды?

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

Итог

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

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