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