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

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

Как добавить кнопку в 1С 8.3: пошаговая инструкция

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

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

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

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

Где именно нужна кнопка: определяем сценарий

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

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

Маршрут решения

Как выбрать способ

Кнопка нужна внутри одной формы документа или справочникаСоздайте команду формы и кнопку в редакторе формы конфигуратора
Действие должно запускаться из раздела программы без открытия объектаСоздайте общую команду и добавьте её в командный интерфейс подсистемы
Конфигурация типовая и стоит на поддержкеИспользуйте расширение: заимствуйте форму и добавьте кнопку там
Кнопки должны появляться динамически по условиямСоздавайте команды и кнопки программно в обработчике ПриСозданииНаСервере

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

Основной сценарий — кнопка на управляемой форме. Откройте конфигуратор, найдите нужный объект (например, документ «Реализация товаров и услуг» или справочник «Номенклатура») и откройте его основную форму двойным щелчком. Редактор формы состоит из дерева элементов слева вверху, списка реквизитов и команд справа и визуального предпросмотра внизу.

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

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

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

Пишем обработчик команды

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

Типичный шаблон клиентской команды:

&НаКлиенте

Процедура ЗаполнитьПоОстаткам(Команда)

ЗаполнитьПоОстаткамНаСервере();

ПоказатьОповещениеПользователя("Табличная часть заполнена");

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

&НаСервере

Процедура ЗаполнитьПоОстаткамНаСервере()

// запрос к остаткам и заполнение табличной части

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

Обратите внимание на разделение: клиентская процедура вызывает серверную. Это стандартный приём управляемых форм — данные обрабатываются на сервере, интерфейсные действия остаются на клиенте. Если вся логика интерфейсная (например, открыть другую форму), серверный вызов не нужен.

Кнопка в командной панели и в подменю

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

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

Для формы списка механика та же: откройте форму списка объекта, создайте команду и разместите её в командной панели. Учтите, что в обработчике формы списка доступ к текущей строке даёт элемент формы «Список» через свойство ТекущиеДанные или ТекущаяСтрока.

Кнопка через общую команду и командный интерфейс

Если действие не привязано к конкретной форме — например, нужно открыть внешнюю обработку из раздела «Администрирование» — используйте общие команды. В дереве конфигурации найдите ветку «Общие» → «Общие команды» и добавьте новую. Задайте имя, синоним и тип команды: чаще всего это открытие формы обработки или отчёта.

В модуле команды пишется обработчик:

&НаКлиенте

Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ОткрытьФорму("Обработка.ЗагрузкаДанных.Форма");

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

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

Если кнопка нужна сразу в нескольких формах (например, во всех документах продажи), не дублируйте команды форм — создайте одну общую команду с типом параметра «ДокументСсылка...» и она автоматически появится в панели действий нужных объектов.
ПЗ
Практическое замечание

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

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

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

После сохранения расширения проверьте его применимость: в списке расширений флажок «Активно» должен быть установлен, а колонка «Применимость» не должна показывать ошибок. Если форма в основной конфигурации сильно изменится после обновления, расширение может потребовать доработки — это нормальная плата за обновляемость.

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

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

&НаСервере

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

НоваяКоманда = Команды.Добавить("КомандаДинамическая");

НоваяКоманда.Действие = "Подключаемый_ВыполнитьКоманду";

НоваяКоманда.Заголовок = "Моя кнопка";

НоваяКнопка = Элементы.Добавить("КнопкаДинамическая", Тип("КнопкаФормы"), Элементы.КоманднаяПанель);

НоваяКнопка.ИмяКоманды = "КомандаДинамическая";

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

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

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

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

Контрольные точки

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

Видимость кнопки
Норма

Кнопка отображается в заданном месте формы или панели

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

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

Работа обработчика
Норма

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

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

Ошибка «Процедура не обнаружена» — имя обработчика не совпадает с действием команды

Права доступа
Норма

У пользователя с типовыми правами команда работает

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

Ошибка доступа — нужно добавить права на объекты в роли или профиль

Обновление формы
Норма

После перезапуска предприятия кнопка на месте

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

Кнопка пропала — конфигурация базы данных не обновлена

Типичные ошибки
01
Команда создана, но не перенесена в дерево элементов — кнопка просто не появляется на форме
02
Имя процедуры-обработчика изменено вручную, а в свойстве «Действие» осталось старое — ошибка при нажатии
03
Клиентский обработчик обращается к запросам напрямую — в управляемом приложении это невозможно, нужен серверный вызов
04
Изменения внесены в типовую конфигурацию без расширения — при обновлении доработка теряется или блокирует обновление
05
Кнопка добавлена в форму объекта, а проверяется в форме списка — это разные формы с разными командами

Частые вопросы

Как добавить кнопку в 1С 8.3 без конфигуратора?

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

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

Серая кнопка означает, что команда недоступна в текущем контексте. Частые причины: у пользователя нет прав на объекты, к которым обращается команда; форма открыта в режиме только для просмотра; для команды задано условие доступности через функциональные опции. Проверьте права и состояние формы.

Как добавить картинку на кнопку?

В свойствах команды формы есть поле «Картинка» — нажмите кнопку выбора и укажите изображение из общей библиотеки картинок конфигурации или загрузите свою в ветку «Общие» → «Общие картинки». Свойство «Отображение» определяет, показывать ли картинку вместе с текстом или вместо него.

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

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

Как сделать кнопку, которая печатает документ?

Создайте команду формы с серверным обработчиком, который формирует табличный документ, и верните его на клиент для показа. В типовых конфигурациях правильнее подключаться к подсистеме печати БСП через дополнительные печатные формы — тогда кнопка появится в меню «Печать» автоматически.

Кнопка добавлена, но видна только под администратором. Что делать?

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

Итог

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

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