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

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

Внешняя обработка 1С: как добавить кнопку на форму

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

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

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

Что понадобится перед началом работы

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

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

Добавление кнопки на управляемую форму

В управляемой форме кнопка не существует отдельно от команды: сначала создаётся команда формы, затем она выводится на форму в виде кнопки. Откройте форму обработки, перейдите на вкладку «Команды» в правой части редактора и добавьте новую команду, например с именем «ЗаполнитьДанные».

В свойствах команды задайте заголовок — именно он будет отображаться на кнопке. Затем нажмите кнопку с изображением лупы в поле «Действие» и создайте обработчик. Система предложит выбрать место размещения кода: «На клиенте», «На сервере» или «На клиенте и сервере». Для простых действий с формой достаточно клиентского обработчика.

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

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

Куда поместить кнопку: командная панель или тело формы

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

Написание обработчика нажатия

Обработчик команды — это процедура в модуле формы, которая выполняется при нажатии кнопки. Если действие требует обращения к данным информационной базы (запросы, запись объектов), код выполняется на сервере: в клиентском обработчике вызывается серверная процедура. Директивы компиляции указываются явно:

&НаКлиенте

Процедура ЗаполнитьДанные(Команда)

ЗаполнитьДанныеНаСервере();

ПоказатьОповещениеПользователя("Данные заполнены");

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

&НаСервере

Процедура ЗаполнитьДанныеНаСервере()

// серверная логика: запросы, запись данных

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

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

bsl
&НаКлиенте
Процедура ВыполнитьДействие(Команда)
	Если Не ЗначениеЗаполнено(Организация) Тогда
		Сообщить("Укажите организацию");
		Возврат;
	КонецЕсли;
	ВыполнитьДействиеНаСервере();
КонецПроцедуры

Добавление кнопки на обычную форму

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

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

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

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

&НаСервере

Процедура СоздатьКнопкуПрограммно()

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

НоваяКоманда.Действие = "Подключаемый_Обработчик";

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

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

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

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

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

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

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

Типичные ошибки
01
Команда создана, но не добавлена в дерево элементов — кнопка не видна на форме
02
Обработчик размещён на сервере, а код обращается к элементам формы — ошибка компиляции
03
Изменено имя команды после создания обработчика — процедура потеряла связь и не вызывается
04
Обработка сохранена, но в 1С:Предприятии открыта старая копия файла — изменений не видно
05
Кнопка добавлена в обычной форме без привязки события Нажатие — клик ничего не делает

Ещё одна частая ситуация: кнопка есть, но неактивна (серая). Это значит, что у команды не назначен обработчик действия либо форма заблокирована модально открытым окном. Проверьте свойство «Действие» команды и наличие процедуры с точным именем в модуле формы.

FAQ

Как изменить надпись на кнопке после создания?

В управляемой форме надпись берётся из свойства «Заголовок» команды: откройте вкладку «Команды», выберите команду и измените заголовок. В обычной форме текст задаётся в свойстве «Надпись» самой кнопки в палитре свойств.

Можно ли добавить картинку на кнопку?

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

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

Связь команды и процедуры держится на имени. При переименовании команды обработчик не переименовывается автоматически. Откройте свойство «Действие» команды и заново укажите существующую процедуру или создайте новую.

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

Управляйте свойством «Доступность» элемента формы из кода: Элементы.КнопкаЗаполнить.Доступность = ЗначениеЗаполнено(Организация);. Проверку удобно выполнять в обработчике ПриИзменении соответствующего поля ввода.

Кнопка есть в конфигураторе, но не видна при запуске. Что проверить?

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

Можно ли одной кнопкой выполнить несколько действий?

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

Итог

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

В управляемой форме кнопка создаётся через команду: команда → обработчик → перетаскивание в дерево элементов. В обычной форме кнопка добавляется напрямую с событием Нажатие. Перед правками сохраните копию файла обработки, а результат проверяйте запуском в режиме 1С:Предприятие.