Где в конфигурации живёт нужная строка: глобальный поиск, ссылки на объекты и отладчик
Содержание
Искать по коду в 1С нужно не через Ctrl+F в открытом модуле, а через глобальный поиск Конфигуратора: Правка → Глобальный поиск или Ctrl+Shift+F. Обычный Ctrl+F ищет только в текущем окне, и отсюда частая жалоба «в коде этого нет», хотя строка лежит в соседнем общем модуле.
Глобальный поиск проходит по модулям, макетам и метаданным всей конфигурации и выводит список совпадений. Двойной щелчок по строке результата открывает модуль ровно на найденном месте.
С чего начать: какой поиск нужен под вашу задачу
Под словами «найти по коду» скрываются разные задачи. От задачи зависит инструмент.
| Что ищем | Инструмент | Где запустить |
|---|---|---|
| Строку в одном модуле | Поиск в окне | Ctrl+F, следующее совпадение F3 |
| Строку во всей конфигурации | Глобальный поиск | Правка → Глобальный поиск, Ctrl+Shift+F |
| Где используется справочник, реквизит, регистр | Поиск ссылок на объект | Контекстное меню объекта в дереве конфигурации |
| Определение процедуры по её вызову | Переход к определению | Курсор на имени, F12 |
| Строку из текста ошибки | Переход к строке | Открыть модуль, Ctrl+G, номер строки |
| Что реально выполняется при действии пользователя | Отладчик | Отладка → Начать отладку, точки останова F9 |
| Текст внутри внешней обработки или отчёта | Открытие файла в Конфигураторе | Файл → Открыть, затем поиск в модулях файла |
💡 Если база на поддержке и объект «на замке», искать это не мешает. Поиск читает текст, а не меняет его.
Перед стартом проверьте три вещи:
- 🔑 вы входите в Конфигуратор под пользователем с правами администратора;
- 🧩 вы знаете, есть ли в базе расширения: их код живёт отдельно от основной конфигурации;
- 📄 у вас есть точный фрагмент для поиска: имя процедуры, кусок текста сообщения, имя реквизита.
Глобальный поиск в Конфигураторе: как найти текст в коде всей конфигурации
Это основной рабочий инструмент. Порядок такой.
- Откройте Конфигуратор и конфигурацию (
Конфигурация → Открыть конфигурацию). - Нажмите
Ctrl+Shift+Fили выберитеПравка → Глобальный поиск. - Введите искомую строку. Чем она точнее, тем короче список.
- Отметьте, где искать: во всей конфигурации или в выбранных объектах, в модулях, в макетах, в свойствах объектов.
- Нажмите «Искать». Результаты появятся в отдельном окне внизу.
- Двойной щелчок по строке результата откроет модуль на нужной строке.
Что вводить в строку поиска
Ищите по самому редкому фрагменту. Слово «Сумма» встретится тысячи раз. Фрагмент "Не заполнен склад" или имя процедуры ЗаполнитьТабличнуюЧастьПоОстаткам даст несколько совпадений.
Полезные приёмы:
- 🎯 Включайте «Слово целиком», когда ищете короткое имя переменной, иначе найдутся все слова, где оно входит частью.
- 🔤 Учёт регистра обычно не нужен: встроенный язык 1С к регистру нечувствителен, и
товарыиТоварыв коде одно и то же. - ✂️ Если ищете текст сообщения пользователю, берите кусок из середины. Начало фразы часто собирается из нескольких строк через
+илиСтрШаблон. - 🌐 Многоязычные конфигурации хранят строки через
НСтр("ru = '...'"). Ищите без кавычек и безru =, только сам русский текст.
Поиск и замена по всей конфигурации
Рядом с глобальным поиском есть глобальная замена. Она меняет текст сразу во многих модулях.
Глобальная замена в типовой конфигурации на поддержке — прямой путь к тяжёлому обновлению. Каждый изменённый модуль придётся потом сравнивать и объединять. Перед заменой сделайте выгрузку информационной базы (Администрирование → Выгрузить информационную базу) и снимите поддержку только с тех объектов, которые действительно меняете.
Где используется объект метаданных: поиск ссылок
Глобальный поиск ищет текст. Но реквизит может быть связан с другим объектом без единой строки кода: через тип реквизита, через состав регистра, через подписку на событие, через права в роли. Для этого есть поиск ссылок.
Как найти, где используется объект:
- В дереве конфигурации найдите объект: справочник, документ, реквизит, общий модуль.
- Щёлкните по нему правой кнопкой мыши.
- Выберите «Поиск ссылок на объект».
- В окне результатов появится список мест: реквизиты с этим типом, роли, подсистемы, формы, команды, подписки.
Этот поиск отвечает на вопросы, которые текстом не решить:
- 🗂️ в какие подсистемы входит документ и почему он виден в нескольких разделах;
- 🛡️ в каких ролях заданы права на справочник;
- 🔗 какие документы ссылаются на справочник реквизитами и делают удаление невозможным;
- 📬 какие подписки на события и регламентные задания используют общий модуль.
Как найти сам объект в дереве
В большой конфигурации, как БП 3.0, объектов тысячи. Чтобы не листать дерево:
- нажмите на дерево конфигурации и воспользуйтесь строкой поиска в нижней части окна (в актуальных релизах платформы 8.3);
- либо выполните глобальный поиск по имени объекта: в результатах будет строка с самим объектом метаданных, двойной щелчок выделит его в дереве.
💡 Синоним, который пользователь видит на экране, и имя объекта в метаданных часто различаются. Документ «Реализация (акт, накладная, УПД)» в метаданных называется РеализацияТоваровУслуг. Глобальный поиск находит и по синониму, если отмечен поиск в свойствах объектов.
Тексты запросов и схемы компоновки данных
Запросы в 1С бывают двух видов, и ищутся они по-разному.
Запрос в модуле. Текст запроса записан строкой внутри процедуры: Запрос.Текст = "ВЫБРАТЬ ...". Такой текст находится обычным глобальным поиском. Ищите по имени таблицы, например РегистрНакопления.ТоварыНаСкладах, или по псевдониму поля.
Запрос в схеме компоновки (СКД). Отчёты на СКД хранят запрос не в модуле, а в макете «Основная схема компоновки данных». Порядок поиска:
- Найдите отчёт в дереве
Отчеты. - Откройте вкладку макетов и макет схемы компоновки.
- На закладке «Наборы данных» выделите набор и откройте конструктор запроса или текст запроса.
- В тексте запроса используйте
Ctrl+F.
Если неизвестно даже, в каком отчёте искать поле, отметьте в глобальном поиске макеты. Когда и это не помогает, используйте выгрузку в файлы, о ней ниже.
Выгрузка конфигурации в файлы: поиск, который находит всё
Это приём, который знают разработчики, а пользователи Конфигуратора часто нет. Конфигурацию можно выгрузить в набор XML-файлов и модулей .bsl, а затем искать по ним любым текстовым поиском.
- В Конфигураторе выберите
Конфигурация → Выгрузить конфигурацию в файлы. - Укажите пустой каталог на локальном диске.
- Дождитесь окончания выгрузки. Для БП 3.0 это десятки тысяч файлов.
- Ищите строку командой Windows или в редакторе с поиском по папке.
rem Поиск строки во всех модулях и схемах выгруженной конфигурации
findstr /S /I /N /C:"ТоварыНаСкладах" C:\cfdump\*.bsl C:\cfdump\*.xml
Ключи команды: /S ищет во вложенных папках, /I без учёта регистра, /N выводит номер строки, /C: задаёт строку целиком.
⚠️ findstr плохо понимает кириллицу в UTF-8, а выгрузка сохраняется именно в UTF-8. Если кириллица не находится, ищите по латинской части (имя поля в XML, идентификатор) или используйте редактор с поиском по папке, например Notepad++ (Поиск → Найти в файлах) или VS Code.
Выгрузка видит то, что не всегда находит глобальный поиск: тексты запросов внутри схем компоновки, настройки вариантов отчётов, содержимое форм.
Поиск в режиме Предприятия: элемент по коду и место ошибки
Найти элемент справочника по коду
Иногда «найти по коду» значит найти элемент по полю «Код» или документ по номеру. Это делается в пользовательском режиме.
- Откройте список справочника или журнал документов .
- Нажмите
Ctrl+Fили кнопку поиска в командной панели. - Выберите колонку «Код» (или «Номер») и введите значение.
- Для точного совпадения используйте расширенный поиск:
Alt+F, поле «Код», вариант сравнения «Точное совпадение».
Если справочника нет в разделах, откройте его через «Все функции». Команда включается так: Сервис и настройки → Параметры → Отображать команду «Все функции». После этого в главном меню появится «Все функции» с деревом всех объектов.
Найти строку кода по тексту ошибки
Сообщение об ошибке в 1С содержит адрес места в фигурных скобках. Например:
{ОбщийМодуль.ПроведениеСервер.Модуль(1432)}: Ошибка при вызове метода контекста (Записать)
Расшифровка: общий модуль ПроведениеСервер, строка 1432. Чтобы попасть туда:
- Нажмите в окне ошибки «Подробно» и скопируйте полный текст: там видна вся цепочка вызовов.
- В Конфигураторе найдите общий модуль
ПроведениеСервери откройте его. - Нажмите
Ctrl+Gи введите номер строки.
Для документа адрес выглядит как {Документ.ПоступлениеТоваровУслуг.МодульОбъекта(215)}, для формы указана форма объекта. Порядок тот же: открыть модуль
, перейти к строке.
💡 Верхняя строка цепочки показывает место, где ошибка возникла, а не где её причина. Причина часто в процедуре, которая вызвала эту строку с неверными данными. Смотрите цепочку снизу вверх.
Отладчик: какой код выполняется на самом деле
Когда непонятно, какая процедура отрабатывает при нажатии кнопки, текстовый поиск бессилен. Нужна отладка.
- В Конфигураторе выберите
Отладка → Начать отладкуили нажмитеF5. Запустится Предприятие в режиме отладки. - В подозрительном модуле поставьте точку останова на строку:
F9. - Выполните действие в Предприятии. Выполнение остановится на точке.
- Шагайте по коду:
F10шаг с обходом процедуры,F11шаг с заходом внутрь. - Посмотрите стек вызовов: он покажет, откуда пришли в эту строку.
- Включите
Отладка → Остановка по ошибке, чтобы отладчик остановился ровно там, где падает ошибка, без ручных точек.
Не отлаживайте рабочую базу в часы работы бухгалтерии. Точка останова в серверном коде задерживает выполнение, и ожидающие пользователи получат зависание или ошибку блокировки. Для отладки используйте копию базы.
Если задача «что тормозит», вместо точек останова включите замер производительности (Отладка → Замер производительности). После действия в Предприятии вы увидите строки кода, отсортированные по времени выполнения.
Почему поиск не находит строку, хотя она есть
Ещё две ситуации, которые путают даже опытных:
- 🔄 Ищете не в той базе. Конфигуратор открыт для копии или тестовой базы, а ошибка возникает в рабочей. Проверьте путь к базе в заголовке окна Конфигуратора: конфигурации копии и рабочей базы могут отличаться.
- 🧱 Ищете имя, которого нет в коде. Процедуры обработчиков формы вызываются по привязке к событию в свойствах элемента формы. Имя процедуры в коде есть, но вызова в тексте нет. Смотрите свойства элемента: палитра свойств, раздел событий.
Если вы работаете в EDT
Разработчики, которые перешли на 1С:Enterprise Development Tools, ищут по-другому, через механизмы среды Eclipse:
- 🔎 поиск по всем файлам проекта:
Search → Search(Ctrl+H), вкладка поиска по файлам; - 🧭 переход к определению:
F3или щелчок с зажатымCtrlпо имени; - 🔗 места использования метода или объекта: команда поиска ссылок в контекстном меню имени.
EDT хранит проект как те же XML и .bsl файлы, поэтому поиск по проекту сразу видит и схемы компоновки, и формы.