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

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

Как открыть обработчик событий в 1С

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

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

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

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

Что такое обработчик события и где он находится

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

Например, событие «ПриОткрытии» формы обрабатывается в модуле формы, а событие «ОбработкаПроведения» документа — в модуле объекта документа. События, связанные с элементами формы (кнопки, поля ввода), также располагаются в модуле формы.

Как открыть обработчик через палитру свойств

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

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

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

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

Как открыть обработчик через модуль формы или объекта

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

Для модуля объекта: щелкните правой кнопкой по объекту (документу, справочнику) в дереве конфигурации и выберите «Открыть модуль объекта». Дальше используйте поиск: нажмите Ctrl+F и введите имя процедуры, например «ПриЗаписи» или «ОбработкаПроведения».

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

Как найти обработчик через подписки на события

Часть логики в типовых конфигурациях вынесена в подписки на события — они находятся в ветке «Общие» → «Подписки на события» дерева конфигурации. Подписка связывает событие (например, «ПриЗаписи») с процедурой в общем модуле.

Откройте подписку двойным щелчком, посмотрите её свойства: там указано событие, источник (типы объектов) и обработчик — имя процедуры вида «ИмяОбщегоМодуля.ИмяПроцедуры». Чтобы перейти к коду, откройте указанный общий модуль и найдите процедуру по имени.

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

Как открыть обработчик в режиме отладки

Когда непонятно, какой именно обработчик срабатывает, удобно использовать отладчик. Откройте конфигуратор, включите отладку (меню «Отладка» → «Начать отладку» или F5), затем в нужном модуле поставьте точку останова (F9) на предполагаемом обработчике.

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

Маршрут решения

Как выбрать способ поиска

Известен объект и элемент формыОткройте палитру свойств и вкладку «События»
Известно имя процедурыОткройте модуль и используйте поиск Ctrl+F
Код срабатывает, но в модуле объекта его нетПроверьте подписки на события и общие модули
Ничего неизвестно о расположении кодаИспользуйте замер производительности в отладке

Типичные ошибки при работе с обработчиками

Одна из частых ошибок — обработчик существует в модуле, но не привязан к событию. Это происходит, если процедуру переименовали вручную: в палитре свойств событие остаётся пустым, и платформа код не вызывает. Проверяйте соответствие имени процедуры значению в свойствах события.

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

Типичные ошибки
01
Переименование процедуры в модуле без обновления привязки в палитре свойств — событие перестаёт вызываться
02
Правка типового модуля без копии — изменения теряются при обновлении конфигурации
03
Поиск обработчика только в модуле объекта, когда логика вынесена в подписку на событие
04
Вызов серверной процедуры из клиентского контекста без нужной директивы — ошибка компиляции модуля

FAQ

Как быстро найти все обработчики формы?

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

Почему двойной щелчок по событию не открывает обработчик?

Если поле события в палитре свойств пустое, обработчик не назначен — двойной щелчок создаст новую процедуру. Если процедура существует, но не привязана, выберите её имя из выпадающего списка в поле события.

Как открыть обработчик события в расширении конфигурации?

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

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

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

Можно ли открыть обработчик в режиме «Предприятие»?

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

Что делать, если обработчик срабатывает дважды?

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

Итог

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

Обработчик события открывается через палитру свойств (вкладка «События»), напрямую из модуля формы или объекта либо через подписки на события. Для поиска неизвестного кода используйте отладку и замер производительности, а перед правками типовых модулей делайте копию базы.