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