В процессе доработки конфигураций 1С разработчики нередко сталкиваются с ситуацией, когда в модуле управляемой формы присутствует процедура-обработчик события (например, ИмяПроцедуры_НачалоВыбора), но визуально или по стандартному имени определить связанный с ней элемент управления невозможно. Это происходит, если разработчики переименовывали элементы, вручную назначали произвольные имена методам или форма содержит большое количество вложенных таблиц и полей ввода.
В классическом Конфигураторе 1С отсутствует прямая обратная навигация от процедуры в модуле к элементу на вкладке Элементы. Разберем несколько проверенных и эффективных способов быстро обнаружить эту связь или выявить неиспользуемый код.
Если конфигурацию можно запустить в режиме предприятия и воспроизвести действие пользователя, вызывающее данный метод, этот способ является самым быстрым и надежным. Рассмотрим его реализацию по шагам:
НачалоВыбора).НачалоВыбора всегда принимает первым параметром сам элемент управления:
&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Точка останова
ИмяЭлемента = Элемент.Имя;
КонецПроцедуры
Откроем табло отладчика или вычислим выражение Элемент.Имя. Переменная Элемент представляет собой объект платформы (например, ПолеФормы), а свойство Имя вернет точное наименование элемента управления на форме, который вызвал данный обработчик.
Когда запустить отладку невозможно или событие вызывается при редких условиях, выясним привязку прямо в Конфигураторе без полной выгрузки конфигурации. Разберем быстрый прием с буфером обмена:
В найденном блоке свойств мы сразу увидим и название события, и наименование самого элемента управления, которому это событие назначено.
Если форма имеет сложную архитектуру или предыдущие действия не дали результата, проанализируем структуру формы через выгрузку в XML-файлы:
Form.xml соответствующей формы.<Event name="StartChoice">ИмяПроцедуры</Event>), который вложен в тег конкретного элемента формы с указанием его имени в атрибуте name.Если разработка ведется в среде 1C:EDT, задача решается штатным инструментом сквозного поиска:
Нередко разработчики сталкиваются с ситуацией, когда поиск по элементам не дает никаких результатов. Выясним, почему это происходит. В платформе 1С при удалении элемента формы или очистке строки события в палитре свойств сама процедура из модуля формы автоматически не удаляется. Код остается в модуле, становясь неиспользуемым.
Чтобы быстро проверить форму на наличие неиспользуемых процедур, выполним следующие шаги:
Также учтем, что в конфигурациях с активными расширениями процедура может не иметь явной привязки в основной форме, но перехватываться директивами &Вместо, &Перед или &После из расширения, что тоже следует проверять при анализе логики работы формы.