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