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

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

Как добавить команду объекта на форму 1С

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

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

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

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

Где в конфигураторе создаются команды объекта

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

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

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

Добавление команды на форму объекта вручную

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

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

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

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

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

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

1c
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НоваяКоманда = Команды.Добавить("ЗаполнитьПоОстаткам");
    НоваяКоманда.Действие = "ЗаполнитьПоОстаткамНажатие";
    НоваяКоманда.Заголовок = "Заполнить по остаткам";

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

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

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

Добавление команды через расширение конфигурации

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

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

Способы добавления команды

Команда в метаданных объекта

Подходит для стандартных действий над объектом; автоматически попадает в командный интерфейс. Ограничение — требует изменения конфигурации.

Команда формы вручную

Полный контроль над расположением и обработчиком конкретной формы. Не видна вне этой формы.

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

Гибкость по условиям и ролям. Код сложнее сопровождать, элементы живут только в сеансе формы.

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

Единственный безопасный вариант для типовых на поддержке. Требует совместимости режима расширения с версией платформы.

Типовые команды: печать и ввод на основании

Многие команды объекта появляются на форме не из метаданных самого объекта, а из подсистем. Команды печати подключаются через подсистему «Печать» библиотеки стандартных подсистем: объект включается в определяемый тип, в модуле менеджера описываются печатные формы, и команды выводятся в подменю «Печать» автоматически.

Команда ввода на основании настраивается в свойствах объекта: у документа-основания в поле «Вводится на основании» перечисляются объекты, а у результирующего документа — «Является основанием для». Платформа сама добавляет команду создания на основании в форму и в меню «Создать на основании».

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

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

Если кнопка не появилась, последовательно проверьте: обновлена ли конфигурация БД, перетащена ли команда в дерево элементов формы, не скрыта ли она функциональной опцией или правами, не перекрыта ли видимость в командном интерфейсе формы.

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

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

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

Кнопка видна в командной панели с заданным заголовком

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

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

Выполнение обработчика
Норма

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

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

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

Поведение у других пользователей
Норма

Команда доступна согласно ролям

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

У пользователя без прав кнопка активна или наоборот

FAQ

Как добавить команду на форму списка, а не форму объекта?

Откройте форму списка объекта в конфигураторе и добавьте команду формы или перетащите команду объекта в командную панель списка. Для команд, работающих с выделенными строками, используйте таблицу списка как источник данных и получайте текущую строку через Элементы.Список.ТекущиеДанные или выделенные строки.

Почему команда видна в «Ещё», но не на командной панели?

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

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

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

Как передать в обработчик команды ссылку на текущий объект?

В команде формы ссылка доступна через реквизит формы (например, Объект.Ссылка). Для команды объекта в метаданных настройте режим использования параметра — ссылка придёт в обработчик как параметр команды.

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

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

Команда недоступна (серая) у части пользователей. Что проверить?

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

Итог

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

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