Поиск текста, кода и объектов в конфигураторе 1С 8.3
Содержание
Строку в открытом модуле ищут через Ctrl+F, следующее вхождение — F3, предыдущее — Shift+F3. Чтобы найти строку по всей конфигурации 1С в конфигураторе сразу, нужен глобальный поиск: Правка → Глобальный поиск или Ctrl+Shift+F. Результаты падают в отдельное окно, двойной щелчок открывает нужный модуль на найденной строке.
Если ищете не текст, а места, где используется справочник, регистр или реквизит, удобнее команда Поиск ссылок на объект в контекстном меню дерева метаданных. А когда встроенного поиска мало — выгрузите конфигурацию в файлы и ищите по ним любым текстовым инструментом.
Поиск строки в открытом модуле
Самый частый случай: вы открыли модуль объекта, формы или общий модуль и хотите найти в нём имя процедуры, переменную или кусок текста сообщения.
- Поставьте курсор в окно модуля.
- Нажмите
Ctrl+F— откроется окно поиска. - Введите искомый текст. Если перед этим выделить слово в коде, оно подставится в поле само.
- Настройте флажки: учёт регистра, поиск слова целиком, направление (вверх или вниз от курсора).
- Нажмите «Найти следующее» или закройте окно и листайте вхождения клавишей
F3.
| Клавиши | Что делает |
|---|---|
Ctrl+F | Окно поиска в текущем модуле |
F3 / Shift+F3 | Следующее / предыдущее вхождение |
Ctrl+H | Поиск и замена в текущем модуле |
Ctrl+G | Переход к строке по номеру |
F12 | Переход к определению процедуры или функции под курсором |
Ctrl+Shift+F | Глобальный поиск по конфигурации |
Ctrl+G выручает, когда номер строки известен заранее: его показывает окно служебных сообщений после синтаксической проверки или текст ошибки вида {ОбщийМодуль.ИмяМодуля.Модуль(245)}. Число в скобках — номер строки. Открыли модуль, нажали Ctrl+G, ввели 245 — и вы на месте.
F12 нужен, когда в коде встретился вызов ЗаполнитьТабличнуюЧасть(...) и неясно, где лежит сама процедура. Курсор на имя, F12 — конфигуратор откроет модуль с её определением, даже если это другой общий модуль.
Если поле поиска не реагирует, проверьте, что фокус стоит в тексте модуля, а не в дереве метаданных или палитре свойств. Горячие клавиши работают для того окна, которое сейчас активно.
Глобальный поиск строки по всей конфигурации
Глобальный поиск отвечает на вопрос «где в этой конфигурации встречается вот этот текст». Типовая задача: пользователь прислал скриншот сообщения, и нужно найти, какой код его выводит.
Как запустить
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. Без этого шага искать не в чем. - Выберите
Правка → Глобальный поискили нажмитеCtrl+Shift+F. - В поле поиска введите фрагмент текста.
- Отметьте, где искать: тексты модулей, формы, макеты, справочную информацию и другие области, которые предлагает окно.
- Укажите охват: вся конфигурация или только выделенные в дереве объекты.
- Запустите поиск и дождитесь окна «Результаты поиска».
В результатах видно имя объекта, вид модуля и саму строку. Двойной щелчок по строке открывает модуль и ставит курсор на вхождение.
Как искать текст сообщения пользователю
Сообщения в типовых конфигурациях часто собирают из частей или оборачивают в НСтр("ru = '...'"). Поэтому полная фраза со скриншота может не найтись: в коде между словами стоит подстановка параметра.
Ищите самый «редкий» кусок фразы из 3–4 слов без чисел, дат и названий контрагентов. Например, из сообщения Не заполнено поле "Склад" в строке 3 ищите Не заполнено поле, а не всю строку целиком.
Если текст ошибки начинается с Ошибка при вызове метода контекста или содержит имя объекта платформы, его выдаёт сама платформа. В конфигурации такой строки нет, искать её глобальным поиском бесполезно — смотрите на модуль и номер строки в фигурных скобках.
Имя объекта и синоним — это разные строки
Пользователь видит в интерфейсе синоним: «Реализация (акт, накладная, УПД)». В метаданных у объекта имя без пробелов, например РеализацияТоваровУслуг. Код обращается к объекту по имени.
Поэтому ищите так:
- 🔎 чтобы найти объект в дереве — по синониму или имени, как удобнее;
- 🔎 чтобы найти код, который работает с объектом, — по имени:
Документы.РеализацияТоваровУслуг; - 🔎 чтобы найти подпись на форме — по тексту заголовка, включив в поиск формы.
Быстро перейти к объекту в дереве метаданных можно и без окна поиска: выделите ветку, например «Документы», и начните набирать имя. Курсор встанет на первое подходящее совпадение.
Настройки поиска: регистр, слово целиком, области
От флажков зависит, найдёте вы три вхождения или триста.
| Настройка | Когда включать | Что даёт |
|---|---|---|
| Учитывать регистр | Почти никогда | Язык 1С не различает регистр в именах; флажок нужен, только если ищете текст строки как есть |
| Слово целиком | Ищете короткое имя переменной: Сумма, Склад | Отсекает СуммаНДС, СкладОтправитель и другие длинные имена |
| Только выделенные объекты | Знаете подсистему или объект | Поиск быстрее, результатов меньше |
| Области поиска (модули, формы, макеты) | Ищете подпись или текст в макете печатной формы | Без нужной области вхождение не попадёт в выдачу |
Шаблонов вида * и регулярных выражений поиск конфигуратора не понимает. Ищется ровно введённая строка, с учётом выбранных флажков.
Особенности строк в коде 1С
Две вещи, на которых чаще всего спотыкаются:
- 📌 Кавычки удваиваются. В коде фраза
Поле "Склад"записана как"Поле ""Склад""". Если ищете с кавычками — удваивайте их или ищите без кавычек:ПолеиСкладпо отдельности. - 📌 Многострочные строки. Текст запроса или длинное сообщение разбивают на строки с символом
|в начале. Фраза, разорванная переносом, одним куском не найдётся — ищите фрагмент, который целиком лежит в одной строке кода.
Ещё нюанс — буква «ё». «Отчёт» и «Отчет» для поиска разные строки. В типовых конфигурациях встречаются оба варианта, поэтому при пустом результате попробуйте второй.
Замена текста: в модуле и по всей конфигурации
Замена в одном модуле
- Откройте модуль и нажмите
Ctrl+H. - Введите, что искать и на что заменить.
- Включите «Слово целиком», если меняете имя переменной.
- Пройдите вхождения по одному кнопкой замены или замените все разом.
Пошаговая замена надёжнее. Массовая замена Сумма на СуммаДокумента без флажка «слово целиком» испортит СуммаНДС, СуммаСкидки и всё, что начинается с этих букв.
Замена по всей конфигурации
В меню Правка рядом с глобальным поиском есть глобальная замена. Она работает по тем же областям и с теми же флажками, но меняет текст сразу во многих модулях.
Перед глобальной заменой сделайте резервную копию: Администрирование → Выгрузить информационную базу в конфигураторе. Отменить замену в двадцати модулях одной командой не получится.
Порядок, при котором замена не ломает код:
- Сначала выполните глобальный поиск с теми же настройками и просмотрите все вхождения.
- Убедитесь, что под замену не попали комментарии, строки запросов и чужие имена с той же основой.
- Выполните замену.
- Запустите синтаксическую проверку (раздел ниже).
- Сохраните конфигурацию и только потом обновляйте конфигурацию базы данных.
В типовой конфигурации на поддержке объекты, снятые с поддержки, придётся сравнивать и объединять при каждом обновлении. Правки текстом по всей типовой — последнее средство. Свой код лучше выносить в расширение.
Поиск в расширениях и внешних обработках
Глобальный поиск работает по открытой конфигурации. Расширение открывают отдельно: Конфигурация → Расширения конфигурации, затем выбрать расширение и открыть его конфигурацию. Внешнюю обработку
или отчёт открывают через Файл → Открыть и ищут в её модулях обычным Ctrl+F.
Где используется объект: поиск ссылок и проверка модулей
Текстовый поиск находит строки. Но если нужно понять, можно ли удалить реквизит или переименовать справочник, важнее знать все места, где объект упомянут в метаданных: в типах реквизитов, подписках на события, ролях, формах, запросах.
Поиск ссылок на объект
- В дереве метаданных выделите объект или реквизит.
- Правой кнопкой откройте контекстное меню.
- Выберите
Поиск ссылок на объект.
Конфигуратор покажет список мест, где объект используется как тип, входит в состав подсистем, ролей, планов обмена, подписок на события. Двойной щелчок по строке ведёт к месту ссылки.
Поиск ссылок и глобальный поиск дополняют друг друга:
| Задача | Чем пользоваться |
|---|---|
Где в коде встречается Справочники.Номенклатура | Глобальный поиск по тексту |
| В каких реквизитах тип «СправочникСсылка.Номенклатура» | Поиск ссылок на объект |
| Входит ли объект в роль или подсистему | Поиск ссылок на объект |
| Где вызывается процедура общего модуля | Глобальный поиск по имени процедуры со «Слово целиком» |
Синтаксическая проверка как поиск проблем
После правок и замен проверьте код:
- 🧪
Ctrl+F7в открытом модуле — синтаксический контроль только этого модуля; - 🧪
Конфигурация → Проверка конфигурации— проверка всей конфигурации с выбором режимов.
В окне проверки конфигурации отметьте синтаксический контроль модулей и режимы запуска клиента, под которые работает база (тонкий клиент, веб-клиент, сервер). Там же есть флажок поиска неиспользуемых процедур и функций — так находят «мёртвый» код, который можно удалить.
Ошибки выводятся в окно служебных сообщений с указанием модуля и строки. Двойной щелчок по сообщению открывает модуль на ошибке. Так проверка заодно работает как поиск: она находит обращения к удалённому реквизиту или переменной, которой больше нет.
Поиск по выгрузке конфигурации в файлы
Приём, которым пользуются разработчики, когда встроенного поиска мало: нужны регулярные выражения, поиск по нескольким словам в одной строке или сравнение двух конфигураций.
- Откройте конфигурацию в конфигураторе.
- Выберите
Конфигурация → Выгрузить конфигурацию в файлы. - Укажите пустую папку и формат выгрузки.
- Модули окажутся в файлах с расширением
.bsl, формы и метаданные — в XML.
Дальше ищите любым инструментом. В Windows подойдёт стандартный findstr:
cd /d D:\Export\Buh
rem Поиск без учёта регистра по всем модулям, с номерами строк
findstr /s /i /n /c:"Не заполнено поле" *.bsl
Если установлен Git, в его консоли есть grep с регулярными выражениями:
# Все вызовы процедуры с любым префиксом общего модуля
grep -rniE "\.ЗаполнитьТабличнуюЧасть\(" --include=*.bsl .
Выгрузка не меняет конфигурацию и безопасна для рабочей базы. Но это снимок: после правок в конфигураторе выгружайте заново, иначе ищете по устаревшему коду.
Если ваша команда ведёт разработку в 1С:EDT, там поиск по проекту умеет регулярные выражения и поиск ссылок по коду. Для разовых задач в конфигураторе выгрузки в файлы обычно хватает.
Почему поиск не находит строку
Отдельно о модулях, закрытых паролем. Тексты таких модулей в поставке недоступны, и поиск по ним ничего не вернёт. Это не ошибка поиска, а свойство поставки: ищите вызовы этих процедур снаружи, в открытом коде.
Частые вопросы
Можно ли найти строку в данных базы, а не в коде?
Ctrl+F в списке или поле поиска над ним.Ищет ли глобальный поиск в макетах печатных форм?
Как найти, какая форма выводит конкретную надпись?
Чем поиск ссылок отличается от глобального поиска?
Почему F12 не переходит к процедуре?
Выполнить(), конфигуратор не знает, какой модуль подразумевается. Найдите имя процедуры глобальным поиском со «Слово целиком».