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