Переход к нужной строке модуля в Конфигураторе и EDT

· 10 мин

Содержание

Чтобы перейти на определенную строку в 1С, откройте модуль в Конфигураторе, поставьте курсор в текст и нажмите Ctrl+G. Появится окно «Перейти к строке»: введите номер и нажмите Enter — курсор встанет в начало нужной строки. В 1С:EDT то же самое делает Ctrl+L.

Частое заблуждение: «команда не работает , пункт серый». Работает, просто фокус стоит не в тексте модуля, а в дереве конфигурации или в окне сообщений. Щёлкните мышью в любое место редактора — и Ctrl+G сразу откликнется. Всё описанное ниже относится к платформе 1С:Предприятие 8.3 и не зависит от конфигурации: в Бухгалтерии, ЗУП и УТ редактор модулей один и тот же.

Горячие клавиши для перехода по строкам модуля

Ctrl+G — главный, но не единственный способ быстро попасть в нужное место. Опытный разработчик почти не листает модуль колесом мыши: на модуле в 15 000 строк это бессмысленно.

КлавишиЧто делаетГде работает
Ctrl+GОкно «Перейти к строке» по номеруКонфигуратор
Ctrl+LПереход к строке по номеру1С:EDT
Ctrl+Home / Ctrl+EndНачало / конец модуляКонфигуратор и EDT
Home / EndНачало / конец текущей строкиКонфигуратор и EDT
Ctrl+FПоиск текста в модулеКонфигуратор и EDT
F3 / Shift+F3Следующее / предыдущее вхождениеКонфигуратор
F12Перейти к определению процедуры или функцииКонфигуратор
Ctrl+Alt+PСписок процедур и функций модуляКонфигуратор
Alt+F2Поставить или снять закладкуКонфигуратор
F2 / Shift+F2Следующая / предыдущая закладкаКонфигуратор

Как выглядит работа с окном перехода:

  1. Откройте нужный модуль: двойной щелчок по объекту в дереве конфигурации, затем вкладка «Модули» или команда открытия модуля из контекстного меню.
  2. Кликните в текст модуля.
  3. Нажмите Ctrl+G.
  4. В поле введите номер строки, например 245.
  5. Нажмите Enter или «ОК».

Если ввести число больше, чем строк в модуле, курсор окажется на последней строке. Ошибки не будет, поэтому легко не заметить, что вы открыли не тот модуль. Сверяйте имя модуля в заголовке вкладки.

Нумерация строк в модуле сквозная и начинается с 1. Пустые строки, комментарии и директивы вроде &НаСервере или #Область тоже считаются. Свёрнутая группа не «съедает» номера: строка 245 остаётся строкой 245, даже если область над ней свёрнута.

Переход к строке через меню Конфигуратора

Если горячие клавиши не срабатывают (например, их перехватывает переключатель раскладки или программа для снимков экрана), используйте меню.

Пункт Правка → Перейти к строке… открывает то же окно, что и Ctrl+G. Рядом в этом меню лежат команды поиска и замены, так что весь навигационный набор собран в одном месте.

Пункт активен, только когда открыт текстовый редактор и фокус стоит в нём. Если он серый, проверьте три вещи:

  • 🖱️ курсор в тексте модуля, а не в дереве конфигурации или в палитре свойств;
  • 📄 открыт именно модуль, а не форма в режиме редактирования элементов (у управляемой формы переключитесь на вкладку «Модуль» внизу редактора формы);
  • 🔒 модуль не открыт только для просмотра из хранилища — переход по строке при этом работает, но если редактор не получил фокус, команда тоже будет недоступна.

Когда модуль открыт, в главном меню Конфигуратора появляется дополнительный пункт Текст. В нём команды работы с блоками, шаблонами и форматированием. Сам переход по номеру живёт в меню Правка.

Номер строки из ошибки и окна отладчика

На практике номер строки почти всегда приходит из сообщения об ошибке. Платформа пишет место сбоя в фигурных скобках, например:

{Документ.РеализацияТоваровУслуг.МодульОбъекта(245)}: Деление на 0

Читается это так: объект метаданных — документ «РеализацияТоваровУслуг», модуль — модуль объекта, строка — 245. Для формы путь длиннее: {Обработка.ЗагрузкаДанных.Форма.Форма.Форма(87)} означает модуль формы «Форма» обработки «ЗагрузкаДанных», строка 87.

Ещё несколько типичных путей, чтобы сразу понимать, куда идти:

Путь в скобкахКакой модуль открыть
{ОбщийМодуль.ОбщегоНазначения.Модуль(1210)}Общие модули → ОбщегоНазначения, строка 1210
{Справочник.Номенклатура.МодульМенеджера(56)}Модуль менеджера справочника «Номенклатура», строка 56
{РегистрНакопления.ТоварыНаСкладах.МодульНабораЗаписей(33)}Модуль набора записей регистра, строка 33
{ВнешняяОбработка.Загрузка.Форма.Форма.Форма(14)}Модуль формы внешней обработки, строка 14

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

Порядок действий:

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

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

Стек вызовов и точки останова в отладчике

Во время отладки вручную вводить номер почти не приходится. Отладчик сам показывает место остановки, а остальные окна позволяют прыгать по коду двойным щелчком:

  • 📚 Стек вызовов (Ctrl+Alt+C) — список процедур, через которые прошло выполнение, с модулем и номером строки. Двойной щелчок по строке стека открывает модуль именно на этом месте.
  • 🔴 Точки останова (Alt+F9) — список всех точек с модулем и строкой. Двойной щелчок переносит к точке.
  • ⚙️ Служебные сообщения — после синтаксического контроля ошибки выводятся внизу. Двойной щелчок по сообщению ставит курсор на ошибочную строку.

Точку останова на строку ставят клавишей F9, когда курсор стоит на этой строке. Удобная связка при разборе ошибки: Ctrl+G → номер из текста ошибки → F9 → повторить действие в пользовательском режиме под отладкой. Программа остановится ровно перед проблемной строкой.

Отладка на рабочей базе останавливает выполнение кода у конкретного пользователя, если вы подключились к его сеансу. Для разбора ошибок пользуйтесь копией базы или собственным сеансом. Повесить точку останова в модуле проведения на сервере, с которым работают 30 человек, — плохая идея.

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

Номер строки — хрупкий ориентир. Достаточно добавить одну строку выше — и все номера ниже сдвинулись. Поэтому часто надёжнее искать по тексту.

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

Ctrl+F открывает окно поиска. Введите фрагмент: имя переменной, кусок текста ошибки, название реквизита. Найденное место подсвечивается, а F3 переходит к следующему вхождению.

Полезные флажки в окне поиска: учёт регистра и поиск целого слова. Целое слово спасает, когда ищете переменную Сумма и не хотите попадать в СуммаНДС и СуммаДокумента.

Поиск во всех текстах конфигурации

Когда неизвестно даже, в каком модуле искать, используйте Правка → Найти во всех текстах. Результаты появятся в отдельном окне списком: модуль и строка с совпадением. Двойной щелчок по результату открывает модуль на нужной строке.

Это лучший способ найти, где формируется текст сообщения пользователю. Скопируйте фразу из окна сообщения 1С, вставьте в поиск по всем текстам — и через пару секунд увидите модуль и строку.

Переход по структуре модуля

Для больших модулей пригодятся ещё три приёма:

  1. Ctrl+Alt+P — список процедур и функций модуля. Начните печатать имя, выберите строку — курсор встанет на объявление.
  2. F12 на имени вызываемой процедуры — переход к её определению, даже если она в общем модуле.
  3. Закладки: Alt+F2 на важной строке, затем F2 для возврата к ней из любого места модуля. Удобно, когда правите одну процедуру и сверяетесь с другой в 2 000 строк ниже.

Как видеть номер текущей строки

В редакторе модулей Конфигуратора номер строки и колонки, где стоит курсор, показывается в строке состояния внизу окна: вида «Стр: 245 Кол: 12». Если строки состояния не видно, включите её в меню Вид.

Номеров на поле слева классический Конфигуратор исторически не выводит. В свежих версиях платформы загляните в Сервис → Параметры, на вкладку «Модули»: если там есть флажок отображения номеров строк, включите его. Если флажка нет — ориентируйтесь на строку состояния и Ctrl+G.

В 1С:EDT нумерация включается штатно, как в любом редакторе на базе Eclipse:

  • щёлкните правой кнопкой по серой полосе слева от текста и включите показ номеров строк;
  • или задайте настройку глобально в параметрах текстовых редакторов (Window → Preferences → General → Editors → Text Editors, флажок отображения номеров строк — в русской локализации пункты переведены).

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

Чем отличается переход по строкам в Конфигураторе, EDT и старых версиях

Основные клавиши перехода устойчивы и мало менялись между версиями платформы. Отличия скорее между инструментами, чем между релизами.

ИнструментПереход к строкеНумерация слеваГде видна текущая строка
Конфигуратор 8.3Ctrl+G, Правка → Перейти к строке…Зависит от версии платформыСтрока состояния
1С:EDTCtrl+LВключается в настройкахСтрока состояния и поле слева
Конфигуратор 8.2Ctrl+GНетСтрока состояния

Ещё несколько различий, которые сбивают с толку:

  • 🧩 Расширения конфигурации . Если ошибка возникла в коде расширения, модуль ищите не в основной конфигурации, а в дереве расширения (Конфигурация → Расширения конфигурации, затем открыть нужное). Номер строки относится к модулю расширения.
  • 📦 Внешние обработки и отчёты. Файл .epf или .erf открывают через Файл → Открыть в Конфигураторе. Дальше переход по строке тот же.
  • 🔀 Модуль формы и модуль объекта. У документа может быть ошибка и в модуле объекта, и в модуле формы с одинаковым номером строки. Смотрите на путь в фигурных скобках: МодульОбъекта или Форма.ФормаДокумента.Форма.
  • 🗄️ Хранилище конфигурации. Пока объект не захвачен, модуль открывается только для чтения. Читать и переходить по строкам можно, редактировать — нет.
Откуда у вас номер строки?

Почему курсор попадает не туда

Ситуация «перешёл на 245 строку, а там пустая строка или комментарий» встречается постоянно. Причины почти всегда одни и те же.

Код изменился после ошибки. Ошибка в журнале регистрации записана вчера, а сегодня кто-то обновил конфигурацию или добавил строки выше. Номер больше не совпадает. Ищите по тексту ошибки или по имени процедуры из стека.

Не тот модуль. У документа есть модуль объекта, модуль менеджера, модули каждой формы. Путь в фигурных скобках однозначно указывает, какой нужен, — читайте его до конца.

Конфигурация базы и основная конфигурация расходятся. В Конфигураторе вы смотрите основную конфигурацию, а база работает на конфигурации базы данных. Если изменения не применены через Конфигурация → Обновить конфигурацию базы данных, номера строк могут не совпадать с тем кодом, который реально выполнялся. Для проверки откройте Конфигурация → Конфигурация базы данных → Открыть конфигурацию БД и найдите модуль там.

Ошибка в общем модуле, а вы смотрите вызывающий код. В цепочке вызовов нижние строки показывают, откуда вызвали процедуру. Если открыть модуль из нижней строки, номер будет «правильным», но строка — не той, где произошло деление на ноль.

Не правьте код прямо в рабочей базе, пока не нашли причину на копии. Переход по строке — безопасная операция, а вот исправление «на глаз» в модуле проведения может сломать учёт у всех пользователей.

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

Почему Ctrl+G ничего не делает?
Фокус стоит не в тексте модуля. Щёлкните мышью в редакторе и нажмите снова. Также проверьте, не перехватывает ли сочетание другая программа, например переключатель раскладки.
Можно ли перейти к строке в пользовательском режиме 1С?
В модулях — нет, код открывается только в Конфигураторе или EDT. В табличных частях документов перехода по номеру строки нет: используйте поиск по списку Ctrl+F или сортировку по колонке «N».
Как перейти к строке во внешней обработке?
Откройте файл .epf через «Файл → Открыть» в Конфигураторе, затем модуль объекта или формы, и нажмите Ctrl+G. Номер в тексте ошибки относится к модулю внутри файла.
Как быстро вернуться к месту, где правил код?
Перед уходом поставьте закладку Alt+F2, а потом возвращайтесь клавишей F2. Закладки живут, пока модуль открыт.
Почему номер из ошибки указывает на пустую строку?
Код изменили после того, как ошибка произошла, или открыт другой модуль. Сверьте путь в фигурных скобках и найдите место по тексту ошибки.