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

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

Как открыть модуль команды в 1С

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

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

Чаще всего разработчику нужно попасть в модуль команды, чтобы изменить логику обработчика <ИмяКоманды>, добавить проверки перед выполнением действия или исправить ошибку. Важно понимать различие: у команды может быть модуль в контексте формы (команда формы) или отдельный модуль общей команды, и открываются они по-разному.

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

Что такое модуль команды и где он хранится

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

Физически модуль команды может располагаться в трёх местах:

  • Модуль общей команды — отдельный модуль у объекта «Общая команда» в дереве конфигурации;
  • Модуль формы — если команда создана в форме, её обработчик живёт в модуле этой формы;
  • Модуль менеджера или объекта — для стандартных команд некоторых объектов обработчики могут размещаться там.

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

Как открыть модуль общей команды

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

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

Если палитра свойств не отображается, включите её через меню «Правка» → «Свойства» или нажмите Alt+Enter, предварительно выделив команду в дереве.

После нажатия на лупу у свойства «Действие» платформа автоматически создаёт шаблон процедуры, если обработчика ещё нет:

&НаСервере

Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

// код обработчика

КонецПроцедуры

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

Как открыть модуль команды формы

Команды формы создаются в редакторе конкретной формы и видны только в её контексте. Это самый частый сценарий: кнопка «Печать», «Заполнить», «Пересчитать» и подобные.

Через палитру свойств команды

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

Через элемент формы (кнопку)

Альтернативный путь: выделите кнопку в дереве элементов формы, в её свойствах найдите свойство «ИмяКоманды» — там указано, какая команда привязана к кнопке. Зная имя, найдите команду на вкладке «Команды» и откройте её обработчик. Это удобно, когда кнопок много и непонятно, какая команда за какой элемент отвечает.

Шаблон обработчика команды формы выглядит так:

&НаКлиенте

Процедура ЗаполнитьДанные(Команда)

// код обработчика

КонецПроцедуры

Директива компиляции (&НаКлиенте, &НаСервере) выбирается в свойстве «Действие» при создании обработчика — платформа предлагает варианты в выпадающем списке.

Открытие модуля команды в обычных формах

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

Чтобы открыть обработчик: откройте форму, щёлкните правой кнопкой мыши по кнопке на макете формы, выберите «Свойства», найдите событие «Нажатие» (или «Действие») и нажмите лупу. Модуль формы откроется на нужной процедуре.

Если форма открывается в режиме диалога без визуального редактора, переключитесь на вкладку «Модуль» внизу окна редактора формы и найдите обработчик поиском по имени процедуры (Ctrl+F).

Что делать, если модуль команды не открывается

Иногда при нажатии на лупу ничего не происходит или открывается пустой модуль. Причины обычно следующие.

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

Как проверить, что обработчик работает

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

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

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

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

Выполняется ожидаемое действие без сообщений об ошибке

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

Ошибка «Процедура или функция не обнаружена» или молчание

Синтаксическая проверка модуля (Ctrl+Alt+F1 в модуле)
Норма

Ошибок не найдено

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

Конфигуратор указывает строку с ошибкой

Отладка (точка останова в обработчике)
Норма

Выполнение останавливается в обработчике при нажатии кнопки

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

Точка останова не срабатывает — команда не привязана к кнопке

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

Быстрый способ найти, где лежит обработчик кнопки в чужой конфигурации: в режиме предприятия не всегда доступно, поэтому в конфигураторе используйте глобальный поиск (Ctrl+Shift+F) по имени команды — найдутся и её объявление, и обработчик, и все привязки к элементам форм.
ПЗ
Практическое замечание

Часто задаваемые вопросы

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

Нет. Модули редактируются только в конфигураторе. В режиме предприятия можно лишь выполнять команды. Для отладки используйте запуск предприятия из конфигуратора с включённым отладчиком.

Почему у команды формы нет отдельного модуля?

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

Как открыть модуль команды в расширении конфигурации?

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

Что означает ошибка «Процедура или функция с указанным именем не определена» при нажатии кнопки?

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

Чем отличается «ОбработкаКоманды» от обычного обработчика команды формы?

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

Можно ли одной кнопке назначить несколько команд?

Нет, у элемента формы одно свойство «ИмяКоманды». Если нужно выполнить несколько действий, вызовите их последовательно внутри одного обработчика либо используйте подменю с несколькими кнопками.

Итог

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

Модуль общей команды открывается из ветки «Общие команды» через лупу у свойства «Действие»; обработчик команды формы находится в модуле самой формы и открывается из редактора формы. Перед правкой типовых объектов делайте копию базы и по возможности используйте расширения.