Разработчикам на платформе 1С:Предприятие 8.3 часто приходится сталкиваться с необходимостью организации интерфейса формы таким образом, чтобы он был максимально удобен и интуитивно понятен для пользователя. Одной из таких задач является объединение нескольких схожих по смыслу команд в одну кнопку со списком выбора. Это особенно актуально для печатных форм, где для одного документа может существовать несколько вариантов печати.
В этой статье мы подробно рассмотрим, как решить эту задачу, используя инструмент, позволяющий добавить элементы на форму, создав кнопку с выпадающим списком для трех отдельных команд, формирующих печатную форму документа, и как избежать типичных проблем с видимостью элементов интерфейса — для этого подойдёт расширение для управления видимостью и доступностью реквизитов формы.
Чтобы объединить несколько команд в одну кнопку со списком, мы будем использовать группы элементов формы с определенными видами. Этот подход позволяет настроить внешний вид и поведение интерфейса.
Открытие формы в конфигураторе: Прежде всего, нам необходимо открыть нужную форму документа (или обработки), в которую мы хотим добавить нашу новую кнопку, в режиме конфигуратора. Для этого в дереве объектов конфигурации найдите требуемый документ или обработку, разверните его и дважды щелкните по элементу "Формы" и затем по нужной форме.
Создание основной группы командной панели: Начнем с добавления контейнера для нашей кнопки. На панели элементов формы (обычно находится слева) найдите элемент "Группа" и перетащите его на форму в то место, где вы хотите разместить кнопку. После добавления группы нам нужно настроить её свойства:
Командная панель или Группа кнопок. Мы рекомендуем использовать Командная панель, так как это наиболее универсальный вариант для размещения команд.ГруппаКомандПечати, что поможет нам ориентироваться в структуре формы.Эта группа будет служить нашим основным контейнером, но сама по себе она не станет выпадающим списком.
Добавление группы "Подменю": Теперь, когда у нас есть контейнер, мы можем добавить в него элемент, который будет отвечать за выпадающий список. Внутрь только что созданной группы с видом Командная панель добавьте ещё одну группу. Для этой новой внутренней группы установите следующие свойства:
Подменю. Именно это значение превратит группу в кнопку с выпадающим списком.Печать, Печать документов, или Варианты печати.ПодменюПечать.Теперь у вас на форме есть кнопка с заголовком, которая пока не имеет содержимого в выпадающем списке.
Добавление команд в подменю: Это самый важный шаг. Внутрь нашей новой группы с видом Подменю необходимо добавить элементы типа "Кнопка" и привязать их к соответствующим командам. У нас есть несколько сценариев:
Если команды уже существуют в форме или объекте: Например, это могут быть стандартные команды печати документа или команды, созданные вами в модуле объекта или формы. В окне "Команды" (обычно находится слева в редакторе формы, вкладка "Команды") найдите нужные команды. Просто перетащите каждую из них в нашу группу ПодменюПечать. При этом 1С автоматически создаст кнопки, привязанные к этим командам, и установит их заголовки. Это наиболее быстрый и удобный способ.
Если команды еще не созданы или их нужно привязать вручную:
ПодменюПечать перетащите три элемента "Кнопка".Печатная форма 1, Акт сверки, Счет-фактура).После выполнения этих шагов, в режиме "Предприятие" вы увидите одну кнопку с заданным вами заголовком (например, "Печать"), при нажатии на которую будет появляться выпадающий список из трех пунктов, каждый из которых запускает свою команду.
Нередко после переработки интерфейса и перемещения команд в подменю, пользователь сталкивается с проблемой: в конфигураторе старых кнопок не видно, но при запуске в режиме "Предприятие" они все еще появляются. Это происходит из-за механизма "Командного интерфейса" формы, но ситуацию можно исправить, редактируя свойства элементов формы непосредственно в режиме предприятия.
Для решения этой проблемы, последуем таким шагам:
Переход на вкладку "Командный интерфейс": Откройте форму в конфигураторе. В нижней части окна формы найдите вкладку с названием "Командный интерфейс" (или "Элементы командного интерфейса"). Перейдите на неё.
Поиск и снятие видимости команд: На этой вкладке вы увидите древовидную структуру, которая отображает все команды, доступные для данной формы, а также места их отображения (стандартные командные панели, разделы и т.д.).
Проверка других мест размещения: Убедитесь, что вы не добавили эти команды также в "Командную панель формы" (стандартную, которая может быть вверху формы по умолчанию) или в какие-либо другие группы, которые могут быть настроены в командном интерфейсе.
Очистка кэша (если проблема сохраняется): Иногда после значительных изменений в конфигурации, особенно касающихся интерфейса, клиентское приложение 1С может "помнить" старые настройки из своего кэша. Если после всех действий кнопки все равно видны, попробуйте следующее:
%LOCALAPPDATA%\1C\1Cv8 или %APPDATA%\1C\1Cv8) или запустив 1С в режиме предприятия с параметром командной строки /ClearCache (для этого нужно создать или отредактировать ярлык запуска информационной базы, добавив этот параметр).Хотя создание кнопки с выпадающим списком является прямым ответом на задачу организации интерфейса, иногда стоит рассмотреть более функциональный подход — групповую печать документов. Это не замена кнопки со списком, а скорее дополнение или альтернатива для определенных сценариев.
Групповая печать может быть полезной в следующих случаях:
Необходимость печати нескольких форм одновременно: Если пользователь часто нуждается в распечатке нескольких печатных форм для одного и того же документа (например, Счет-фактура и Акт сверки), то вместо выбора каждой формы по отдельности, можно предоставить ему одну команду "Групповая печать", которая вызовет последовательную печать всех необходимых форм.
Применение единой логики перед печатью: Если перед печатью нескольких форм требуется выполнить общую проверку, задать параметры или обработать данные, то механизм групповой печати может централизовать эту логику.
Создание специальной обработки: Для реализации групповой печати часто используется отдельная обработка. Мы можем создать общую команду конфигурации, которая будет открывать эту обработку. В обработке мы можем предоставить пользователю возможность выбора нужных печатных форм из списка, задать дополнительные параметры и запустить процесс печати.
Пример кода для вызова нескольких печатных форм из одной процедуры (псевдокод):
// В модуле объекта или специальной обработке
Процедура ГрупповаяПечать() Экспорт
// Получаем текущий документ или список документов, для которых нужна печать
ДокументОбъект = ЭтотОбъект; // Или получаем из параметров, если это обработка
// Вызываем первую печатную форму
МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма1");
// Вызываем вторую печатную форму
МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма2");
// Вызываем третью печатную форму
МодульМенеджераПечати.Печать(ДокументОбъект, "ПечатнаяФорма3");
// Мы можем добавить интерактивный выбор для пользователя:
// ДиалогВыбораФорм = Новый Форма(Библиотека.ПолучитьФормуДляВыбораПечатныхФорм);
// ДиалогВыбораФорм.ОткрытьМодально();
// Если ДиалогВыбораФорм.ВыбраныФормы Тогда
// Для Каждого ФормаПечати Из ДиалогВыбораФорм.ВыбранныеФормы Цикл
// МодульМенеджераПечати.Печать(ДокументОбъект, ФормаПечати.ИмяМакета);
// КонецЦикла;
// КонецЕсли;
КонецПроцедуры
Для создания такой команды в 1С:
Таким образом, выбор между кнопкой со списком и механизмом групповой печати зависит от конкретных бизнес-требований и удобства для конечного пользователя. В большинстве случаев, для выбора из нескольких существующих печатных форм, кнопка со списком является наиболее прямым и понятным решением.
Мы рассмотрели детальный подход к объединению нескольких команд в одну кнопку со списком на управляемых формах 1С:Предприятие 8.3. Ключевыми шагами являются создание групп с видом Командная панель и Подменю, а также правильная привязка команд к кнопкам внутри подменю через свойство Имя команды. Мы также выяснили, как управлять видимостью элементов интерфейса на вкладке Командный интерфейс, чтобы избавиться от нежелательных "лишних" кнопок и обеспечить чистоту и функциональность пользовательского интерфейса.
Помните, что аккуратная и продуманная организация интерфейса значительно повышает удобство работы пользователей с вашей программой.