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

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

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

Разбираем, как вызвать команду в 1С: через командный интерфейс, меню «Ещё», программно из кода и из внешних обработок. Примеры, ошибки и FAQ.

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

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

Что такое команда в 1С и какие они бывают

Прежде чем вызывать команду, полезно понимать её тип. В платформе 1С:Предприятие 8 команды делятся на несколько групп, и от типа зависит способ вызова.

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

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

Как вызвать команду из пользовательского интерфейса

Для обычной работы пользователю доступны три основных места вызова команд. Первое — командная панель формы: верхняя полоса с кнопками «Записать», «Провести», «Печать» и прикладными действиями. Второе — кнопка «Ещё» в той же панели: туда платформа прячет редко используемые команды, в том числе «Изменить форму», «Вывести список», команды печати и заполнения.

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

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

Если команды нет на видном месте

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

Как вызвать команду формы программно

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

bsl
&НаКлиенте
Процедура ОтправитьОтчет(Команда)
	ОтправитьОтчетНаСервере();
	ПоказатьОповещениеПользователя("Отчёт отправлен");
КонецПроцедуры

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

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

Чтобы вызвать команду из другого места кода — например, по событию или из другой команды — просто вызовите её процедуру-обработчик напрямую, передав параметр команды, либо вынесите логику в отдельную процедуру и вызывайте её из обоих мест. Второй вариант предпочтительнее: обработчик остаётся тонкой обёрткой.

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

Стандартные действия тоже вызываются программно, но не «командой», а соответствующими методами объекта: Записать(), Записать(РежимЗаписиДокумента.Проведение), УстановитьПометкуУдаления(). Если нужно воспроизвести поведение кнопки «Провести» — вызывайте запись с режимом проведения, а не ищите способ «нажать» команду интерфейса.

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

Способы вызова действия из кода

Вызов метода объекта (Записать, Провести)

Подходит для стандартных действий с данными. Надёжно, работает на сервере, обходит интерфейс полностью.

Вызов процедуры-обработчика команды

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

ОткрытьФорму / ПолучитьФорму

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

Выполнение внешней обработки

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

Вызов команды через консоль кода и внешние инструменты

Для разового запуска произвольного кода — по сути, вызова команды вручную — используют консоль кода (внешняя обработка, распространяемая в инструментах разработчика) или встроенную функцию «Выполнить произвольный код» в некоторых типовых инструментах администрирования. Это позволяет выполнить запрос, изменить данные или вызвать экспортную процедуру общего модуля без изменения конфигурации.

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

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

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

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

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

Документ после команды «Провести»
Норма

В списке появился признак проведения, движения видны в регистрах

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

Документ записан, но не проведён; в сообщениях текст ошибки проведения

Программный вызов серверной процедуры
Норма

Код отработал, данные изменились, сообщений об ошибке нет

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

Исключение в журнале регистрации или пустой результат

Команда в интерфейсе пользователя
Норма

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

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

Кнопки нет — проверяйте права, функциональные опции и настройки формы

FAQ по вызову команд в 1С

Можно ли вызвать команду 1С по горячим клавишам?

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

Как вызвать команду, которой нет в меню «Ещё» и на панели?

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

Как программно выполнить команду печати?

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

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

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

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

Напрямую «нажать кнопку» извне нельзя. Внешние системы взаимодействуют с 1С через HTTP-сервисы, веб-сервисы, планы обмена или COM/OData — то есть вызывают не команды интерфейса, а программные методы. Для разовых задач подойдёт запуск обработки через пакетный режим стартера 1С.

Почему команда работает у одного пользователя и не работает у другого?

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

Итог

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

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