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

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

Как убрать стандартные команды из формы в 1С

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

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

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

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

Что такое стандартные команды и где они отображаются

При создании формы объекта (документа, справочника, регистра) платформа автоматически формирует состав команд, исходя из типа объекта. Для документа это команды записи, проведения, печати, создания на основании; для справочника — запись, копирование, пометка на удаление; для регистра — установка отборов и интервалов дат.

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

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

Способ 1: отключение автозаполнения командной панели

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

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

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

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

Способ 2: удаление отдельных стандартных команд

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

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

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

Способ 3: программное управление видимостью

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.ФормаСкопировать.Видимость = Ложь;

Элементы.ФормаПровестиИЗакрыть.Видимость = Ложь;

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

Имена элементов стандартных команд обычно формируются по шаблону «Форма» + имя команды: «ФормаЗаписать», «ФормаПровести», «ФормаСкопировать», «ФормаУдалить». Точное имя посмотрите в дереве элементов формы в конфигураторе.

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

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

Способ 4: ограничение через роли и права

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

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

Для тонкой настройки используйте RLS (ограничение доступа на уровне записей) — например, запретить изменение документов чужих подразделений. Учтите, что RLS влияет на производительность запросов, поэтому шаблоны ограничений нужно проверять на реальных объёмах данных.

Сравнение способов

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

Полный контроль над панелью; подходит для форм с минимальным интерфейсом. Минус — новые стандартные команды не появятся автоматически

Удаление отдельных кнопок

Быстро и наглядно в конфигураторе; риск возврата кнопки при включённом автозаполнении

Программное управление

Гибкие условия по пользователю и состоянию объекта; требует поддержки кода при обновлениях

Роли и права

Реальный запрет действия везде, а не только в форме; настройка сложнее, влияет на всех пользователей роли

Особенности для формы списка и управляемого приложения

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

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

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

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

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

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

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

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

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

Лишних кнопок нет ни на панели, ни в меню «Ещё»

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

Команда видна в «Ещё» или появилась после перезапуска

Форма списка
Норма

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

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

В форме кнопки нет, а из списка действие выполняется

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

Под обычным пользователем действие заблокировано

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

Проверка выполнялась только под полными правами

Итог

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

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

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

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

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

Почему удалённая команда появляется снова после сохранения формы?

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

Как скрыть команду только для конкретных пользователей?

Два пути: настроить отдельную роль без права на интерактивное действие (платформа сама скроет команду) или в коде формы проверить роль пользователя через «ПользователиИнформационнойБазы» либо функцию «РольДоступна» и установить видимость элемента по условию.

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

Частично. Администратор может скрыть команды командного интерфейса через настройку панелей в режиме Предприятия («Все функции» — настройки навигации), а также через механизм расширений конфигурации, не затрагивая основную конфигурацию. Полноценное изменение формы объекта без конфигуратора или расширения невозможно.

Чем отличается «Видимость» от «Доступность» у кнопки?

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

Как убрать команду «Печать» из формы документа?

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