Как объединить несколько команд в одну кнопку с выпадающим списком на форме 1С?

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

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

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

Пошаговое создание кнопки с выпадающим списком команд

Чтобы объединить несколько команд в одну кнопку со списком, мы будем использовать группы элементов формы с определенными видами. Этот подход позволяет настроить внешний вид и поведение интерфейса.

  1. Открытие формы в конфигураторе: Прежде всего, нам необходимо открыть нужную форму документа (или обработки), в которую мы хотим добавить нашу новую кнопку, в режиме конфигуратора. Для этого в дереве объектов конфигурации найдите требуемый документ или обработку, разверните его и дважды щелкните по элементу "Формы" и затем по нужной форме.

  2. Создание основной группы командной панели: Начнем с добавления контейнера для нашей кнопки. На панели элементов формы (обычно находится слева) найдите элемент "Группа" и перетащите его на форму в то место, где вы хотите разместить кнопку. После добавления группы нам нужно настроить её свойства:

    • В палитре свойств для новой группы найдите свойство "Вид".
    • Установите значение свойства "Вид" в Командная панель или Группа кнопок. Мы рекомендуем использовать Командная панель, так как это наиболее универсальный вариант для размещения команд.
    • Можно также задать "Имя" для этой группы, например, ГруппаКомандПечати, что поможет нам ориентироваться в структуре формы.
    • Эта группа будет служить нашим основным контейнером, но сама по себе она не станет выпадающим списком.

  3. Добавление группы "Подменю": Теперь, когда у нас есть контейнер, мы можем добавить в него элемент, который будет отвечать за выпадающий список. Внутрь только что созданной группы с видом Командная панель добавьте ещё одну группу. Для этой новой внутренней группы установите следующие свойства:

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

  4. Добавление команд в подменю: Это самый важный шаг. Внутрь нашей новой группы с видом Подменю необходимо добавить элементы типа "Кнопка" и привязать их к соответствующим командам. У нас есть несколько сценариев:

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

    • Если команды еще не созданы или их нужно привязать вручную:

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

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

Управление видимостью "лишних" кнопок: устраняем "фантомные" элементы

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

Для решения этой проблемы, последуем таким шагам:

  1. Переход на вкладку "Командный интерфейс": Откройте форму в конфигураторе. В нижней части окна формы найдите вкладку с названием "Командный интерфейс" (или "Элементы командного интерфейса"). Перейдите на неё.

  2. Поиск и снятие видимости команд: На этой вкладке вы увидите древовидную структуру, которая отображает все команды, доступные для данной формы, а также места их отображения (стандартные командные панели, разделы и т.д.).

    • Разверните все ветки дерева, особенно те, что связаны со стандартными группами или непосредственно с командами формы.
    • Найдите в этом списке те команды, которые отображаются в режиме "Предприятие" как "лишние" кнопки. Это могут быть команды, которые ранее были размещены на обычной командной панели формы, но теперь переехали в ваше подменю.
    • Для каждой такой "лишней" команды снимите флажок "Видимость". Это не удалит саму команду из конфигурации, но сделает её невидимой в пользовательском интерфейсе.
    • Мы можем также воспользоваться контекстным меню, нажав правой кнопкой мыши на команде, и выбрать пункт "Снять со всех панелей", если нам нужно гарантированно скрыть ее отовсюду, кроме нашего подменю.
  3. Проверка других мест размещения: Убедитесь, что вы не добавили эти команды также в "Командную панель формы" (стандартную, которая может быть вверху формы по умолчанию) или в какие-либо другие группы, которые могут быть настроены в командном интерфейсе.

  4. Очистка кэша (если проблема сохраняется): Иногда после значительных изменений в конфигурации, особенно касающихся интерфейса, клиентское приложение 1С может "помнить" старые настройки из своего кэша. Если после всех действий кнопки все равно видны, попробуйте следующее:

    • Полностью закройте 1С:Предприятие.
    • Очистите кэш пользователя 1С. Это можно сделать вручную, удалив папки кэша (обычно находятся в %LOCALAPPDATA%\1C\1Cv8 или %APPDATA%\1C\1Cv8) или запустив 1С в режиме предприятия с параметром командной строки /ClearCache (для этого нужно создать или отредактировать ярлык запуска информационной базы, добавив этот параметр).
    • Перезапустите 1С:Предприятие и проверьте результат.

Альтернативные подходы: Групповая печать документов

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

Групповая печать может быть полезной в следующих случаях:

Пример кода для вызова нескольких печатных форм из одной процедуры (псевдокод):


// В модуле объекта или специальной обработке
Процедура ГрупповаяПечать() Экспорт
    // Получаем текущий документ или список документов, для которых нужна печать
    ДокументОбъект = ЭтотОбъект; // Или получаем из параметров, если это обработка

    // Вызываем первую печатную форму
    МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма1");

    // Вызываем вторую печатную форму
    МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма2");

    // Вызываем третью печатную форму
    МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма3");

    // Мы можем добавить интерактивный выбор для пользователя:
    // ДиалогВыбораФорм = Новый Форма(Библиотека.ПолучитьФормуДляВыбораПечатныхФорм);
    // ДиалогВыбораФорм.ОткрытьМодально();
    // Если ДиалогВыбораФорм.ВыбраныФормы Тогда
    //     Для Каждого ФормаПечати Из ДиалогВыбораФорм.ВыбранныеФормы Цикл
    //         МодульМенеджераПечати.Печать(ДокументОбъект, ФормаПечати.ИмяМакета);
    //     КонецЦикла;
    // КонецЕсли;

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

Для создания такой команды в 1С:

  1. Создайте Общую команду в ветке "Общие" конфигурации.
  2. В модуле этой общей команды или в модуле менеджера объекта (если команда относится к документу) напишите код, который вызывает необходимые процедуры печати.
  3. Затем эту общую команду можно разместить на форме, в командной панели или в нашем подменю, как и любую другую команду.

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

Резюмируем

Мы рассмотрели детальный подход к объединению нескольких команд в одну кнопку со списком на управляемых формах 1С:Предприятие 8.3. Ключевыми шагами являются создание групп с видом Командная панель и Подменю, а также правильная привязка команд к кнопкам внутри подменю через свойство Имя команды. Мы также выяснили, как управлять видимостью элементов интерфейса на вкладке Командный интерфейс, чтобы избавиться от нежелательных "лишних" кнопок и обеспечить чистоту и функциональность пользовательского интерфейса.

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

← На главную