Как в управляемой форме 1С найти элемент, к которому привязана процедура-обработчик?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе доработки конфигураций 1С разработчики нередко сталкиваются с ситуацией, когда в модуле управляемой формы присутствует процедура-обработчик события (например, ИмяПроцедуры_НачалоВыбора), но визуально или по стандартному имени определить связанный с ней элемент управления невозможно. Это происходит, если разработчики переименовывали элементы, вручную назначали произвольные имена методам или форма содержит большое количество вложенных таблиц и полей ввода.

В классическом Конфигураторе 1С отсутствует прямая обратная навигация от процедуры в модуле к элементу на вкладке Элементы. Разберем несколько проверенных и эффективных способов быстро обнаружить эту связь или выявить неиспользуемый код.

Способ 1. Использование точки останова в режиме отладки

Если конфигурацию можно запустить в режиме предприятия и воспроизвести действие пользователя, вызывающее данный метод, этот способ является самым быстрым и надежным. Рассмотрим его реализацию по шагам:

  1. Откроем модуль формы в Конфигураторе и установим точку останова на первой исполняемой строке внутри интересующей нас процедуры (например, события НачалоВыбора).
  2. Запустим сеанс «1С:Предприятие» с включенной отладкой и откроем исследуемую форму.
  3. Выполним интерактивное действие в форме, которое приводит к срабатыванию события (нажатие кнопки выбора в поле).
  4. После остановки платформы на точке останова обратим внимание на параметры процедуры. Обработчик события НачалоВыбора всегда принимает первым параметром сам элемент управления:

&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Точка останова
    ИмяЭлемента = Элемент.Имя;
КонецПроцедуры

Откроем табло отладчика или вычислим выражение Элемент.Имя. Переменная Элемент представляет собой объект платформы (например, ПолеФормы), а свойство Имя вернет точное наименование элемента управления на форме, который вызвал данный обработчик.

Способ 2. Копирование дерева элементов через буфер обмена

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

  1. Откроем редактор нужной управляемой формы и перейдем на вкладку Элементы.
  2. Выделим корневой элемент дерева элементов формы и нажмем комбинацию клавиш Ctrl+A, чтобы выделить абсолютно все элементы формы.
  3. Скопируем выделенное дерево в буфер обмена с помощью комбинации клавиш Ctrl+C.
  4. Откроем любой текстовый редактор (Notepad++, VS Code или встроенный текстовый документ 1С) и вставим содержимое буфера через Ctrl+V.
  5. Платформа сериализует дерево элементов в текстовую структуру. Теперь воспользуемся стандартным текстовым поиском (Ctrl+F) и выполним поиск по имени нашей процедуры.

В найденном блоке свойств мы сразу увидим и название события, и наименование самого элемента управления, которому это событие назначено.

Способ 3. Выгрузка формы или конфигурации в XML

Если форма имеет сложную архитектуру или предыдущие действия не дали результата, проанализируем структуру формы через выгрузку в XML-файлы:

  1. Если объект выгружен в файлы (например, через команду Выгрузить конфигурацию в файлы), найдем каталог нужного объекта метаданных и откроем файл Form.xml соответствующей формы.
  2. С помощью текстового поиска найдем имя интересующей нас процедуры.
  3. В XML-разметке имя метода будет указано в узле события (например, внутри тега <Event name="StartChoice">ИмяПроцедуры</Event>), который вложен в тег конкретного элемента формы с указанием его имени в атрибуте name.

Способ 4. Поиск ссылок в 1C:Enterprise Development Tools (1C:EDT)

Если разработка ведется в среде 1C:EDT, задача решается штатным инструментом сквозного поиска:

  1. Выделим имя процедуры в модуле формы.
  2. Вызовем контекстное меню и выберем команду Найти ссылки в рабочей области (Find References) или нажмем комбинацию Ctrl+Shift+G.
  3. Среда EDT выполнит глубокий анализ модели и выведет список всех мест использования, включая свойства элементов визуального интерфейса формы.

Возможная причина проблемы: неиспользуемый («висячий») код

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

Чтобы быстро проверить форму на наличие неиспользуемых процедур, выполним следующие шаги:

  1. В главном меню Конфигуратора перейдем в раздел Конфигурация — Проверка конфигурации.
  2. Установим флаг Поиск неиспользуемых процедур и функций.
  3. Запустим проверку. Если процедура не привязана ни к одному элементу формы и не вызывается из других методов модуля, платформа явно укажет на отсутствие вызовов. В таком случае процедуру можно безопасно удалить или оставить в качестве заготовки.

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

← На главную