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

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

Как создать команду в 1С: полное руководство

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

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

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

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

Какие бывают команды в 1С и что выбрать

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

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

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

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

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

Обратите внимание: пока команду не перетащили в дерево элементов, кнопки на форме не будет, даже если обработчик написан. Это самая частая причина вопроса «создал команду, а её нет».

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

Обработчик команды: клиент, сервер, директивы

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

  • &НаКлиенте — выполняется на компьютере пользователя. Доступен интерфейс, но нет прямого доступа к базе данных и запросам.
  • &НаСервере — выполняется на сервере, можно использовать запросы и обращение к данным, но недоступны интерактивные действия (вопросы пользователю, открытие форм).
  • &НаКлиентеНаСервереБезКонтекста — универсальные процедуры без обращения к данным формы.

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

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

&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
	// запрос к остаткам и заполнение табличной части
КонецПроцедуры

Не размещайте запросы и обращения к базе в клиентском обработчике — в тонком и веб-клиенте это приведёт к ошибке компиляции модуля. Платформа проверяет директивы на этапе сохранения и укажет на конфликт.

Команды объекта конфигурации и глобальные команды

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

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

Глобальные (общие) команды создаются в ветке «Общие» → «Общие команды». Они не привязаны к объекту и подходят для действий уровня всей системы: открыть обработку настройки, запустить обмен данными. Такие команды выводятся в командный интерфейс разделов через настройку состава подсистем.

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

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

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

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

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

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

Подходит для глобальных действий без привязки к данным. Ограничение: не получает автоматически контекст текущего объекта.

Настройка внешнего вида: заголовок, картинка, горячие клавиши

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

Свойство «Сочетание клавиш» позволяет назначить горячие клавиши, например Ctrl+D. Проверяйте, что выбранное сочетание не пересекается со стандартными командами платформы и браузера (для веб-клиента), иначе команда будет срабатывать нестабильно.

Свойство «Отображение» у кнопки определяет, показывать ли надпись, картинку или оба элемента. В командной панели формы принято выводить важные действия кнопками с картинкой и текстом, второстепенные — прятать в «Ещё» только с текстом.

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

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

После создания команды проверьте результат по контрольным точкам.

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

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

Кнопка на форме
Норма

Кнопка видна, заголовок соответствует задуманному

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

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

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

Обработчик выполняется, данные изменяются

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

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

Клиент-серверное взаимодействие
Норма

Серверный код вызывается из клиентского обработчика

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

Ошибка компиляции при обращении к запросу из &НаКлиенте

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

Команда доступна пользователям с нужной ролью

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

Команда недоступна — проверьте роли на объект и команду

Типичные ошибки и ограничения

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

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

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

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

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

Почему кнопка команды серая и не нажимается?

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

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

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

Как добавить команду в типовую конфигурацию, не снимая её с поддержки?

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

Чем отличается команда от кнопки в 1С?

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

Как назначить команде горячие клавиши?

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

Итог

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

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