К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как добавить кнопку на форму в 1С: полное руководство

Как добавить кнопку на форму в 1С: работа в конфигураторе, создание команды, обработчик на встроенном языке, программное добавление и типичные ошибки.

Кнопка на форме — один из самых частых элементов доработки в 1С: с её помощью запускают печать документа, вызов обработки, пересчёт данных или любую произвольную операцию. В управляемых формах платформы 1С:Предприятие 8.3 кнопка всегда связана с командой: сначала создаётся команда формы, затем она выводится на форму как кнопка, а логика прописывается в модуле формы на встроенном языке.

Есть два принципиальных подхода: добавить кнопку в конфигураторе, изменив саму конфигурацию, либо создать её программно — из кода, расширения или внешней обработки. Первый способ проще и прозрачнее, второй нужен, когда конфигурация находится на поддержке и менять её нежелательно. Ниже разобраны оба варианта с конкретными шагами и примерами кода.

Перед началом работы убедитесь, что у вас есть права на изменение конфигурации и создана резервная копия информационной базы. Даже простая доработка формы при ошибке может нарушить работу пользователей, если изменения сразу попадут в рабочую базу.

Где создаются кнопки: структура управляемой формы

Управляемая форма в 1С состоит из трёх связанных частей: реквизитов (данные формы), команд (действия) и элементов дерева формы (визуальное представление). Кнопка — это элемент формы типа «Кнопка», который отображает команду. Без команды кнопка не будет выполнять никакого действия — это ключевое отличие от обычных форм платформы 8.2, где обработчик назначался кнопке напрямую.

В дереве элементов формы кнопки обычно размещаются в командной панели, в группе кнопок или в подменю. Стандартные команды (записать, провести, закрыть) уже присутствуют в командной панели формы, и добавленная вами кнопка встанет рядом с ними, если перетащить её в ту же панель.

Добавление кнопки через конфигуратор

Основной способ — доработка формы в конфигураторе. Порядок действий одинаков для формы документа, справочника и большинства других объектов.

Порядок действий
  1. 1
    Откройте конфигуратор, найдите нужный объект (документ, справочник) и откройте его основную форму двойным щелчком.
  2. 2
    Перейдите на вкладку «Команды» в редакторе формы и нажмите «Добавить».
  3. 3
    Задайте имя команды, например «ПечатьАкта», и заголовок — он будет отображаться на кнопке.
  4. 4
    В свойстве «Действие» нажмите кнопку выбора — конфигуратор создаст процедуру-обработчик в модуле формы.
  5. 5
    Перетащите созданную команду из списка команд в дерево элементов формы — в командную панель или нужную группу.
  6. 6
    Впишите логику в обработчик, обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия.

Обратите внимание на директивы компиляции обработчика. Если действие выполняется на клиенте (открытие формы, предупреждение пользователю), используйте &НаКлиенте. Если нужна работа с базой данных — создайте серверную процедуру &НаСервере и вызывайте её из клиентской. Прямой вызов запросов и методов работы с данными в клиентском контексте приведёт к ошибке.

После добавления проверьте видимость кнопки: если группа, в которую вы её поместили, свёрнута или скрыта функциональной опцией, кнопка не отобразится. Также убедитесь, что у роли пользователя есть права на действия, которые выполняет обработчик, — иначе кнопка будет видна, но выдаст ошибку доступа.

Настройка внешнего вида кнопки

Свойства кнопки задаются в палитре свойств элемента формы. Полезные настройки: «Заголовок» — текст на кнопке; «Картинка» — пиктограмма из библиотеки картинок; «Отображение» — показывать текст, картинку или оба варианта; «Важность» — выделение кнопки цветом (например, «Важное» делает её акцентной).

Для кнопок в командной панели типовых конфигураций принято использовать картинки из стандартной библиотеки, чтобы интерфейс выглядел единообразно. Свойство «СочетаниеКлавиш» позволяет назначить горячие клавиши, например Ctrl+Shift+P для печати.

Программное добавление кнопки

Когда форму нельзя изменить в конфигураторе (конфигурация на полной поддержке, доработка через внешнюю обработку), кнопку создают кодом в обработчике ПриСозданииНаСервере. Последовательность: создать команду, назначить ей действие, затем добавить элемент формы и связать его с командой.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Создаём команду
	НоваяКоманда = Команды.Добавить("КомандаПечатьАкта");
	НоваяКоманда.Заголовок = "Печать акта";
	НоваяКоманда.Действие = "Подключаемый_ПечатьАкта";

	// Создаём кнопку в командной панели
	НоваяКнопка = Элементы.Добавить("КнопкаПечатьАкта", Тип("КнопкаФормы"), Элементы.КоманднаяПанель);
	НоваяКнопка.ИмяКоманды = "КомандаПечатьАкта";

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПечатьАкта(Команда)

	ПоказатьПредупреждение(, "Команда выполнена");

КонецПроцедуры

Имя процедуры-обработчика в свойстве Действие указывается строкой без скобок и параметров — платформа сама передаст в процедуру параметр «Команда». Процедура обязательно должна существовать в модуле формы, иначе при нажатии возникнет ошибка «Процедура или функция с указанным именем не определена».

Добавление кнопки через расширение конфигурации

Расширение — рекомендуемый способ доработки типовых конфигураций: форма заимствуется в расширение, кнопка добавляется в ней, а сама конфигурация остаётся на поддержке и обновляется штатно. Для этого в конфигураторе откройте «Конфигурация → Расширения конфигурации», создайте новое расширение и добавьте в него нужную форму через контекстное меню «Добавить в расширение».

В заимствованной форме кнопка добавляется тем же способом, что и в обычной: команда, обработчик, перетаскивание в дерево элементов. Ограничение: в расширении нельзя изменять некоторые свойства заимствованных элементов, а при конфликте имён с будущими обновлениями типовой конфигурации расширение может потребовать доработки.

Сравнение способов

Доработка в конфигураторе

Подходит для собственных конфигураций. Просто и наглядно, но усложняет обновление типовых решений.

Расширение конфигурации

Оптимально для типовых конфигураций на поддержке. Обновления не затрагивают доработку, но есть ограничения на изменение заимствованных форм.

Программное создание

Универсальный вариант для внешних обработок и гибкой логики. Требует аккуратности с именами процедур и контекстом выполнения.

Проверка результата и типичные ошибки

После добавления кнопки обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и откройте форму в режиме предприятия. Проверьте: кнопка отображается в ожидаемом месте, заголовок читается, нажатие выполняет нужное действие, при повторном открытии формы кнопка не дублируется (актуально для программного способа — добавляйте проверку существования элемента).

Типичные ошибки
01
Кнопка создана, но команда не назначена — кнопка отображается, но ничего не делает.
02
Обработчик помечен только &НаКлиенте, а внутри запрос к базе — ошибка компиляции или выполнения.
03
Опечатка в имени процедуры в свойстве Действие — ошибка «процедура не определена» при нажатии.
04
Кнопка добавлена в скрытую группу или за пределы видимой области — пользователь её не видит.
05
Программное добавление без проверки дублей — после каждого пересоздания формы появляется новая кнопка.
06
Забыто обновление конфигурации БД (F7) — в режиме предприятия изменений не видно.
Контрольные точки

Как проверить результат

Отображение кнопки
Норма

Кнопка видна в командной панели с заданным заголовком

Тревожный признак

Кнопки нет — проверьте группу, видимость и обновление конфигурации

Нажатие
Норма

Выполняется заданное действие без ошибок

Тревожный признак

Ошибка «процедура не определена» или нарушение прав доступа

Повторное открытие формы
Норма

Кнопка одна, поведение стабильно

Тревожный признак

Кнопки дублируются — добавьте проверку существования элемента

FAQ

Как добавить кнопку в командную панель табличной части документа?

В дереве элементов формы найдите табличную часть, разверните её — внутри есть собственная командная панель. Перетащите команду именно туда. Программно укажите родителем кнопки элемент командной панели табличной части, а не общей панели формы.

Можно ли добавить кнопку, не снимая конфигурацию с поддержки?

Да. Используйте расширение конфигурации — оно не требует снятия с поддержки. Альтернатива — внешняя обработка по механизму дополнительных отчетов и обработок (БСП), которая сама добавляет команду в интерфейс.

Почему кнопка видна, но не нажимается (серая)?

Элемент недоступен: проверьте свойство «Доступность» кнопки и родительской группы, а также функциональные опции, которые могут отключать элемент. В программном сценарии убедитесь, что кнопке назначена команда с существующим обработчиком.

Как выполнить серверный код по нажатию кнопки?

Создайте клиентский обработчик команды и из него вызовите серверную процедуру с директивой &НаСервере. Если нужен контекст объекта формы (записать документ, изменить реквизиты), используйте &НаСервере с передачей параметров, а не &НаСервереБезКонтекста.

Как удалить или скрыть стандартную кнопку с формы?

В конфигураторе снимите флажок видимости у элемента в дереве формы или удалите его. В расширении стандартные элементы удалять нельзя — только менять свойство «Видимость». Учтите, что скрытие стандартных команд (например, «Провести») может нарушить бизнес-процесс.

Итог

Что важно запомнить

Кнопка в управляемой форме 1С — это команда плюс элемент формы: создайте команду, назначьте обработчик, перетащите в дерево элементов. Для типовых конфигураций используйте расширение, для гибких сценариев — программное создание через Команды.Добавить и Элементы.Добавить. Всегда проверяйте результат в режиме предприятия и делайте резервную копию перед доработкой.