Разработка и Конфигурация · 10 мин
Как перейти по номеру строки в 1С
Как перейти по номеру строки в 1С: Ctrl+G в конфигураторе, переход из сообщения об ошибке, поиск строки в модуле и запросе. Пошаговые инструкции и советы.
Переход по номеру строки — одна из самых частых операций при работе с кодом в 1С. Она нужна, когда сообщение об ошибке указывает конкретную строку модуля, когда коллега просит посмотреть «строку 1542 в общем модуле» или когда стек вызовов в отладчике ссылается на определённое место в коде. В конфигураторе для этого есть штатная команда, работающая во всех версиях платформы 1С:Предприятие 8.
Базовый способ — сочетание клавиш Ctrl+G (или меню «Правка → Перейти к строке...») в открытом окне модуля. Платформа покажет диалог ввода номера и мгновенно переместит курсор на нужную позицию. Это работает в модулях объектов, общих модулях, модулях форм и в редакторе запросов.
Важно понимать: номер строки в сообщении об ошибке относится к конкретному модулю конкретного объекта. Если вы откроете не тот модуль и перейдёте по тому же номеру, попадёте в совершенно другое место кода. Поэтому сначала идентифицируйте модуль, и только потом выполняйте переход.
Как перейти к строке через Ctrl+G в конфигураторе
Стандартный сценарий выглядит так. Откройте конфигуратор, найдите нужный объект в дереве конфигурации (например, общий модуль или документ) и откройте его модуль. Убедитесь, что фокус находится в окне редактора кода — щёлкните мышью по тексту модуля.
Нажмите Ctrl+G. Появится небольшое диалоговое окно «Перейти к строке» с полем ввода. Введите номер строки, например 247, и нажмите Enter или кнопку «Перейти». Курсор переместится в начало указанной строки, и она будет видна на экране.
- 1Откройте конфигуратор и нужный модуль объекта
- 2Щёлкните мышью в окно редактора кода, чтобы установить фокус
- 3Нажмите Ctrl+G или выберите «Правка → Перейти к строке...»
- 4Введите номер строки и нажмите Enter
- 5Проверьте, что курсор встал на нужную строку — сверьте содержимое с ожидаемым
Если диалог не открывается, чаще всего фокус находится не в редакторе кода, а в дереве конфигурации или другой панели. Щёлкните по тексту модуля и повторите комбинацию. Альтернатива — пункт меню «Правка → Перейти к строке...», он доступен независимо от того, какая панель активна, но сам модуль должен быть открыт.
Переход к строке из сообщения об ошибке
Когда при выполнении кода возникает ошибка, 1С выводит сообщение вида: «{ОбщийМодуль.РасчётЦен.Модуль(154)}: Ошибка при вызове метода контекста...». Здесь в скобках указан номер строки, а перед ним — полный путь к модулю. Это самый информативный формат, и тратить время на ручной поиск не нужно.
В окне сообщений конфигуратора (оно открывается автоматически при ошибках компиляции модуля) двойной щелчок по строке сообщения об ошибке автоматически открывает нужный модуль и ставит курсор на указанную строку. Это быстрее, чем запоминать номер и вводить его через Ctrl+G.
Если ошибка возникла в режиме предприятия (а не при проверке модуля), текст ошибки показывается в диалоге. Скопируйте его, найдите фрагмент в фигурных скобках — это путь к модулю и номер строки. Затем откройте этот модуль в конфигураторе и перейдите по номеру через Ctrl+G.
Ошибки при проверке модуля
При сохранении или явной проверке модуля («Конфигурация → Проверка конфигурации» или кнопка проверки синтаксиса) все ошибки выводятся списком в окно сообщений. Каждая строка списка кликабельна. Двойной щелчок открывает модуль на строке с ошибкой, что удобно при исправлении нескольких проблем подряд: исправили одну — щёлкнули следующую строку списка.
Переход к строке при отладке
В режиме отладки платформа сама позиционирует курсор на текущей исполняемой строке — она подсвечивается (обычно жёлтым фоном). Если отладчик остановился на точке останова или по ошибке, вы уже находитесь на нужной строке, и Ctrl+G не требуется.
Окно «Стек вызовов» (открывается через «Отладка → Стек вызовов») показывает цепочку вызовов процедур. Двойной щелчок по любой строке стека переводит вас в соответствующий модуль на строку, откуда был выполнен вызов. Это удобно, когда нужно понять, как программа дошла до проблемного места.
Если после перехода по номеру строки код в этой строке не похож на источник ошибки, проверьте, не редактировал ли кто-то модуль после возникновения ошибки. Номера строк смещаются при добавлении или удалении строк кода, и старое сообщение об ошибке перестаёт быть точным.
Полезный приём: если ошибка воспроизводится, поставьте точку останова чуть выше предполагаемой проблемной строки (щелчок по левому полю редактора или F9) и запустите отладку. Так вы увидите значения переменных непосредственно перед сбоем, а не только сам факт ошибки.
Переход к строке в модуле формы и внешней обработке
Модуль формы открывается из конфигуратора: правый щелчок по форме в дереве объекта → «Открыть модуль». Дальше работает тот же Ctrl+G. Учитывайте, что в сообщениях об ошибках модули форм обозначаются как «Форма.ИмяФормы.Форма.Модуль» — это помогает отличить их от модуля объекта.
Для внешних обработок и отчётов (файлы .epf и .erf) порядок тот же: откройте файл через «Файл → Открыть», затем модуль объекта или формы, и используйте Ctrl+G. Если обработка открыта в режиме предприятия и выдаёт ошибку, номер строки будет относиться к модулю внутри файла — открывайте именно этот файл в конфигураторе, а не похожую обработку из справочника дополнительных отчётов.
Дополнительные способы навигации по коду
Переход по номеру строки — не единственный способ быстро попасть в нужное место. Часто удобнее альтернативы:
- Ctrl+F — поиск по тексту модуля, если известен фрагмент кода, а не номер строки.
- Ctrl+Shift+P или выпадающий список процедур над редактором — переход к конкретной процедуре или функции модуля.
- F12 (переход к определению) — курсор на имени процедуры, и платформа откроет место её объявления, даже в другом модуле.
- Ctrl+Minus (Ctrl+-) — возврат назад после перехода к определению или поиска.
Закладки (Ctrl+F2 — установить/снять, F2 — следующая закладка) помогают, когда вы работаете с несколькими местами большого модуля и регулярно возвращаетесь к ним. В отличие от перехода по номеру, закладки сохраняются между переключениями окон в пределах сессии конфигуратора.
Сравнение вариантов
Подходит, когда точный номер известен из ошибки или сообщения коллеги. Ограничение: номер теряет смысл после редактирования модуля.
Самый быстрый путь из окна сообщений. Работает только для ошибок, выведенных в это окно.
Надёжен, когда код менялся и номера строк сместились. Требует знать фрагмент текста.
Даёт контекст всей цепочки вызовов. Доступен только в запущенном сеансе отладки.
Типичные ошибки и их причины
Первая распространённая ситуация: переход выполнен, но на указанной строке безобидный комментарий или пустая строка. Причина почти всегда в том, что модуль изменили после того, как было зафиксировано сообщение об ошибке. Ищите проблемный код по фрагменту текста из сообщения, а не по номеру.
Вторая ошибка — переход по номеру в неправильном модуле. В типовых конфигурациях десятки общих модулей, и номер строки без привязки к имени модуля ничего не значит. Всегда читайте путь в фигурных скобках сообщения об ошибке целиком.
Третья ситуация касается внешних файлов: ошибка указывает строку в модуле обработки, открытой в режиме предприятия, а вы ищете её в обработке, подключённой через механизм дополнительных отчётов и обработок. Версии файлов могут различаться. Открывайте в конфигураторе именно тот файл, который запускался.
Как проверить, что вы попали на нужную строку
После перехода сверьте содержимое строки с текстом сообщения об ошибке. Если в ошибке упоминается метод «Записать()», а на строке — чтение справочника, что-то пошло не так: либо сместились номера, либо открыт другой модуль.
Дополнительная проверка — включить отображение номеров строк в редакторе, если оно выключено. В окне редактора кода номера строк обычно видны слева; если их нет, проверьте настройки редактора модулей в параметрах конфигуратора. Видимые номера позволяют мгновенно подтвердить позицию курсора.
Как проверить результат
Код на строке соответствует тексту сообщения об ошибке
На строке комментарий, пустая строка или несвязанный код — номера сместились
Совпадает с путём в фигурных скобках сообщения об ошибке
Открыт другой объект или другая форма
Совпадает с введённым номером
Курсор в конце модуля — номер превышал длину модуля
Часто задаваемые вопросы
Что делать, если Ctrl+G не работает?
Проверьте, что фокус находится в окне редактора кода — щёлкните по тексту модуля. Если не помогло, используйте меню «Правка → Перейти к строке...». Также убедитесь, что открыт именно модуль, а не, например, окно справки или палитра свойств.
Как перейти к строке, если известен только текст ошибки без номера?
Используйте поиск по модулю (Ctrl+F) с фрагментом кода или именем метода из текста ошибки. Если модуль неизвестен, выполните глобальный поиск по конфигурации («Правка → Глобальный поиск») по уникальному фрагменту текста ошибки.
Почему номер строки в ошибке не совпадает с реальным кодом?
Модуль редактировался после возникновения ошибки: добавление или удаление строк сдвигает нумерацию. Также возможно, что ошибка зафиксирована в другой информационной базе с другой версией конфигурации. Ориентируйтесь на текст кода, а не только на номер.
Можно ли перейти по номеру строки в режиме «Предприятие»?
Нет, редактор кода и навигация по строкам доступны только в конфигураторе. В режиме предприятия можно лишь прочитать текст ошибки и скопировать из него путь к модулю и номер строки для последующего перехода в конфигураторе.
Как быстро вернуться назад после перехода к определению процедуры?
Нажмите Ctrl+- (Ctrl и минус). Платформа вернёт курсор в предыдущую позицию. Это работает после переходов к определению (F12), поиска и других навигационных команд.
Работает ли переход по номеру строки в EDT?
Да, в 1C:Enterprise Development Tools также действует Ctrl+G (или Ctrl+L в некоторых схемах клавиатур) для перехода к строке в редакторе модулей. Двойной щелчок по ошибкам в панели проблем тоже открывает нужное место кода.
Что важно запомнить
Переход по номеру строки выполняется через Ctrl+G в открытом модуле конфигуратора, а из окна сообщений — двойным щелчком по ошибке. Всегда сверяйте путь к модулю в сообщении об ошибке и помните, что номера строк смещаются после редактирования кода.