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