Как убрать кнопку "Еще" на командной панели формы в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

  1. Когда на командной панели не хватает места для отображения всех доступных кнопок.
  2. Когда некоторые команды целенаправленно помещены в это дополнительное подменю.

Таким образом, наша задача сводится не к тому, чтобы скрыть одну кнопку, а к тому, чтобы управлять составом и размещением команд так, чтобы у платформы не было причин ее показывать. Рассмотрим несколько подходов для решения этой задачи.

Решение 1: Отключение автозаполнения командной панели

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

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

Разберем по шагам, как это сделать:

  1. Откройте нужную форму в Конфигураторе.
  2. В дереве элементов формы найдите и выделите командную панель. Чаще всего она называется ФормаКоманднаяПанель.
  3. В палитре свойств этого элемента найдите свойство "Автозаполнение" (AutoFill) и установите его значение в "Нет".
  4. После этого вы увидите, что командная панель на макете формы стала пустой. Все стандартные кнопки исчезли.
  5. Теперь необходимо вручную добавить нужные команды. В левой верхней части окна редактора формы перейдите на вкладку "Команды". Здесь вы найдете все доступные команды, включая стандартные (например, "Провести", "Записать", "Закрыть") и те, что вы создали сами.
  6. Просто перетащите необходимые команды мышью из вкладки "Команды" на вашу опустевшую командную панель в дереве элементов.

Преимущество этого подхода — полный и предсказуемый контроль. На панели будут только те кнопки, которые вы добавили. Если они все помещаются на экране по ширине, кнопка "Еще" не появится.

Недостаток — это требует ручной работы. Если команд много, придется потратить время на их добавление. Кроме того, новые глобальные команды или команды, добавленные в расширениях, не появятся на панели автоматически.

Решение 2: Гибкое управление составом команд

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

Программное скрытие ненужных команд

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

Посмотрим на пример: предположим, нам нужно скрыть стандартную команду "Скопировать". Это делается в серверной процедуре-обработчике события ПриСозданииНаСервере.


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

Скрыв таким образом все команды, которые не помещаются на панель и вызывают появление меню "Еще", можно добиться его исчезновения.

Использование свойства "ТолькоВоВсехДействиях"

У каждой кнопки формы есть очень полезное свойство — "ТолькоВоВсехДействиях" (OnlyInAllActions). Оно напрямую управляет тем, где будет отображаться кнопка.

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

Программное перемещение команд в меню "Еще"

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

Проанализируем ситуацию: есть кнопка "ЗакрытьЗаявку", которая по умолчанию видна на панели. Мы хотим переместить ее в меню "Еще", чтобы избежать случайных нажатий.


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

    // Сначала скрываем исходную кнопку, которая автоматически попала на панель
    Элементы.ЗакрытьЗаявку.Видимость = Ложь;
    
    // Затем создаем новый элемент формы типа "Кнопка"
    // и размещаем его на командной панели
    НовыйЭлемент = Элементы.Добавить("КнопкаЗакрытьЗаявкуВПодменю", 
                                  Тип("КнопкаФормы"), 
                                  Элементы.ФормаКоманднаяПанель);
                                  
    // Связываем новую кнопку с уже существующей командой "ЗакрытьЗаявку"
    НовыйЭлемент.ИмяКоманды = "ЗакрытьЗаявку";
    
    // Это ключевой момент: указываем, что кнопку нужно поместить в дополнительное подменю
    НовыйЭлемент.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;
    
    // Убедимся, что наша новая кнопка видима
    НовыйЭлемент.Видимость = Истина;
    
КонецПроцедуры

Этот код эффективно перемещает команду `ЗакрытьЗаявку` с основной панели в меню "Еще", решая поставленную задачу.

Решение 3: Редактирование состава стандартных команд формы

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

  1. Откройте форму в Конфигураторе.
  2. Выделите самый верхний элемент в дереве — саму Форму.
  3. В палитре свойств найдите группу "Состав команд" (CommandComposition).
  4. Нажмите на кнопку с тремя точками, чтобы открыть окно настройки.
  5. В этом окне вы увидите список всех стандартных команд. Снимите флажки видимости у тех команд, которые вы хотите убрать с этой формы.

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

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

← На главную