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

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

Расширение конфигурации 1С 8.3: добавляем кнопку на форму

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

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

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

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

Когда кнопку стоит добавлять через расширение, а когда нет

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

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

Сравнение вариантов

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

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

Доработка основной конфигурации

Подходит для глубоких изменений логики; ограничение — снятие с поддержки и сложные обновления.

Дополнительные отчеты и обработки (БСП)

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

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

Создание расширения и заимствование формы

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

Найдите в дереве конфигурации нужный объект, например документ «Реализация товаров и услуг», раскройте его формы, вызовите контекстное меню на нужной форме и выберите «Добавить в расширение». Форма появится в дереве расширения со всеми элементами, реквизитами и командами типовой конфигурации.

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

Добавление команды и обработчика

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

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

bsl
&НаКлиенте
Процедура ПоказатьСвязанныеДокументы(Команда)
	ПараметрыОтбора = Новый Структура("ДокументОснование", Объект.Ссылка);
	ОткрытьФорму("Документ.СчетФактура.ФормаСписка", Новый Структура("Отбор", ПараметрыОтбора), ЭтотОбъект);
КонецПроцедуры

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

Размещение кнопки на форме

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

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

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

Проверка результата и подключение расширения пользователям

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

В клиент-серверной базе проверьте, что расширение подключено не только у разработчика: в пользовательском режиме список расширений доступен через «Администрирование → Печатные формы, отчеты и обработки → Расширения» (в конфигурациях на БСП). Расширение, подключенное из конфигуратора, действует для всех сеансов базы, но при переносе через файл .cfe его нужно загрузить в целевую базу отдельно.

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

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

Кнопка на форме
Норма

Кнопка видна в нужной группе, заголовок читаемый, нажатие выполняет действие

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

Кнопки нет, она неактивна или нажатие вызывает ошибку «Процедура не обнаружена»

Список расширений
Норма

Расширение присутствует, активно, без пометки об ошибке подключения

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

Расширение отключено или помечено как несовместимое с текущей версией конфигурации

Права пользователя
Норма

Кнопка доступна всем ролям, которым она нужна

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

У части пользователей кнопка скрыта или действие падает с ошибкой доступа

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Команда создана, но не перенесена в дерево элементов — кнопка на форме не появляется
02
Обработчик создан в модуле основной конфигурации вместо модуля формы расширения — изменение теряется или требует снятия с поддержки
03
Использован постфикс «Вместо» для типовых обработчиков без необходимости — после обновления конфигурации ломается типовая логика
04
Расширение проверено только у разработчика — у пользователей без прав кнопка недоступна или вызывает ошибку

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

Часто задаваемые вопросы

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

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

Почему кнопка с картинкой показывается только текстом или наоборот?

За отображение отвечает свойство «Отображение» кнопки формы: «Авто», «Надпись», «Картинка» или «Надпись и картинка». Также проверьте, что картинка задана у команды, а не только у кнопки, — при значении «Авто» платформа берёт настройки из команды.

Нужно ли переподключать расширение после обновления платформы?

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

Как скрыть кнопку для части пользователей?

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

Можно ли одной кнопкой вызвать внешнюю обработку?

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

Что делать, если после добавления кнопки форма перестала открываться?

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

Итог

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

Кнопка добавляется через связку «команда формы + элемент кнопки в дереве элементов» внутри заимствованной формы расширения. Работайте с минимальным набором заимствований, используйте постфикс «После» для обработчиков, проверяйте результат на копии базы и у пользователей с реальными правами.