Как вынести стандартную команду из меню «Еще» на командную панель в управляемых формах 1С?

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

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

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

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

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

Способ 2. Настройка расположения команд пользователем в режиме «1С:Предприятие»

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

Рассмотрим, как пользователь может настроить панель самостоятельно:

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

Почему нельзя обратиться к стандартным кнопкам программно: разбор ошибки

Иногда разработчики пытаются изменить видимость или положение стандартной кнопки в процедуре ПриСозданииНаСервере кодом следующего вида:


// Ошибочный подход:
Элементы.ТабличнаяЧасть.КоманднаяПанель.ПодчиненныеЭлементы.СтандартнаяКоманда.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели;

Проанализируем причину, по которой этот код вызовет исключение «Поле объекта не обнаружено». Если у панели таблицы свойство Автозаполнение установлено в значение Истина, платформа не создает элементы кнопок на сервере заранее. Стандартный состав команд генерируется динамически на стороне клиента при отрисовке интерфейса. Поэтому в коллекции ПодчиненныеЭлементы этих кнопок физически не существует в момент выполнения серверных процедур.

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

Особенности работы с типами «СписокЗначений» и «ТаблицаЗначений»

Важно различать тип данных, с которым связана таблица на форме:

  1. Если реквизит формы имеет тип СписокЗначений, платформа автоматически предоставляет для него стандартные команды УстановитьФлажки и СнятьФлажки. Их достаточно перетащить на панель, как описано в первом способе.
  2. Если используется ТаблицаЗначений с произвольной колонкой флажка (булево), у платформы нет встроенных стандартных команд для массового выделения строк. В этом случае попытка найти готовую команду не увенчается успехом. Потребуется добавить собственную команду формы и обработать строки кодом:

&НаКлиенте
Процедура УстановитьВсеПометки(Команда)
    Для Каждого Стр Из ТаблицаЗначений Цикл
        Стр.Пометка = Истина;
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура СнятьВсеПометки(Команда)
    Для Каждого Стр Из ТаблицаЗначений Цикл
        Стр.Пометка = Ложь;
    КонецЦикла;
КонецПроцедуры

Созданные команды выносим в командную панель или в контекстное меню таблицы для быстрого доступа.

Альтернативные способы быстрого вызова команд

Если панель уже перегружена элементами, рассмотрим альтернативные варианты оптимизации работы пользователя:

  1. Стандартные горячие клавиши: поиск по текущей колонке активизируется стандартным сочетанием Ctrl + F, а сброс поиска — комбинацией Ctrl + Q. Дополнительные кнопки на панели для этого не требуются.
  2. Контекстное меню: размещение команд в группе КонтекстноеМеню таблицы позволяет вызывать их по правому клику мыши непосредственно в строке, без необходимости перемещать курсор к верхней панели.
  3. Отключение автозаполнения панели: у командной панели таблицы можно снять свойство Автозаполнение и добавить вручную только минимально необходимый набор команд. Это предотвратит вытеснение нужных кнопок в подменю «Еще».
← На главную