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

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

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

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

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

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

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

Где создаётся кнопка: конфигуратор или программный код

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

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

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

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

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

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

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

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

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

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

Размещение кнопки в командной панели и группах

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

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

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

Программное создание кнопки в модуле формы

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

&НаСервере

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

// 1. Добавляем команду

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

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

НоваяКоманда.Заголовок = "Показать остатки";

// 2. Добавляем кнопку в командную панель формы

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

НоваяКнопка.ИмяКоманды = "ПоказатьОстатки";

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

&НаКлиенте

Процедура Подключаемый_ПоказатьОстатки(Команда)

// Действие кнопки

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

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

Кнопки для обычных форм

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

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

Управляемая и обычная форма

Управляемая форма

Кнопка всегда связана с командой формы; размещение через дерево элементов; платформа сама управляет компоновкой

Обычная форма

Кнопка размещается визуально с точными координатами; действие привязывается напрямую к процедуре модуля

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

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

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

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

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

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

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

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

Кнопки нет ни в панели, ни в меню «Ещё»

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

Выполняется обработчик без ошибок

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

Ошибка «Процедура не определена» или отсутствие реакции

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

Кнопка работает под обычным пользователем

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

Ошибка нарушения прав доступа

Изменение типовых форм и расширения

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

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

Итог

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

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

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

Почему кнопка видна в конфигураторе, но не отображается в режиме предприятия?

Чаще всего конфигурация базы данных не обновлена: после сохранения изменений нужно выполнить обновление конфигурации базы данных (F7). Также проверьте свойство «ТолькоВоВсехДействиях» и меню «Ещё» — кнопка могла уйти туда из-за переполненной командной панели.

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

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

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

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

Чем кнопка отличается от гиперссылки на форме?

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

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

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

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

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