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

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

Как найти модуль в 1С: практическое руководство

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

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

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

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

Где вообще хранятся модули в структуре конфигурации

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

Модули существуют на нескольких уровнях. На верхнем уровне дерева находятся модуль управляемого приложения, модуль сеанса, модуль внешнего соединения и модуль обычного приложения — они раскрываются по правому клику на корневом узле с именем конфигурации. Общие модули лежат в ветке «Общие → Общие модули». А модули объектов, менеджеров и форм привязаны к конкретным объектам — например, к документу «РеализацияТоваровУслуг».

Как найти общий модуль по имени

Если известно имя общего модуля (например, из текста ошибки или из чужого кода вида ОбщегоНазначения.ЗначениеРеквизитаОбъекта()), откройте ветку «Общие → Общие модули» и прокрутите список — модули отсортированы по алфавиту. Двойной клик открывает текст модуля.

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

Если вы видите вызов модуля в коде, самый быстрый путь — поставить курсор на имя модуля или процедуры и нажать F12 («Перейти к определению»). Конфигуратор сам откроет нужный модуль и спозиционируется на процедуре.

Порядок действий
  1. 1
    Откройте конфигуратор и команду «Конфигурация → Открыть конфигурацию»
  2. 2
    Раскройте ветку «Общие → Общие модули»
  3. 3
    Найдите модуль по имени в алфавитном списке или через поиск по дереву
  4. 4
    Двойным кликом откройте текст модуля
  5. 5
    Для перехода из кода используйте F12 на имени модуля или процедуры

Как открыть модуль объекта, менеджера или формы

Модуль объекта содержит обработчики событий конкретного элемента данных: «ОбработкаПроведения», «ПередЗаписью» и другие. Чтобы его открыть, найдите объект в дереве (например, «Документы → РеализацияТоваровУслуг»), кликните правой кнопкой и выберите «Открыть модуль объекта». Модуль менеджера открывается аналогично — пункт «Открыть модуль менеджера».

Модуль формы привязан к конкретной форме объекта. Откройте объект, раскройте вложенную ветку «Формы», дважды кликните по нужной форме — откроется конструктор формы с закладками «Форма» и «Модуль» (или «Модуль» открывается отдельной командой). В модуле формы живут обработчики «ПриСозданииНаСервере», «ПриОткрытии» и клиентские процедуры.

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

Глобальный поиск по текстам модулей

Когда неизвестно, где находится процедура или фрагмент кода, используйте глобальный поиск: «Правка → Глобальный поиск по текстам» (Ctrl+Shift+F). Введите искомую строку — например, имя процедуры или фрагмент сообщения об ошибке — и запустите поиск по всей конфигурации.

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

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

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

Поиск модуля через отладчик и по тексту ошибки

Если нужно понять, какой модуль выполняется в конкретный момент, запустите отладку («Отладка → Начать отладку» или F5), поставьте точку останова на интересующем вызове и используйте «Шагнуть в» (F11) — отладчик откроет модуль, в который переходит выполнение. Стек вызовов (окно «Стек вызовов») покажет цепочку модулей и процедур, через которые пришло выполнение.

Текст ошибки тоже часто указывает модуль напрямую. В сообщениях платформа пишет что-то вроде «{ОбщийМодуль.ОбщегоНазначения.Модуль(1234)}: Ошибка при вызове метода контекста». Здесь указан тип модуля, его имя и номер строки — остаётся открыть модуль и перейти к строке (Ctrl+G в редакторе модуля).

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

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

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

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

Типичные ошибки при поиске модулей

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

Как проверить, что найден нужный модуль

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

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

Имя модуля в заголовке окна редактора
Норма

Совпадает с именем из вызова или текста ошибки

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

Открыт похожий по названию, но другой модуль (например, клиентский вместо серверного)

Наличие искомой процедуры
Норма

Процедура или функция с нужным именем и сигнатурой присутствует в тексте

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

Процедуры нет — возможно, она в другой версии конфигурации или в расширении

Контекст выполнения
Норма

Директивы и флаги модуля (Сервер, Клиент) соответствуют месту вызова

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

Модуль серверный, а вызов идёт из клиентского контекста без «Вызов сервера»

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

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

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

Можно ли найти и посмотреть модуль без конфигуратора?

Нет, штатно тексты модулей доступны только в конфигураторе. В режиме «Предприятие» код не отображается. Альтернатива — выгрузить конфигурацию в файлы (команда «Конфигурация → Выгрузить конфигурацию в файлы») и искать по полученным bsl-файлам любым текстовым редактором, но для самой выгрузки всё равно нужен конфигуратор.

Как найти, откуда вызывается конкретная процедура?

Откройте глобальный поиск (Ctrl+Shift+F), введите имя процедуры и включите поиск целого слова. Все места вызова появятся в результатах. Также можно поставить курсор на имя процедуры и воспользоваться поиском ссылок на неё, если версия платформы поддерживает эту функцию.

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

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

Как быстро перейти к нужной строке в большом модуле?

Используйте Ctrl+G («Перейти к строке») и введите номер — например, из текста ошибки. Также в редакторе модуля работает список процедур и функций (Ctrl+O в ряде версий или панель «Процедуры и функции»), который показывает оглавление модуля.

Где искать код, который срабатывает при записи документа?

В первую очередь — модуль объекта документа (обработчики «ПередЗаписью», «ПриЗаписи», «ОбработкаПроведения»). Затем проверьте подписки на события (ветка «Общие → Подписки на события»), отфильтровав по источнику «ДокументОбъект». Наконец, код может быть в расширении конфигурации с аннотацией «После» или «Вместо».

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

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

Итог

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

Модули ищутся в конфигураторе: общие — в ветке «Общие → Общие модули», объектные и формы — через правый клик по объекту, произвольный код — через глобальный поиск Ctrl+Shift+F или переход F12. Проверяйте расширения и подписки на события, если найденный модуль не выполняется, и всегда делайте копию перед правками рабочей конфигурации.