Разработка и Конфигурация · 9 мин
Где найти процедуры и функции в 1С
Где искать процедуры и функции в 1С: модули объектов, общие модули, контекстный поиск, синтакс-помощник и отладчик. Практическая инструкция для разработчика.
Найти процедуру или функцию в конфигурации 1С — типовая задача разработчика: нужно понять, где объявлен метод, как он работает и откуда вызывается. В типовых конфигурациях тысячи модулей, поэтому без системного подхода поиск превращается в рутину. На деле достаточно знать несколько точек входа: структуру модулей в конфигураторе, механизмы поиска и встроенную справку.
Процедуры и функции в 1С хранятся не в отдельных файлах, а внутри модулей, привязанных к объектам метаданных: справочникам, документам, отчётам, обработкам, формам. Дополнительно существуют общие модули — централизованные библиотеки кода, доступные из любого места конфигурации. Понимание этой структуры сокращает поиск с десятков минут до нескольких секунд.
Ниже разобраны все рабочие способы: от просмотра дерева конфигурации до контекстного поиска по всей кодовой базе, работы с синтакс-помощником и поиска мест вызова конкретного метода. Материал применим и к обычному, и к управляемому приложению.
Где физически хранятся процедуры и функции в конфигурации
Весь программный код конфигурации распределён по модулям. У каждого объекта метаданных может быть несколько модулей: модуль объекта, модуль менеджера, модуль формы, модуль команды. Код в модуле объекта выполняется в контексте конкретного экземпляра (например, записываемого документа), а код модуля менеджера — в контексте типа в целом.
Отдельно стоят общие модули — ветка «Общие» → «Общие модули» в дереве конфигурации. Именно там в типовых решениях сосредоточена большая часть прикладной логики: расчёты, проверки, работа со строками и датами. Если вы ищете функцию вида ОбщегоНазначения.ЗначениеРеквизитаОбъекта(), первая часть имени — это как раз имя общего модуля.
Ещё есть модуль приложения (управляемого или обычного), модуль внешнего соединения и модуль сеанса — они находятся в корне дерева конфигурации, ветка «Общие». Там обычно логика запуска и инициализации, а не прикладные функции.
Как открыть модуль объекта и найти в нём метод
Самый прямой путь — через дерево конфигурации. Откройте конфигуратор, раскройте нужную ветку (например, «Документы»), выделите объект и нажмите правую кнопку мыши. В контекстном меню доступны пункты «Модуль объекта», «Модуль менеджера», а для форм — сначала открытие формы, затем вкладка «Модуль» внизу окна редактора.
Когда модуль открыт, ориентироваться помогает выпадающий список процедур и функций в верхней части окна редактора кода — он показывает все методы текущего модуля в порядке их объявления. Клик по имени мгновенно прокручивает код к нужному месту.
Дополнительно работают стандартные приёмы: Ctrl+F — поиск по текущему модулю, кнопки сворачивания блоков у заголовков процедур — чтобы убрать лишний код и увидеть структуру модуля целиком.
- 1Откройте конфигуратор и загрузите конфигурацию
- 2В дереве метаданных найдите нужный объект (справочник, документ, отчёт)
- 3Щёлкните правой кнопкой и выберите «Модуль объекта» или «Модуль менеджера»
- 4В открывшемся редакторе используйте выпадающий список методов вверху окна
- 5Для формы: откройте форму объекта и перейдите на вкладку «Модуль»
Глобальный поиск по всей конфигурации
Когда неизвестно, в каком модуле объявлена функция, используйте глобальный поиск: меню «Правка» → «Глобальный поиск» или сочетание Ctrl+Shift+F. Введите имя метода (или его часть), укажите область поиска — вся конфигурация — и запустите. Результат покажет все модули, где встречается строка: и объявления, и вызовы.
Чтобы сузить выдачу, ищите имя вместе с ключевым словом: Функция РассчитатьСкидку найдёт именно объявление, а не сотни вызовов. Также полезны опции «Учитывать регистр» (отключите, если не уверены в написании) и «Слово целиком» (включите, чтобы отсечь похожие имена).
Двойной клик по строке результата открывает модуль на нужной строке. Это основной рабочий инструмент при анализе чужой или типовой конфигурации.
Переход к определению и поиск вызовов метода
Если курсор стоит на имени функции в коде, нажмите F12 (или правый клик → «Перейти к определению»). Конфигуратор откроет модуль, где метод объявлен, даже если это общий модуль из другой ветки дерева. Это самый быстрый способ проверить, что делает вызываемая функция.
Обратная задача — найти все места, откуда метод вызывается. Выделите имя метода и выполните глобальный поиск, либо используйте команду «Найти использование» (в новых версиях платформы доступна из контекстного меню). Это критично перед переименованием или удалением процедуры: удалённый экспортный метод сломает все модули, которые его вызывают.
В редакторе кода также работает контекстная подсказка: начните вводить имя общего модуля, поставьте точку — и платформа покажет список его экспортных процедур и функций с сигнатурами параметров.
Синтакс-помощник: где искать встроенные функции платформы
Не всё, что выглядит как функция, написано разработчиками конфигурации. Методы вроде НайтиПоКоду(), СтрНайти(), ТекущаяДатаСеанса() — это встроенный язык платформы. Их описание ищите не в модулях, а в синтакс-помощнике: меню «Справка» → «Синтакс-помощник» или Ctrl+Shift+F1.
Синтакс-помощник содержит дерево всех объектов, методов и свойств платформы с описанием параметров, возвращаемых значений и примерами. Если курсор в редакторе стоит на встроенном методе, достаточно нажать Ctrl+F1 — откроется справка именно по этому методу.
Признак того, что метод встроенный: переход к определению по F12 не срабатывает, а глобальный поиск по конфигурации не находит объявления. В этой ситуации не тратьте время на поиск по модулям — сразу открывайте синтакс-помощник.
Отладчик как способ найти исполняемый код
Когда непонятно, какой код вообще выполняется при нажатии кнопки или записи документа, помогает отладка. Поставьте точку останова на предполагаемом обработчике, запустите отладку (F5) и выполните действие в режиме предприятия. Если точка не сработала — код находится в другом месте.
Универсальный приём: включите в конфигураторе «Отладка» → «Остановка по ошибке», либо используйте замер производительности («Отладка» → «Замер производительности»). Замер после выполнения действия покажет полный список вызванных процедур и функций с указанием модулей и строк — фактически готовую карту исполняемого кода.
Стек вызовов во время остановки (окно «Стек вызовов») показывает цепочку: какая процедура вызвала текущую, откуда вызвана она, и так до обработчика события формы. Это незаменимо при разборе глубоко вложенной логики типовых конфигураций.
Как выбрать способ поиска
Частые вопросы
Почему F12 не переходит к определению функции?
Чаще всего это встроенный метод платформы — у него нет объявления в модулях конфигурации, описание смотрите в синтакс-помощнике. Вторая причина — динамический вызов через Выполнить() или имя, собранное строкой: платформа не может статически определить цель перехода.
Как найти все процедуры формы?
Откройте форму объекта в конфигураторе и перейдите на вкладку «Модуль». Выпадающий список в верхней части редактора покажет все методы формы. Обработчики событий элементов формы также видны в палитре свойств элемента на вкладке «События» — оттуда можно перейти к коду кнопкой с лупой.
Где искать код, который выполняется при записи документа?
В модуле объекта документа — обработчики ПередЗаписью, ПриЗаписи, ОбработкаПроведения. Дополнительно проверьте подписки на события (ветка «Общие» → «Подписки на события»): типовые конфигурации часто выносят логику туда, и в модуле самого документа её не будет.
Чем отличается процедура от функции в 1С?
Функция возвращает значение через оператор Возврат и может использоваться в выражениях. Процедура ничего не возвращает и вызывается отдельным оператором. В остальном они объявляются и ищутся одинаково — в модулях объектов, форм и общих модулях.
Как найти метод, если конфигурация на поддержке и модули закрыты?
Некоторые модули типовых конфигураций поставляются без исходного текста (парольная защита). Такой код прочитать нельзя — остаётся изучать поведение через отладку и документацию вендора. Большинство прикладных модулей в типовых решениях всё же открыты.
Есть ли поиск процедур в режиме Предприятия без конфигуратора?
Полноценного поиска по коду нет — для этого нужен конфигуратор. В режиме предприятия можно лишь косвенно определить логику через внешние инструменты (консоль кода, отчёты по структуре метаданных), но объявления и тела методов доступны только в конфигураторе.
Что важно запомнить
Код 1С живёт в модулях объектов, форм и общих модулях. Основные инструменты поиска: глобальный поиск Ctrl+Shift+F, переход к определению F12, синтакс-помощник для встроенных методов и отладчик с замером производительности для неочевидной логики. Перед изменением экспортного метода всегда проверяйте места его вызова.