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

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

Где найти код в 1С: практическое руководство по поиску

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

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

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

Ниже разобраны основные способы: от глобального поиска по всей конфигурации до поиска мест вызова конкретной процедуры и работы с кодом в расширениях. Материал ориентирован на платформу 1С:Предприятие 8.3.

Где физически хранится код в 1С

Программный код в 1С не существует в виде отдельных файлов с расширением, доступным для просмотра в проводнике. Он хранится внутри информационной базы (в файле 1Cv8.1CD для файлового варианта) и в файле конфигурации 1Cv8.cf, если конфигурация выгружена. Редактировать и просматривать код можно только через конфигуратор или встроенные механизмы платформы.

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

Как открыть конфигуратор и получить доступ к коду

Чтобы увидеть код, запустите конфигуратор: в ярлыке 1С выберите информационную базу и нажмите «Конфигуратор» вместо «1С:Предприятие». После входа откройте дерево конфигурации через меню «Конфигурация → Открыть конфигурацию». Если пункт неактивен — конфигурация уже открыта или база работает в режиме поддержки с ограничениями.

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

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

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

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

Порядок глобального поиска
  1. 1
    Откройте конфигурацию в конфигураторе
  2. 2
    Нажмите Ctrl+Shift+F и введите искомый текст (имя процедуры, фрагмент сообщения)
  3. 3
    Укажите область поиска: вся конфигурация или выбранные объекты
  4. 4
    Дважды щёлкните по строке результата, чтобы перейти к коду
  5. 5
    Сохраните результаты поиска, если планируете вернуться к ним

Поиск процедур, функций и мест их вызова

Если вы нашли процедуру и хотите понять, откуда она вызывается, установите курсор на её имя, нажмите правую кнопку мыши и выберите «Найти использование» (в некоторых версиях — «Поиск ссылок на объект»). Платформа покажет все места вызова по конфигурации. Обратная операция — «Перейти к определению» (F12 или Ctrl+клик по имени) — позволяет из места вызова мгновенно попасть в тело процедуры, даже если она находится в другом общем модуле.

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

В типовых конфигурациях (БП, УТ, ERP) большинство прикладной логики вынесено в общие модули с говорящими именами: РасчетСебестоимости, Ценообразование, ПроведениеДокументов. Если ищете логику конкретной операции, начинайте с общих модулей, чьи имена совпадают с предметной областью задачи.
ПЗ
Практическое замечание

Как найти код, отвечающий за конкретное действие в программе

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

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

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

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

Действие происходит при нажатии кнопки на формеИщите обработчик команды в модуле формы объекта
Логика срабатывает при проведении документаОткройте модуль объекта документа, процедуру ОбработкаПроведения
Поведение возникает у многих объектов одинаковоПроверьте подписки на события и общие модули
Ничего не найдено в конфигурацииПроверьте расширения конфигурации и внешние обработки

Поиск кода в расширениях и внешних обработках

Если доработки выполнены через расширение, их код не виден в основной конфигурации. Откройте список расширений: в конфигураторе «Конфигурация → Расширения конфигурации», в пользовательском режиме — «НСИ и администрирование → Печатные формы, отчёты и обработки → Расширения». Каждое расширение открывается как отдельная конфигурация со своим деревом объектов и модулями, поиск внутри него выполняется тем же Ctrl+Shift+F.

Внешние обработки и отчёты — это файлы с расширением .epf и .erf. Их код открывается через «Файл → Открыть» в конфигураторе. Если обработка подключена к базе как дополнительная, её файл обычно лежит в каталоге, указанном в настройках, либо хранится внутри базы — тогда её можно выгрузить из справочника дополнительных отчётов и обработок.

Поиск кода через отладку, когда место неизвестно

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

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

Типичные ошибки при поиске кода
01
Искать только в модуле формы, хотя основная логика вынесена в общий серверный модуль — проверяйте вызовы через F12
02
Забывать про подписки на события: код срабатывает, но прямого вызова в объекте нет
03
Искать в основной конфигурации то, что добавлено расширением, — расширения проверяются отдельно
04
Менять код без резервной копии и без проверки, не находится ли объект на поддержке

Ограничения и безопасные границы работы

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

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

Итог

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

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

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

Можно ли найти код в 1С без конфигуратора?

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

Как найти, где выводится конкретное сообщение об ошибке?

Скопируйте уникальный фрагмент текста сообщения и выполните глобальный поиск (Ctrl+Shift+F) по конфигурации. Если текст собирается из переменных, ищите по наиболее характерному неизменному куску фразы или используйте отладку с остановкой по ошибке.

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

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

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

Такая универсальная логика почти всегда реализована через подписки на события. Откройте в дереве конфигурации «Общие → Подписки на события», найдите подписку на событие ПередЗаписью или ПриЗаписи и перейдите в указанный обработчик.

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

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

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

Нажмите Ctrl+O — откроется список всех процедур и функций текущего модуля с фильтром по имени. Начните вводить название, и список сократится до подходящих методов, переход выполняется по Enter.