Навигация по коду конфигуратора: от номера строки до нужной процедуры

· 9 мин

Содержание

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

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

Где брать номер строки и как прочитать его в тексте ошибки

Номер строки почти всегда приходит из сообщения об ошибке. В режиме 1С:Предприятие подробный текст ошибки выглядит примерно так:

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

Разбираем по частям:

  • 📍 ОбщийМодуль.РаботаСФайлами — объект метаданных, где упал код;
  • 📍 Модуль — вид модуля (бывает МодульОбъекта, МодульМенеджера, Форма.МодульФормы);
  • 📍 1287 — номер строки в этом модуле;
  • 📍 текст после двоеточия — что именно пошло не так.

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

Полный текст ошибки удобно скопировать из окна «Подробно» и вставить в блокнот. Так вы не перепутаете номер и имя модуля, пока открываете конфигуратор.

Ctrl+G: переход к строке модуля через штатный диалог

Это основной способ. Он работает в любом модуле: общем, объекта, менеджера, формы, команды.

  1. Откройте конфигуратор и найдите объект в дереве конфигурации. Быстрее всего — встать в дерево и начать печатать имя объекта: курсор переместится к совпадению.
  2. Откройте нужный модуль. Для формы — вкладка «Модуль» в редакторе формы.
  3. Щёлкните в любом месте текста, чтобы фокус оказался в редакторе кода.
  4. Нажмите Ctrl+G или выберите Правка → Перейти к строке.
  5. Введите номер (например, 1287) и нажмите Enter.

Курсор окажется на нужной строке, а редактор прокрутит текст так, чтобы она была видна. Сверьтесь со строкой состояния внизу окна: там показаны номер строки и позиция в ней.

Если Ctrl+G ничего не делает, проверьте фокус. Команда активна только когда курсор стоит в тексте модуля, а не в дереве конфигурации или в окне свойств.

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

Строка состояния, прокрутка и клавиши перемещения

Когда точный номер не нужен, а надо просто быстро двигаться по длинному модулю, работают обычные клавиши редактора.

КлавишиЧто делают
Ctrl+Home / Ctrl+Endв начало / в конец модуля
PgUp / PgDnна экран вверх / вниз
Home / Endв начало / в конец текущей строки
Ctrl+← / Ctrl+→на слово влево / вправо
Ctrl+Gк строке с заданным номером

Полосу прокрутки справа можно тянуть мышью. Для прыжков на глаз этого хватает, но на модуле в 10–15 тысяч строк одна пиксельная позиция ползунка — это десятки строк. Поэтому ползунком удобно «долететь» до нужной трети модуля, а дальше доводить клавишами или Ctrl+G.

Строка состояния — главный ориентир. В конфигураторе нет колонки с номерами строк слева от кода, поэтому номер текущей строки смотрят только внизу окна. Если строки состояния не видно, включите её в меню Вид (там же, где включаются панели инструментов).

Поиск по тексту вместо номера строки

Номер строки быстро устаревает. Достаточно кому-то добавить пять строк выше — и ваш «1287» уже указывает на другое место. Поиск по тексту надёжнее.

Поиск внутри открытого модуля

  • 🔎 Ctrl+F — открыть поиск, ввести фрагмент кода или имя переменной;
  • 🔎 F3 — следующее совпадение, Shift+F3 — предыдущее;
  • 🔎 если выделить слово и нажать Ctrl+F, оно сразу подставится в поле поиска.

Ищите по уникальному куску: тексту сообщения пользователю, имени реквизита в кавычках, необычному имени переменной. Слово Запрос в типовом модуле встретится сотни раз, а строка "Не заполнен склад отгрузки" — один-два.

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

Если непонятно, в каком модуле находится код, нужен глобальный поиск: Правка → Глобальный поиск. В нём можно искать сразу по всем модулям, а не только по открытому. Результаты выводятся списком внизу, и двойной щелчок по строке результата открывает модуль ровно на найденном месте.

Это лучший способ найти, откуда взялось сообщение пользователя. Скопируйте текст сообщения из 1С:Предприятия, вставьте в глобальный поиск — и попадёте на строку, где вызывается Сообщить() или ОбщегоНазначения.СообщитьПользователю().

Переход к процедуре по имени

В длинных модулях проще прыгать не по номеру, а по имени процедуры. В конфигураторе есть список процедур и функций модуля: кнопка на панели редактора текста или сочетание Ctrl+Alt+P. Начните печатать имя — список отфильтруется, а Enter переведёт курсор к объявлению.

Ещё один приём — F12 на имени вызываемой процедуры. Курсор перейдёт к её определению, даже если она в другом общем модуле.

Переход к строке в режиме отладки

В отладчике номер строки вообще не нужен вводить вручную: платформа сама показывает место остановки.

Точка останова на нужной строке

  1. Перейдите к строке через Ctrl+G или поиск.
  2. Нажмите F9 — слева появится красная метка точки останова.
  3. Запустите отладку (F5) и выполните в 1С:Предприятии действие, которое вызывает этот код.
  4. Когда выполнение дойдёт до строки, конфигуратор откроет модуль на ней и подсветит её.

Дальше по шагам: F10 — шаг с обходом (не заходя в вызываемые процедуры), F11 — шаг с заходом внутрь. Shift+F9 открывает окно вычисления выражения, где можно посмотреть значения переменных.

Остановка по ошибке

Если точное место падения неизвестно, включите Отладка → Остановка по ошибке. Отладчик сам остановится на строке, где возникло исключение. Это быстрее, чем расшифровывать текст ошибки и искать номер.

Стек вызовов

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

Отладку на рабочей базе с пользователями лучше не вести: пока выполнение стоит на точке останова, сеанс, в котором вы воспроизводите ошибку, «висит». Для серверной базы отладку на сервере должен разрешить администратор. Безопаснее воспроизводить ошибку на копии базы.

Большие модули: как не потеряться в коде на тысячи строк

В типовых конфигурациях есть общие модули по 10–20 тысяч строк. Здесь помогает не только переход к строке, но и организация кода.

Области и сворачивание

Код в типовых решениях разбит инструкциями препроцессора:

#Область ПрограммныйИнтерфейс

Процедура ЗаполнитьТабличнуюЧасть(Объект) Экспорт
	// ...
КонецПроцедуры

#КонецОбласти

Области, процедуры и функции можно сворачивать кнопкой «минус» слева от первой строки блока. Свернув всё ненужное, вы видите структуру модуля на одном экране. При переходе по Ctrl+G к строке внутри свёрнутого блока редактор раскроет его.

Закладки

Если в одном модуле вы постоянно прыгаете между двумя-тремя местами, поставьте закладки:

  • 🔖 Ctrl+F2 — поставить или снять закладку на текущей строке;
  • 🔖 F2 — к следующей закладке;
  • 🔖 Shift+F2 — к предыдущей.

Закладки помнят место даже после того, как выше добавили строки, — в отличие от записанного на бумажке номера.

Полезные привычки

  • ✅ Записывайте не только номер строки, но и имя процедуры. Через неделю номер уже может не совпадать.
  • ✅ Перед поиском по номеру из старого лога убедитесь, что конфигурацию с тех пор не обновляли.
  • ✅ Для модулей форм сначала откройте форму, затем вкладку «Модуль»: у формы и у объекта модули разные, и нумерация у них своя.

EDT, выгрузка в файлы и сторонние инструменты

Кроме конфигуратора, есть ещё несколько способов работать с кодом с нормальной нумерацией строк.

1C:Enterprise Development Tools

EDT построена на Eclipse и показывает номера строк слева от кода. Переход к строке там — Ctrl+L, а быстрый список процедур открытого модуля — Ctrl+O. Если в тексте ошибки указан модуль и номер, в EDT удобно открыть модуль через поиск ресурса и сразу перейти к строке.

Выгрузка конфигурации в файлы

В конфигураторе есть команда Конфигурация → Выгрузить конфигурацию в файлы. Каждый модуль сохраняется отдельным файлом .bsl. Его можно открыть в любом редакторе с нумерацией строк, например в VS Code с расширением для языка 1С. Это удобно, когда нужно сравнить модуль с другой версией или найти строку из лога, не открывая базу.

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

Внешние обработки и расширения

Код внешней обработки открывается в конфигураторе через Файл → Открыть. Переход к строке работает так же, Ctrl+G. В тексте ошибки внешняя обработка обозначается как ВнешняяОбработка.Имя.МодульОбъекта(номер).

Для расширений конфигурации у каждого модуля своя нумерация. Если ошибка возникла в коде расширения, номер строки относится к модулю расширения, а не к одноимённому модулю основной конфигурации. Откройте нужное расширение через Конфигурация → Расширения конфигурации и ищите строку там.

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

Откуда у вас номер строки?

Почему переход приводит не туда: частые ошибки

  • ❌ Открыт не тот модуль. У справочника есть модуль объекта, модуль менеджера и модули каждой формы. Номер (245) в МодульМенеджера и в МодульОбъекта — две разные строки.
  • ❌ Конфигурация изменилась после ошибки. Номер из вчерашнего сообщения после обновления указывает на другой код.
  • ❌ Конфигурация базы данных отличается от основной. Если вы правили код, но не обновили конфигурацию базы данных, пользователи работают со старой версией. Номера в их ошибках относятся к ней.
  • ❌ Ошибка в расширении. Ищут в основной конфигурации, а код лежит в расширении с тем же именем объекта.
  • ❌ Модуль без исходного текста. У некоторых поставляемых решений код закрыт. Модуль открывается пустым или не открывается, перейти к строке нельзя.

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

Как включить номера строк слева от кода в конфигураторе?
Колонки с номерами строк в редакторе конфигуратора нет. Текущий номер показывает строка состояния внизу окна. Если нумерация нужна постоянно, работайте в EDT.
Почему Ctrl+G не открывает диалог перехода?
Чаще всего фокус стоит не в тексте модуля, а в дереве или окне свойств. Щёлкните в редакторе кода и нажмите сочетание ещё раз. Иногда сочетание перехватывает сторонняя программа, тогда используйте меню «Правка».
Можно ли перейти к строке модуля без конфигуратора?
Да, если выгрузить конфигурацию в файлы и открыть нужный файл .bsl в редакторе с нумерацией. Номера строк в выгрузке совпадают с номерами в конфигураторе.
Номер строки в ошибке указывает на пустую строку или комментарий. Почему?
Скорее всего, код изменили после того, как возникла ошибка, или вы открыли основную конфигурацию вместо конфигурации базы данных. Сверьте версию и ищите по тексту ошибки.
Как быстро вернуться туда, где был до перехода?
Поставьте закладку Ctrl+F2 перед прыжком. Потом вернитесь к ней по F2.