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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подходит для действий над конкретным элементом или списком; получает параметр с ссылкой, но видна только в формах этого объекта.

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

Подходит для локального действия в одной форме; не отображается в дереве конфигурации и недоступна извне.

Создание общей команды

Откройте конфигуратор и в дереве конфигурации раскройте ветку «Общие». Найдите пункт «Общие команды», щёлкните по нему правой кнопкой мыши и выберите «Добавить». Откроется палитра свойств новой команды.

Задайте имя — оно используется в коде, поэтому пишется без пробелов, например ПоказатьОстаткиПоСкладам. Поле «Синоним» — это название, которое увидит пользователь на кнопке, например «Остатки по складам». При необходимости укажите картинку, подсказку и порядок отображения.

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

bsl
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ОткрытьФорму("Отчет.ОстаткиТоваров.Форма");
КонецПроцедуры

Создание команды у объекта метаданных

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

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

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

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

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

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

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

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

Обработчики: клиент и сервер

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

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

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

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

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

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

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

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

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

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

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

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

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

Вызов обработчика
Норма

Точка останова в обработчике срабатывает при нажатии

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

Отладчик не останавливается — кнопка не связана с командой

Работа с данными
Норма

Серверный код выполняется без ошибок прав доступа

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

Ошибка «Нарушение прав доступа» — у роли нет прав на используемые объекты

Ограничения и безопасная работа

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

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

FAQ

Почему созданная команда не отображается в форме списка?

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

Чем команда объекта отличается от команды формы?

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

Можно ли выполнить серверный код прямо из обработчика команды?

Напрямую в клиентском обработчике — нет. Вызовите серверную процедуру из общего модуля с флагом «Сервер» или из модуля менеджера объекта, передав нужные параметры. Это стандартный и безопасный шаблон.

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

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

Почему после изменений в режиме Предприятия всё по-старому?

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

Итог

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

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