При разработке интерфейсов на управляемых формах часто возникает необходимость кастомизировать стандартные элементы, которые платформа генерирует автоматически. Одной из типичных задач является изменение текста на стандартной желтой кнопке «Записать и закрыть» или скрытие лишних элементов навигации в заголовке окна. Рассмотрим подробнее, как решить эти задачи несколькими способами, сохраняя при этом привычный пользователю стиль интерфейса «Такси».
Если нам нужно оставить стандартную функциональность кнопки, но изменить её визуальное представление (текст), самый быстрый и надежный способ — обратиться к элементу формы программно. Разберем ситуацию: на форме есть стандартная командная панель, где заполнена кнопка «Записать и закрыть». Нам нужно, чтобы вместо длинного названия было написано просто «Записать», но при этом сохранился фирменный желтый фон (признак кнопки по умолчанию).
Проанализируем ситуацию: платформа присваивает стандартным кнопкам определенные имена. Для кнопки «Записать и закрыть» это обычно ФормаЗаписатьИЗакрыть. Мы можем изменить её свойства в процедуре ПриСозданииНаСервере.
Рассмотрим пример кода:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Обращаемся к элементу командной панели по стандартному имени
КнопкаЗаписать = Элементы.Найти("ФормаЗаписатьИЗакрыть");
Если КнопкаЗаписать <> Неопределено Тогда
КнопкаЗаписать.Заголовок = "Записать";
КонецЕсли;
КонецПроцедуры
Важный нюанс: использование метода Найти() позволяет избежать ошибок, если структура формы изменится. Этот метод сохраняет все свойства кнопки, включая её поведение и выделение цветом.
Иногда программный метод не подходит, и мы хотим видеть изменения сразу в конфигураторе. Разберем, как сделать это вручную, не теряя «желтую» подсветку кнопки. По умолчанию у командной панели установлен флаг Автозаполнение. Чтобы получить полный контроль над кнопками, выполним следующие шаги:
Записать и закрыть и перетащим её мышкой на командную панель.Истина.Проанализируем этот механизм: в интерфейсе «Такси» платформа автоматически окрашивает в желтый цвет ту кнопку, у которой установлено свойство «Кнопка по умолчанию». Помните, что на форме такая кнопка может быть только одна.
Перейдем ко второму вопросу: как убрать навигационные элементы в заголовке формы (стрелки истории). Выясним причину их появления: эти стрелки отрисовываются платформой автоматически, когда форма открывается в том же окне, замещая предыдущую. Это часть механизма истории навигации.
Чтобы скрыть эти элементы, мы можем изменить режим открытия окна. Если форма открывается как блокирующая, навигационные элементы исчезают. Рассмотрим, как это настроить:
Блокировать окно владельца или Блокировать весь интерфейс.В этом случае форма станет модальной (или квазимодальной), и платформа уберет кнопки перехода по истории, так как контекст навигации фиксируется на текущем окне.
Часто требуется убрать название объекта (например, «Номенклатура») из самой верхней части окна. Разберем по шагам, как это сделать:
АвтоЗаголовок. По умолчанию оно включено. Если его выключить (снять флаг), платформа перестанет подставлять имя объекта и представление данных в шапку.Заголовок пустым.ОтображениеЗаголовка. Установив его в значение Не отображать, вы полностью скроете верхнюю серую полосу формы.Посмотрим на пример того, как это можно сделать программно, если условия скрытия зависят от прав пользователя или параметров запуска:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Скрываем автоматический текст заголовка
ЭтаФорма.АвтоЗаголовок = Ложь;
ЭтаФорма.Заголовок = " "; // Устанавливаем пустую строку или пробел
// Если нужно полностью убрать панель заголовка (доступно не везде)
ЭтаФорма.ОтображениеЗаголовка = ОтображениеЗаголовкаУправляемойФормы.НеОтображать;
КонецПроцедуры
Проанализируем еще одну полезную возможность — управление составом команд через свойство «Только во всех действиях». Если вы хотите, чтобы стандартная кнопка (например, «Справка» или «Изменить форму») не занимала место на панели, но была доступна пользователю, установите для этого элемента данный флаг. Кнопка переместится в подменю «Ещё».
Также стоит помнить о правах доступа. Если стандартная кнопка исчезла сама по себе, проверьте роли пользователя. Платформа 1С автоматически скрывает команды, на выполнение которых у пользователя нет прав (например, если нет права «Редактирование» для объекта, кнопка «Записать» будет скрыта автоматически без всякого кода).
Таким образом, мы разобрали основные методы кастомизации командной панели и заголовка формы. Использование свойств КнопкаПоУмолчанию, АвтоЗаголовок и программное управление коллекцией Элементы позволяет создавать гибкие и эстетичные интерфейсы, отвечающие требованиям бизнес-задач.