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

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

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

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

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

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

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

Открываем форму объекта в конфигураторе

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

Если формы ещё нет, создайте её: правой кнопкой по ветке «Формы» → «Добавить» → выберите тип формы и пройдите шаги конструктора. Конструктор автоматически создаст основные реквизиты и стандартные команды.

Редактор формы состоит из нескольких областей: дерево элементов (слева вверху), список реквизитов и команд (справа), а также предпросмотр формы. Именно с этими областями идёт основная работа при добавлении кнопки.

Создаём команду формы для кнопки

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

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

В палитре свойств команды настройте заголовок (текст на кнопке), картинку, подсказку и сочетание клавиш при необходимости. Свойство «Отображение» определяет, как кнопка выглядит: текст, картинка или и то и другое.

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

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

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

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

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

Пишем обработчик команды в модуле формы

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

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

&НаКлиенте

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

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

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

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

&НаСервере

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

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

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

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

bsl
&НаКлиенте
Процедура МояКоманда(Команда)
	ПоказатьПредупреждение(, "Кнопка нажата");
КонецПроцедуры

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

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

&НаСервере

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

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

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

НоваяКоманда.Заголовок = "Сформировать";

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

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

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

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

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

Визуальное добавление

Подходит для статичных кнопок. Всё видно в редакторе, проще сопровождать, но нельзя менять состав кнопок на лету.

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

Подходит, когда кнопки зависят от данных или прав. Гибче, но сложнее отлаживать: элемент виден только в режиме предприятия.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение об ошибке или тишина — проверить обработчик и связь с командой

Работа с данными
Норма

Данные записываются и форма обновляется

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

Данные не меняются — серверная часть не вызывается или не модифицирует объект

Ограничения и безопасная работа с конфигурацией

Любые изменения форм выполняйте сначала на копии базы или в тестовом контуре. Ошибка в обработчике команды может привести к некорректной записи данных — особенно если кнопка запускает проведение документов или массовое изменение справочников.

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

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

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

Можно ли добавить кнопку без создания своей команды?

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

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

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

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

В палитре свойств команды откройте свойство «Картинка» и выберите изображение из общей картинки конфигурации или из стандартной библиотеки платформы. Затем у кнопки в свойстве «Отображение» укажите режим «Картинка» или «НадписьКартинка».

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

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

Можно ли назначить кнопке горячие клавиши?

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

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

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

Итог

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

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