Разработка и Конфигурация · 9 мин
Как добавить кнопку на форму в 1С: полное руководство
Как добавить кнопку на форму в 1С: работа в конфигураторе, создание команды, обработчик на встроенном языке, программное добавление и типичные ошибки.
Кнопка на форме — один из самых частых элементов доработки в 1С: с её помощью запускают печать документа, вызов обработки, пересчёт данных или любую произвольную операцию. В управляемых формах платформы 1С:Предприятие 8.3 кнопка всегда связана с командой: сначала создаётся команда формы, затем она выводится на форму как кнопка, а логика прописывается в модуле формы на встроенном языке.
Есть два принципиальных подхода: добавить кнопку в конфигураторе, изменив саму конфигурацию, либо создать её программно — из кода, расширения или внешней обработки. Первый способ проще и прозрачнее, второй нужен, когда конфигурация находится на поддержке и менять её нежелательно. Ниже разобраны оба варианта с конкретными шагами и примерами кода.
Перед началом работы убедитесь, что у вас есть права на изменение конфигурации и создана резервная копия информационной базы. Даже простая доработка формы при ошибке может нарушить работу пользователей, если изменения сразу попадут в рабочую базу.
Где создаются кнопки: структура управляемой формы
Управляемая форма в 1С состоит из трёх связанных частей: реквизитов (данные формы), команд (действия) и элементов дерева формы (визуальное представление). Кнопка — это элемент формы типа «Кнопка», который отображает команду. Без команды кнопка не будет выполнять никакого действия — это ключевое отличие от обычных форм платформы 8.2, где обработчик назначался кнопке напрямую.
В дереве элементов формы кнопки обычно размещаются в командной панели, в группе кнопок или в подменю. Стандартные команды (записать, провести, закрыть) уже присутствуют в командной панели формы, и добавленная вами кнопка встанет рядом с ними, если перетащить её в ту же панель.
Добавление кнопки через конфигуратор
Основной способ — доработка формы в конфигураторе. Порядок действий одинаков для формы документа, справочника и большинства других объектов.
- 1Откройте конфигуратор, найдите нужный объект (документ, справочник) и откройте его основную форму двойным щелчком.
- 2Перейдите на вкладку «Команды» в редакторе формы и нажмите «Добавить».
- 3Задайте имя команды, например «ПечатьАкта», и заголовок — он будет отображаться на кнопке.
- 4В свойстве «Действие» нажмите кнопку выбора — конфигуратор создаст процедуру-обработчик в модуле формы.
- 5Перетащите созданную команду из списка команд в дерево элементов формы — в командную панель или нужную группу.
- 6Впишите логику в обработчик, обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия.
Обратите внимание на директивы компиляции обработчика. Если действие выполняется на клиенте (открытие формы, предупреждение пользователю), используйте &НаКлиенте. Если нужна работа с базой данных — создайте серверную процедуру &НаСервере и вызывайте её из клиентской. Прямой вызов запросов и методов работы с данными в клиентском контексте приведёт к ошибке.
После добавления проверьте видимость кнопки: если группа, в которую вы её поместили, свёрнута или скрыта функциональной опцией, кнопка не отобразится. Также убедитесь, что у роли пользователя есть права на действия, которые выполняет обработчик, — иначе кнопка будет видна, но выдаст ошибку доступа.
Настройка внешнего вида кнопки
Свойства кнопки задаются в палитре свойств элемента формы. Полезные настройки: «Заголовок» — текст на кнопке; «Картинка» — пиктограмма из библиотеки картинок; «Отображение» — показывать текст, картинку или оба варианта; «Важность» — выделение кнопки цветом (например, «Важное» делает её акцентной).
Для кнопок в командной панели типовых конфигураций принято использовать картинки из стандартной библиотеки, чтобы интерфейс выглядел единообразно. Свойство «СочетаниеКлавиш» позволяет назначить горячие клавиши, например Ctrl+Shift+P для печати.
Программное добавление кнопки
Когда форму нельзя изменить в конфигураторе (конфигурация на полной поддержке, доработка через внешнюю обработку), кнопку создают кодом в обработчике ПриСозданииНаСервере. Последовательность: создать команду, назначить ей действие, затем добавить элемент формы и связать его с командой.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Создаём команду
НоваяКоманда = Команды.Добавить("КомандаПечатьАкта");
НоваяКоманда.Заголовок = "Печать акта";
НоваяКоманда.Действие = "Подключаемый_ПечатьАкта";
// Создаём кнопку в командной панели
НоваяКнопка = Элементы.Добавить("КнопкаПечатьАкта", Тип("КнопкаФормы"), Элементы.КоманднаяПанель);
НоваяКнопка.ИмяКоманды = "КомандаПечатьАкта";
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПечатьАкта(Команда)
ПоказатьПредупреждение(, "Команда выполнена");
КонецПроцедурыИмя процедуры-обработчика в свойстве Действие указывается строкой без скобок и параметров — платформа сама передаст в процедуру параметр «Команда». Процедура обязательно должна существовать в модуле формы, иначе при нажатии возникнет ошибка «Процедура или функция с указанным именем не определена».
Добавление кнопки через расширение конфигурации
Расширение — рекомендуемый способ доработки типовых конфигураций: форма заимствуется в расширение, кнопка добавляется в ней, а сама конфигурация остаётся на поддержке и обновляется штатно. Для этого в конфигураторе откройте «Конфигурация → Расширения конфигурации», создайте новое расширение и добавьте в него нужную форму через контекстное меню «Добавить в расширение».
В заимствованной форме кнопка добавляется тем же способом, что и в обычной: команда, обработчик, перетаскивание в дерево элементов. Ограничение: в расширении нельзя изменять некоторые свойства заимствованных элементов, а при конфликте имён с будущими обновлениями типовой конфигурации расширение может потребовать доработки.
Сравнение способов
Подходит для собственных конфигураций. Просто и наглядно, но усложняет обновление типовых решений.
Оптимально для типовых конфигураций на поддержке. Обновления не затрагивают доработку, но есть ограничения на изменение заимствованных форм.
Универсальный вариант для внешних обработок и гибкой логики. Требует аккуратности с именами процедур и контекстом выполнения.
Проверка результата и типичные ошибки
После добавления кнопки обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и откройте форму в режиме предприятия. Проверьте: кнопка отображается в ожидаемом месте, заголовок читается, нажатие выполняет нужное действие, при повторном открытии формы кнопка не дублируется (актуально для программного способа — добавляйте проверку существования элемента).
Как проверить результат
Кнопка видна в командной панели с заданным заголовком
Кнопки нет — проверьте группу, видимость и обновление конфигурации
Выполняется заданное действие без ошибок
Ошибка «процедура не определена» или нарушение прав доступа
Кнопка одна, поведение стабильно
Кнопки дублируются — добавьте проверку существования элемента
FAQ
Как добавить кнопку в командную панель табличной части документа?
В дереве элементов формы найдите табличную часть, разверните её — внутри есть собственная командная панель. Перетащите команду именно туда. Программно укажите родителем кнопки элемент командной панели табличной части, а не общей панели формы.
Можно ли добавить кнопку, не снимая конфигурацию с поддержки?
Да. Используйте расширение конфигурации — оно не требует снятия с поддержки. Альтернатива — внешняя обработка по механизму дополнительных отчетов и обработок (БСП), которая сама добавляет команду в интерфейс.
Почему кнопка видна, но не нажимается (серая)?
Элемент недоступен: проверьте свойство «Доступность» кнопки и родительской группы, а также функциональные опции, которые могут отключать элемент. В программном сценарии убедитесь, что кнопке назначена команда с существующим обработчиком.
Как выполнить серверный код по нажатию кнопки?
Создайте клиентский обработчик команды и из него вызовите серверную процедуру с директивой &НаСервере. Если нужен контекст объекта формы (записать документ, изменить реквизиты), используйте &НаСервере с передачей параметров, а не &НаСервереБезКонтекста.
Как удалить или скрыть стандартную кнопку с формы?
В конфигураторе снимите флажок видимости у элемента в дереве формы или удалите его. В расширении стандартные элементы удалять нельзя — только менять свойство «Видимость». Учтите, что скрытие стандартных команд (например, «Провести») может нарушить бизнес-процесс.
Что важно запомнить
Кнопка в управляемой форме 1С — это команда плюс элемент формы: создайте команду, назначьте обработчик, перетащите в дерево элементов. Для типовых конфигураций используйте расширение, для гибких сценариев — программное создание через Команды.Добавить и Элементы.Добавить. Всегда проверяйте результат в режиме предприятия и делайте резервную копию перед доработкой.