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

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

Где найти процедуры и функции в 1С

Где искать процедуры и функции в 1С: модули объектов, общие модули, контекстный поиск, синтакс-помощник и отладчик. Практическая инструкция для разработчика.

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

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

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

Где физически хранятся процедуры и функции в конфигурации

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

Отдельно стоят общие модули — ветка «Общие» → «Общие модули» в дереве конфигурации. Именно там в типовых решениях сосредоточена большая часть прикладной логики: расчёты, проверки, работа со строками и датами. Если вы ищете функцию вида ОбщегоНазначения.ЗначениеРеквизитаОбъекта(), первая часть имени — это как раз имя общего модуля.

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

Как открыть модуль объекта и найти в нём метод

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

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

Дополнительно работают стандартные приёмы: Ctrl+F — поиск по текущему модулю, кнопки сворачивания блоков у заголовков процедур — чтобы убрать лишний код и увидеть структуру модуля целиком.

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

Глобальный поиск по всей конфигурации

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

Чтобы сузить выдачу, ищите имя вместе с ключевым словом: Функция РассчитатьСкидку найдёт именно объявление, а не сотни вызовов. Также полезны опции «Учитывать регистр» (отключите, если не уверены в написании) и «Слово целиком» (включите, чтобы отсечь похожие имена).

Двойной клик по строке результата открывает модуль на нужной строке. Это основной рабочий инструмент при анализе чужой или типовой конфигурации.

Переход к определению и поиск вызовов метода

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

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

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

Синтакс-помощник: где искать встроенные функции платформы

Не всё, что выглядит как функция, написано разработчиками конфигурации. Методы вроде НайтиПоКоду(), СтрНайти(), ТекущаяДатаСеанса() — это встроенный язык платформы. Их описание ищите не в модулях, а в синтакс-помощнике: меню «Справка» → «Синтакс-помощник» или Ctrl+Shift+F1.

Синтакс-помощник содержит дерево всех объектов, методов и свойств платформы с описанием параметров, возвращаемых значений и примерами. Если курсор в редакторе стоит на встроенном методе, достаточно нажать Ctrl+F1 — откроется справка именно по этому методу.

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

Типичные ошибки при поиске
01
Искать встроенный метод платформы глобальным поиском по конфигурации — объявления там нет, нужен синтакс-помощник
02
Путать модуль объекта и модуль менеджера — одноимённые процедуры в них разные, и вызов идёт в разном контексте
03
Искать функцию по имени без учёта префикса общего модуля — в вызове ОбщегоНазначения.Метод() искать надо «Метод» в модуле «ОбщегоНазначения»
04
Забывать про подсистемы и фильтры дерева конфигурации — если включён отбор по подсистеме, часть общих модулей просто не видна

Отладчик как способ найти исполняемый код

Когда непонятно, какой код вообще выполняется при нажатии кнопки или записи документа, помогает отладка. Поставьте точку останова на предполагаемом обработчике, запустите отладку (F5) и выполните действие в режиме предприятия. Если точка не сработала — код находится в другом месте.

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

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

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

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

Известно имя метода, но неизвестен модульГлобальный поиск Ctrl+Shift+F по всей конфигурации
Курсор стоит на вызове метода в кодеF12 — переход к определению
Метод похож на встроенный (СтрНайти, НайтиПоКоду)Синтакс-помощник Ctrl+Shift+F1
Непонятно, какой код выполняется при действии пользователяОтладка с точкой останова или замер производительности
Нужно проверить, где используется метод перед удалениемГлобальный поиск по имени метода во всех модулях

Частые вопросы

Почему F12 не переходит к определению функции?

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

Как найти все процедуры формы?

Откройте форму объекта в конфигураторе и перейдите на вкладку «Модуль». Выпадающий список в верхней части редактора покажет все методы формы. Обработчики событий элементов формы также видны в палитре свойств элемента на вкладке «События» — оттуда можно перейти к коду кнопкой с лупой.

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

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

Чем отличается процедура от функции в 1С?

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

Как найти метод, если конфигурация на поддержке и модули закрыты?

Некоторые модули типовых конфигураций поставляются без исходного текста (парольная защита). Такой код прочитать нельзя — остаётся изучать поведение через отладку и документацию вендора. Большинство прикладных модулей в типовых решениях всё же открыты.

Есть ли поиск процедур в режиме Предприятия без конфигуратора?

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

Итог

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

Код 1С живёт в модулях объектов, форм и общих модулях. Основные инструменты поиска: глобальный поиск Ctrl+Shift+F, переход к определению F12, синтакс-помощник для встроенных методов и отладчик с замером производительности для неочевидной логики. Перед изменением экспортного метода всегда проверяйте места его вызова.