Где в конфигурации живёт нужная строка: глобальный поиск, ссылки на объекты и отладчик

· 10 мин

Содержание

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

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

С чего начать: какой поиск нужен под вашу задачу

Под словами «найти по коду» скрываются разные задачи. От задачи зависит инструмент.

Что ищемИнструментГде запустить
Строку в одном модулеПоиск в окнеCtrl+F, следующее совпадение F3
Строку во всей конфигурацииГлобальный поискПравка → Глобальный поиск, Ctrl+Shift+F
Где используется справочник, реквизит, регистрПоиск ссылок на объектКонтекстное меню объекта в дереве конфигурации
Определение процедуры по её вызовуПереход к определениюКурсор на имени, F12
Строку из текста ошибкиПереход к строкеОткрыть модуль, Ctrl+G, номер строки
Что реально выполняется при действии пользователяОтладчикОтладка → Начать отладку, точки останова F9
Текст внутри внешней обработки или отчётаОткрытие файла в КонфигуратореФайл → Открыть, затем поиск в модулях файла

💡 Если база на поддержке и объект «на замке», искать это не мешает. Поиск читает текст, а не меняет его.

Перед стартом проверьте три вещи:

  • 🔑 вы входите в Конфигуратор под пользователем с правами администратора;
  • 🧩 вы знаете, есть ли в базе расширения: их код живёт отдельно от основной конфигурации;
  • 📄 у вас есть точный фрагмент для поиска: имя процедуры, кусок текста сообщения, имя реквизита.

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

Это основной рабочий инструмент. Порядок такой.

  1. Откройте Конфигуратор и конфигурацию (Конфигурация → Открыть конфигурацию).
  2. Нажмите Ctrl+Shift+F или выберите Правка → Глобальный поиск.
  3. Введите искомую строку. Чем она точнее, тем короче список.
  4. Отметьте, где искать: во всей конфигурации или в выбранных объектах, в модулях, в макетах, в свойствах объектов.
  5. Нажмите «Искать». Результаты появятся в отдельном окне внизу.
  6. Двойной щелчок по строке результата откроет модуль на нужной строке.

Что вводить в строку поиска

Ищите по самому редкому фрагменту. Слово «Сумма» встретится тысячи раз. Фрагмент "Не заполнен склад" или имя процедуры ЗаполнитьТабличнуюЧастьПоОстаткам даст несколько совпадений.

Полезные приёмы:

  • 🎯 Включайте «Слово целиком», когда ищете короткое имя переменной, иначе найдутся все слова, где оно входит частью.
  • 🔤 Учёт регистра обычно не нужен: встроенный язык 1С к регистру нечувствителен, и товары и Товары в коде одно и то же.
  • ✂️ Если ищете текст сообщения пользователю, берите кусок из середины. Начало фразы часто собирается из нескольких строк через + или СтрШаблон.
  • 🌐 Многоязычные конфигурации хранят строки через НСтр("ru = '...'"). Ищите без кавычек и без ru =, только сам русский текст.

Поиск и замена по всей конфигурации

Рядом с глобальным поиском есть глобальная замена. Она меняет текст сразу во многих модулях.

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

Где используется объект метаданных: поиск ссылок

Глобальный поиск ищет текст. Но реквизит может быть связан с другим объектом без единой строки кода: через тип реквизита, через состав регистра, через подписку на событие, через права в роли. Для этого есть поиск ссылок.

Как найти, где используется объект:

  1. В дереве конфигурации найдите объект: справочник, документ, реквизит, общий модуль.
  2. Щёлкните по нему правой кнопкой мыши.
  3. Выберите «Поиск ссылок на объект».
  4. В окне результатов появится список мест: реквизиты с этим типом, роли, подсистемы, формы, команды, подписки.

Этот поиск отвечает на вопросы, которые текстом не решить:

  • 🗂️ в какие подсистемы входит документ и почему он виден в нескольких разделах;
  • 🛡️ в каких ролях заданы права на справочник;
  • 🔗 какие документы ссылаются на справочник реквизитами и делают удаление невозможным;
  • 📬 какие подписки на события и регламентные задания используют общий модуль.

Как найти сам объект в дереве

В большой конфигурации, как БП 3.0, объектов тысячи. Чтобы не листать дерево:

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

💡 Синоним, который пользователь видит на экране, и имя объекта в метаданных часто различаются. Документ «Реализация (акт, накладная, УПД)» в метаданных называется РеализацияТоваровУслуг. Глобальный поиск находит и по синониму, если отмечен поиск в свойствах объектов.

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

Запросы в 1С бывают двух видов, и ищутся они по-разному.

Запрос в модуле. Текст запроса записан строкой внутри процедуры: Запрос.Текст = "ВЫБРАТЬ ...". Такой текст находится обычным глобальным поиском. Ищите по имени таблицы, например РегистрНакопления.ТоварыНаСкладах, или по псевдониму поля.

Запрос в схеме компоновки (СКД). Отчёты на СКД хранят запрос не в модуле, а в макете «Основная схема компоновки данных». Порядок поиска:

  1. Найдите отчёт в дереве Отчеты.
  2. Откройте вкладку макетов и макет схемы компоновки.
  3. На закладке «Наборы данных» выделите набор и откройте конструктор запроса или текст запроса.
  4. В тексте запроса используйте Ctrl+F.

Если неизвестно даже, в каком отчёте искать поле, отметьте в глобальном поиске макеты. Когда и это не помогает, используйте выгрузку в файлы, о ней ниже.

Выгрузка конфигурации в файлы: поиск, который находит всё

Это приём, который знают разработчики, а пользователи Конфигуратора часто нет. Конфигурацию можно выгрузить в набор XML-файлов и модулей .bsl, а затем искать по ним любым текстовым поиском.

  1. В Конфигураторе выберите Конфигурация → Выгрузить конфигурацию в файлы.
  2. Укажите пустой каталог на локальном диске.
  3. Дождитесь окончания выгрузки. Для БП 3.0 это десятки тысяч файлов.
  4. Ищите строку командой 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.

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

Поиск в режиме Предприятия: элемент по коду и место ошибки

Найти элемент справочника по коду

Иногда «найти по коду» значит найти элемент по полю «Код» или документ по номеру. Это делается в пользовательском режиме.

  1. Откройте список справочника или журнал документов .
  2. Нажмите Ctrl+F или кнопку поиска в командной панели.
  3. Выберите колонку «Код» (или «Номер») и введите значение.
  4. Для точного совпадения используйте расширенный поиск: Alt+F, поле «Код», вариант сравнения «Точное совпадение».

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

Найти строку кода по тексту ошибки

Сообщение об ошибке в 1С содержит адрес места в фигурных скобках. Например:

{ОбщийМодуль.ПроведениеСервер.Модуль(1432)}: Ошибка при вызове метода контекста (Записать)

Расшифровка: общий модуль ПроведениеСервер, строка 1432. Чтобы попасть туда:

  1. Нажмите в окне ошибки «Подробно» и скопируйте полный текст: там видна вся цепочка вызовов.
  2. В Конфигураторе найдите общий модуль ПроведениеСервер и откройте его.
  3. Нажмите Ctrl+G и введите номер строки.

Для документа адрес выглядит как {Документ.ПоступлениеТоваровУслуг.МодульОбъекта(215)}, для формы указана форма объекта. Порядок тот же: открыть модуль , перейти к строке.

💡 Верхняя строка цепочки показывает место, где ошибка возникла, а не где её причина. Причина часто в процедуре, которая вызвала эту строку с неверными данными. Смотрите цепочку снизу вверх.

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

Когда непонятно, какая процедура отрабатывает при нажатии кнопки, текстовый поиск бессилен. Нужна отладка.

  1. В Конфигураторе выберите Отладка → Начать отладку или нажмите F5. Запустится Предприятие в режиме отладки.
  2. В подозрительном модуле поставьте точку останова на строку: F9.
  3. Выполните действие в Предприятии. Выполнение остановится на точке.
  4. Шагайте по коду: F10 шаг с обходом процедуры, F11 шаг с заходом внутрь.
  5. Посмотрите стек вызовов: он покажет, откуда пришли в эту строку.
  6. Включите Отладка → Остановка по ошибке, чтобы отладчик остановился ровно там, где падает ошибка, без ручных точек.

Не отлаживайте рабочую базу в часы работы бухгалтерии. Точка останова в серверном коде задерживает выполнение, и ожидающие пользователи получат зависание или ошибку блокировки. Для отладки используйте копию базы.

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

Почему поиск не находит строку, хотя она есть

Диагностика: выберите симптом

Ещё две ситуации, которые путают даже опытных:

  • 🔄 Ищете не в той базе. Конфигуратор открыт для копии или тестовой базы, а ошибка возникает в рабочей. Проверьте путь к базе в заголовке окна Конфигуратора: конфигурации копии и рабочей базы могут отличаться.
  • 🧱 Ищете имя, которого нет в коде. Процедуры обработчиков формы вызываются по привязке к событию в свойствах элемента формы. Имя процедуры в коде есть, но вызова в тексте нет. Смотрите свойства элемента: палитра свойств, раздел событий.

Если вы работаете в EDT

Разработчики, которые перешли на 1С:Enterprise Development Tools, ищут по-другому, через механизмы среды Eclipse:

  • 🔎 поиск по всем файлам проекта: Search → Search (Ctrl+H), вкладка поиска по файлам;
  • 🧭 переход к определению: F3 или щелчок с зажатым Ctrl по имени;
  • 🔗 места использования метода или объекта: команда поиска ссылок в контекстном меню имени.

EDT хранит проект как те же XML и .bsl файлы, поэтому поиск по проекту сразу видит и схемы компоновки, и формы.

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

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