Разработка и Конфигурация · 9 мин
Как открыть модуль команды в 1С
Как открыть модуль команды в 1С через конфигуратор: где находится модуль, как найти команду формы или объекта, примеры кода обработчиков, типичные ошибки и FAQ.
Модуль команды в 1С — это место, где хранится код обработчика, выполняемый при нажатии кнопки или выборе пункта меню. Открыть его можно несколькими способами: через свойства команды в конфигураторе, из редактора формы или через дерево конфигурации. Выбор способа зависит от того, где создана команда — в общих командах, в объекте метаданных или непосредственно на форме.
Чаще всего разработчику нужно попасть в модуль команды, чтобы изменить логику обработчика <ИмяКоманды>, добавить проверки перед выполнением действия или исправить ошибку. Важно понимать различие: у команды может быть модуль в контексте формы (команда формы) или отдельный модуль общей команды, и открываются они по-разному.
Ниже разобраны все рабочие способы открытия модуля команды в конфигураторе 1С:Предприятие 8.3, особенности управляемых и обычных форм, а также типичные ошибки, из-за которых модуль «не находится».
Что такое модуль команды и где он хранится
Команда в 1С — это объект, который связывает действие пользователя (нажатие кнопки, выбор пункта меню) с программным кодом. Код хранится в модуле, а точка входа — процедура-обработчик, имя которой указано в свойстве «Действие» команды.
Физически модуль команды может располагаться в трёх местах:
- Модуль общей команды — отдельный модуль у объекта «Общая команда» в дереве конфигурации;
- Модуль формы — если команда создана в форме, её обработчик живёт в модуле этой формы;
- Модуль менеджера или объекта — для стандартных команд некоторых объектов обработчики могут размещаться там.
Понимание того, где лежит обработчик, экономит время: если вы ищете код кнопки в модуле формы, а команда оказалась общей, вы её там не найдёте.
Как открыть модуль общей команды
Общие команды находятся в ветке «Общие» → «Общие команды» дерева конфигурации. Такие команды используются, когда одно и то же действие нужно вызывать из разных форм и объектов.
- 1Откройте конфигуратор и загрузите конфигурацию (Конфигурация → Открыть конфигурацию)
- 2В дереве конфигурации разверните ветку «Общие» → «Общие команды»
- 3Дважды щёлкните по нужной команде или вызовите контекстное меню и выберите «Палитра свойств»
- 4В палитре свойств найдите событие «Действие» и нажмите кнопку с лупой рядом с ним
- 5Конфигуратор откроет модуль команды и установит курсор на шаблон обработчика
- 6Если обработчик уже существует — вы попадёте сразу в его код
Если палитра свойств не отображается, включите её через меню «Правка» → «Свойства» или нажмите Alt+Enter, предварительно выделив команду в дереве.
После нажатия на лупу у свойства «Действие» платформа автоматически создаёт шаблон процедуры, если обработчика ещё нет:
&НаСервере
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// код обработчика
КонецПроцедуры
Обратите внимание на сигнатуру: у общей команды обработчик называется ОбработкаКоманды и принимает два параметра — ссылку на объект (или массив ссылок) и параметры выполнения. Менять имена параметров не следует: платформа передаёт их позиционно.
Как открыть модуль команды формы
Команды формы создаются в редакторе конкретной формы и видны только в её контексте. Это самый частый сценарий: кнопка «Печать», «Заполнить», «Пересчитать» и подобные.
Через палитру свойств команды
Откройте форму нужного объекта: в дереве конфигурации найдите объект, разверните ветку «Формы» и дважды щёлкните по форме. В редакторе формы перейдите на вкладку «Команды» (в управляемой форме это панель рядом с деревом элементов). Выделите нужную команду, откройте её свойства и нажмите лупу у события «Действие». Откроется модуль формы с обработчиком.
Через элемент формы (кнопку)
Альтернативный путь: выделите кнопку в дереве элементов формы, в её свойствах найдите свойство «ИмяКоманды» — там указано, какая команда привязана к кнопке. Зная имя, найдите команду на вкладке «Команды» и откройте её обработчик. Это удобно, когда кнопок много и непонятно, какая команда за какой элемент отвечает.
Шаблон обработчика команды формы выглядит так:
&НаКлиенте
Процедура ЗаполнитьДанные(Команда)
// код обработчика
КонецПроцедуры
Директива компиляции (&НаКлиенте, &НаСервере) выбирается в свойстве «Действие» при создании обработчика — платформа предлагает варианты в выпадающем списке.
Открытие модуля команды в обычных формах
В обычных (неуправляемых) формах логика та же, но интерфейс конфигуратора отличается. Команды здесь чаще всего привязаны к кнопкам командных панелей напрямую.
Чтобы открыть обработчик: откройте форму, щёлкните правой кнопкой мыши по кнопке на макете формы, выберите «Свойства», найдите событие «Нажатие» (или «Действие») и нажмите лупу. Модуль формы откроется на нужной процедуре.
Если форма открывается в режиме диалога без визуального редактора, переключитесь на вкладку «Модуль» внизу окна редактора формы и найдите обработчик поиском по имени процедуры (Ctrl+F).
Что делать, если модуль команды не открывается
Иногда при нажатии на лупу ничего не происходит или открывается пустой модуль. Причины обычно следующие.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Лупа неактивна | Конфигурация закрыта или открыта только для чтения | Откройте конфигурацию; проверьте, что объект не на поддержке без возможности изменения |
| Открывается пустой модуль | Обработчик ещё не создан | Это нормально: платформа создаст шаблон после выбора директивы компиляции |
| Обработчик есть, но код не выполняется | Директива не соответствует контексту вызова | Проверьте, что клиентский обработчик не вызывает серверные методы напрямую |
| Команды нет в списке | Команда общая, а ищется среди команд формы | Проверьте ветку «Общие команды» в дереве конфигурации |
Как проверить, что обработчик работает
После открытия и редактирования модуля команды проверьте результат до выкладки пользователям. Обновите конфигурацию базы данных (F7), запустите режим предприятия и нажмите кнопку, связанную с командой.
Как проверить результат
Выполняется ожидаемое действие без сообщений об ошибке
Ошибка «Процедура или функция не обнаружена» или молчание
Ошибок не найдено
Конфигуратор указывает строку с ошибкой
Выполнение останавливается в обработчике при нажатии кнопки
Точка останова не срабатывает — команда не привязана к кнопке
Если точка останова не срабатывает, первым делом проверьте свойство «ИмяКоманды» у кнопки: оно должно точно совпадать с именем команды. Вторая частая причина — кнопка вообще не выведена на форму или находится в невидимой группе.
Быстрый способ найти, где лежит обработчик кнопки в чужой конфигурации: в режиме предприятия не всегда доступно, поэтому в конфигураторе используйте глобальный поиск (Ctrl+Shift+F) по имени команды — найдутся и её объявление, и обработчик, и все привязки к элементам форм.
Часто задаваемые вопросы
Можно ли открыть модуль команды в режиме 1С:Предприятие?
Нет. Модули редактируются только в конфигураторе. В режиме предприятия можно лишь выполнять команды. Для отладки используйте запуск предприятия из конфигуратора с включённым отладчиком.
Почему у команды формы нет отдельного модуля?
Так устроена платформа: команды формы не имеют собственного модуля, их обработчики хранятся в модуле той формы, где команда создана. Отдельный модуль есть только у общих команд.
Как открыть модуль команды в расширении конфигурации?
Точно так же, как в основной конфигурации: откройте дерево расширения, найдите добавленную или заимствованную команду и нажмите лупу у свойства «Действие». Обработчик заимствованной команды создаётся в модуле формы расширения с постфиксом, который задаёт разработчик.
Что означает ошибка «Процедура или функция с указанным именем не определена» при нажатии кнопки?
В свойстве «Действие» команды указано имя обработчика, которого нет в модуле, либо процедура удалена или переименована. Откройте свойства команды, очистите и заново выберите обработчик через лупу — платформа создаст корректный шаблон.
Чем отличается «ОбработкаКоманды» от обычного обработчика команды формы?
ОбработкаКоманды — стандартное имя обработчика общей команды с фиксированными параметрами (параметр команды и параметры выполнения). Обработчик команды формы называется произвольно и принимает один параметр — саму команду.
Можно ли одной кнопке назначить несколько команд?
Нет, у элемента формы одно свойство «ИмяКоманды». Если нужно выполнить несколько действий, вызовите их последовательно внутри одного обработчика либо используйте подменю с несколькими кнопками.
Что важно запомнить
Модуль общей команды открывается из ветки «Общие команды» через лупу у свойства «Действие»; обработчик команды формы находится в модуле самой формы и открывается из редактора формы. Перед правкой типовых объектов делайте копию базы и по возможности используйте расширения.