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

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

Как вывести команду на форму 1С

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

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

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

Где создаются команды и почему кнопка не появляется сама

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

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

Вывод команды формы через конфигуратор

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

Далее нажмите кнопку с «лупой» у поля «Действие» — платформа создаст в модуле формы заготовку обработчика &НаКлиенте Процедура ПечатьАкта(Команда). Если логика требует серверного контекста, из клиентского обработчика вызовите серверную процедуру.

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

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

Вывод общей команды на форму

Общие команды живут в ветке «Общие» → «Общие команды» и доступны сразу нескольким объектам. Чтобы такая команда появилась на форме, откройте редактор формы, закладку «Команды» → «Глобальные команды» (или вкладку с общими командами — название зависит от версии платформы) и перетащите нужную команду в дерево элементов так же, как команду формы.

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

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

Команды объекта: печать, заполнение и стандартные механизмы

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

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

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

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

&НаСервере

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

НоваяКоманда = Команды.Добавить("ОтправитьПоПочте");

НоваяКоманда.Действие = "ОтправитьПоПочте";

НоваяКоманда.Заголовок = "Отправить по почте";

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

Кнопка.ИмяКоманды = "ОтправитьПоПочте";

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

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

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

Настройка внешнего вида и места размещения

У кнопки, связанной с командой, настраиваются положение в командной панели, отображение (картинка, надпись или оба варианта), важность и группировка. Свойство «Отображение» у самой команды задаёт поведение по умолчанию, но его можно переопределить у конкретной кнопки. Кнопки со свойством «Важность» = «Обычное» попадают в командную панель напрямую, остальные платформа может убрать в меню «Ещё» при нехватке места.

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

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

Команда формы

Нужна логика только в одной форме. Простое создание, но недоступна другим объектам.

Общая команда

Одно действие для нескольких объектов. Требует настройки типа параметра и командного интерфейса.

Команда объекта

Действие привязано к документу или справочнику и попадает в его формы через командный интерфейс.

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

Набор кнопок зависит от данных. Гибко, но код сложнее сопровождать и тестировать.

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

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

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

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

Наличие кнопки на форме
Норма

Кнопка видна в ожидаемом месте командной панели

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

Команда создана, но не перетащена в дерево элементов

Работа обработчика
Норма

Нажатие выполняет действие без сообщений об ошибке

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

Ошибка «Процедура не обнаружена» — имя в свойстве «Действие» не совпадает с процедурой модуля

Общая команда в списке формы
Норма

Команда доступна на закладке глобальных команд

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

Команды нет — не совпадает тип параметра команды с типом формы

Типичные ошибки
01
Команда создана на закладке «Команды», но не перетащена в дерево элементов — кнопка не появляется вообще
02
У кнопки не заполнено свойство «ИмяКоманды» — нажатие ничего не делает
03
Имя в свойстве «Действие» не совпадает с именем процедуры модуля — ошибка при нажатии
04
Серверная логика размещена в клиентском обработчике без вызова сервера — ошибки контекста в тонком клиенте
05
Дублирование кнопки вручную, когда подсистема БСП уже выводит такую же команду

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

Почему команда есть, а кнопки на форме нет?

Создание команды только объявляет действие. Перетащите команду из списка на закладке «Команды» в дерево элементов формы или добавьте кнопку вручную и укажите у неё свойство «ИмяКоманды».

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

Добавьте в дерево элементов элемент типа «Надпись» с видом «Гиперссылка» и свяжите его с командой через свойство «ИмяКоманды» — платформа отобразит команду как гиперссылку.

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

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

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

У таблицы формы есть собственная командная панель. Перетащите команду именно в неё, а не в общую командную панель формы — тогда кнопка появится над табличной частью.

Команда видна в толстом клиенте, но пропала в веб-клиенте. Что делать?

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

Как вывести команду на форму через расширение конфигурации?

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

Итог

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

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