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