При разработке управляемых форм в 1С:Предприятие 8.3 мы часто сталкиваемся с тем, что стандартная командная панель, заполняемая автоматически, ведет себя не совсем так, как нам хочется. Команды выстраиваются в стандартном порядке, некоторые нужные кнопки (например, Изменить) прячутся в подменю Еще, а вместо лаконичных иконок платформа выводит длинные текстовые названия. В этой статье мы подробно разберем, как управлять порядком кнопок, их видимостью и внешним видом, сохраняя при этом механизм автозаполнения.
Первый и самый простой вопрос, который возникает: как изменить последовательность кнопок, если они попадают в панель автоматически? Рассмотрим этот процесс шаг за шагом. Проанализируем возможности встроенного редактора формы.
Для управления порядком нам не нужно отключать автозаполнение всей панели. В верхней части окна редактора формы (над деревом элементов) расположена кнопка Командный интерфейс. Нажмем на нее. В открывшемся окне мы увидим список всех команд, которые платформа планирует вывести на форму: стандартные команды, общие команды и команды объекта.
Здесь мы можем выполнять следующие действия:
Важный нюанс: Порядок кнопок в режиме автозаполнения определяется внутренними индексами платформы (сначала идут стандартные команды, затем глобальные, потом объектные). Окно командного интерфейса позволяет переопределить этот порядок визуально без написания кода.
Часто такие важные команды, как Изменить, по умолчанию скрыты в подменю Еще. Разберем, как принудительно вывести их на передний план. В старых версиях платформы (до 8.3.15) для этого использовалось свойство ТолькоВоВсехДействиях. В современных реалиях ситуация изменилась.
Выясним причину изменений: начиная с версии 8.3.15, свойство ТолькоВоВсехДействиях признано устаревшим. Вместо него внедрено более гибкое свойство Положение в командной панели (PositionInCommandBar). Оно может принимать три значения:
Чтобы вынести команду Изменить, нам нужно найти ее в списке команд формы, перетащить мышкой в дерево элементов формы (непосредственно в объект КоманднаяПанель) и в свойствах появившегося элемента установить значение В командной панели.
Проанализируем ситуацию, когда после настройки кнопка отображается, но стоит немного уменьшить окно программы, как она полностью пропадает, не перемещаясь даже в меню Еще. Это особенность адаптивного интерфейса 1С.
Когда мы жестко задаем положение В командной панели, мы запрещаем платформе автоматически переносить кнопку в "дополнительные действия". Если места физически не хватает, платформа просто скрывает элемент. Чтобы управлять приоритетом скрытия, используем свойство Важность (Importance):
Если вы хотите, чтобы кнопка Изменить была всегда видна, установите ей Положение в командной панели = В командной панели и Важность = Высокая.
Посмотрим на пример команд Создать и Создать группу. По умолчанию они выводятся текстом, что занимает много места. Чтобы оставить только иконки, нам нужно изменить свойство Отображение (Representation).
Однако у автоматически созданных кнопок изменить это свойство напрямую нельзя. Разберем правильный алгоритм:
После этого на панели останется только узнаваемый значок, а текст будет доступен в качестве подсказки при наведении. При этом связь со стандартным действием платформы сохранится, и вам не придется писать обработчик нажатия.
Хотя визуальная настройка в конфигураторе является приоритетной, иногда требуется программное вмешательство. Рассмотрим, как это выглядит в коде. Стоит помнить, что при автозаполнении коллекция Элементы.КоманднаяПанель.ПодчиненныеЭлементы может быть пустой в методе ПриСозданииНаСервере, так как платформа формирует ее окончательно на стороне клиента. Однако для явно добавленных элементов мы можем управлять свойствами так:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Пример изменения отображения для явно добавленной кнопки
ЭлементКнопка = Элементы.Найти("КоманднаяПанельСоздать");
Если ЭлементКнопка <> Неопределено Тогда
ЭлементКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка;
ЭлементКнопка.ПоложениеВКоманднойПанели = ПоложениеВКоманднойПанели.ВКоманднойПанели;
КонецЕсли;
КонецПроцедуры
Для эффективной настройки командной панели без отключения автозаполнения мы рекомендуем придерживаться следующего подхода: используйте окно Командный интерфейс для базовой сортировки и управления видимостью общих команд. Если же требуется тонкая настройка конкретной стандартной кнопки (ее иконки или принудительного выноса из меню "Еще"), перетащите ее из списка команд в дерево элементов формы и настройте свойства Положение в командной панели, Важность и Отображение. Для оперативной проверки и корректировки этих параметров без постоянного перезапуска конфигуратора можно использовать обработку для редактирования свойств элементов открытых форм в режиме предприятия.