Переход к нужной строке модуля в Конфигураторе и EDT
Содержание
Чтобы перейти на определенную строку в 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 | Следующая / предыдущая закладка | Конфигуратор |
Как выглядит работа с окном перехода:
- Откройте нужный модуль: двойной щелчок по объекту в дереве конфигурации, затем вкладка «Модули» или команда открытия модуля из контекстного меню.
- Кликните в текст модуля.
- Нажмите
Ctrl+G. - В поле введите номер строки, например
245. - Нажмите
Enterили «ОК».
Если ввести число больше, чем строк в модуле, курсор окажется на последней строке. Ошибки не будет, поэтому легко не заметить, что вы открыли не тот модуль. Сверяйте имя модуля в заголовке вкладки.
Нумерация строк в модуле сквозная и начинается с 1. Пустые строки, комментарии и директивы вроде &НаСервере или #Область тоже считаются. Свёрнутая группа не «съедает» номера: строка 245 остаётся строкой 245, даже если область над ней свёрнута.
Переход к строке через меню Конфигуратора
Если горячие клавиши не срабатывают (например, их перехватывает переключатель раскладки или программа для снимков экрана), используйте меню.
Пункт Правка → Перейти к строке… открывает то же окно, что и Ctrl+G. Рядом в этом меню лежат команды поиска и замены, так что весь навигационный набор собран в одном месте.
Пункт активен, только когда открыт текстовый редактор и фокус стоит в нём. Если он серый, проверьте три вещи:
- 🖱️ курсор в тексте модуля, а не в дереве конфигурации или в палитре свойств;
- 📄 открыт именно модуль, а не форма в режиме редактирования элементов (у управляемой формы переключитесь на вкладку «Модуль» внизу редактора формы);
- 🔒 модуль не открыт только для просмотра из хранилища — переход по строке при этом работает, но если редактор не получил фокус, команда тоже будет недоступна.
Когда модуль открыт, в главном меню Конфигуратора появляется дополнительный пункт Текст. В нём команды работы с блоками, шаблонами и форматированием. Сам переход по номеру живёт в меню Правка.
Номер строки из ошибки и окна отладчика
На практике номер строки почти всегда приходит из сообщения об ошибке. Платформа пишет место сбоя в фигурных скобках, например:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(245)}: Деление на 0
Читается это так: объект метаданных — документ «РеализацияТоваровУслуг», модуль — модуль объекта, строка — 245. Для формы путь длиннее: {Обработка.ЗагрузкаДанных.Форма.Форма.Форма(87)} означает модуль формы «Форма» обработки «ЗагрузкаДанных», строка 87.
Ещё несколько типичных путей, чтобы сразу понимать, куда идти:
| Путь в скобках | Какой модуль открыть |
|---|---|
{ОбщийМодуль.ОбщегоНазначения.Модуль(1210)} | Общие модули → ОбщегоНазначения, строка 1210 |
{Справочник.Номенклатура.МодульМенеджера(56)} | Модуль менеджера справочника «Номенклатура», строка 56 |
{РегистрНакопления.ТоварыНаСкладах.МодульНабораЗаписей(33)} | Модуль набора записей регистра, строка 33 |
{ВнешняяОбработка.Загрузка.Форма.Форма.Форма(14)} | Модуль формы внешней обработки, строка 14 |
Если в начале пути стоит ВнешняяОбработка или ВнешнийОтчет, искать в дереве конфигурации бесполезно: модуль лежит в отдельном файле, который запускал пользователь.
Порядок действий:
- Скопируйте текст ошибки целиком. В окне ошибки пользовательского режима нажмите «Подробно» — там видна вся цепочка вызовов.
- В Конфигураторе найдите объект в дереве. Быстрее всего — встать в дерево и начать печатать имя объекта: дерево прокрутится к совпадению.
- Откройте нужный модуль.
Ctrl+G→ номер из скобок →Enter.
Если в подробном тексте несколько строк в фигурных скобках, это стек вызовов. Верхняя строка — где упало, нижние — кто вызвал. Начинайте с верхней.
Стек вызовов и точки останова в отладчике
Во время отладки вручную вводить номер почти не приходится. Отладчик сам показывает место остановки, а остальные окна позволяют прыгать по коду двойным щелчком:
- 📚 Стек вызовов (
Ctrl+Alt+C) — список процедур, через которые прошло выполнение, с модулем и номером строки. Двойной щелчок по строке стека открывает модуль именно на этом месте. - 🔴 Точки останова (
Alt+F9) — список всех точек с модулем и строкой. Двойной щелчок переносит к точке. - ⚙️ Служебные сообщения — после синтаксического контроля ошибки выводятся внизу. Двойной щелчок по сообщению ставит курсор на ошибочную строку.
Точку останова на строку ставят клавишей F9, когда курсор стоит на этой строке. Удобная связка при разборе ошибки: Ctrl+G → номер из текста ошибки → F9 → повторить действие в пользовательском режиме под отладкой. Программа остановится ровно перед проблемной строкой.
Отладка на рабочей базе останавливает выполнение кода у конкретного пользователя, если вы подключились к его сеансу. Для разбора ошибок пользуйтесь копией базы или собственным сеансом. Повесить точку останова в модуле проведения на сервере, с которым работают 30 человек, — плохая идея.
Поиск текста вместо номера строки
Номер строки — хрупкий ориентир. Достаточно добавить одну строку выше — и все номера ниже сдвинулись. Поэтому часто надёжнее искать по тексту.
Поиск внутри модуля
Ctrl+F открывает окно поиска. Введите фрагмент: имя переменной, кусок текста ошибки, название реквизита. Найденное место подсвечивается, а F3 переходит к следующему вхождению.
Полезные флажки в окне поиска: учёт регистра и поиск целого слова. Целое слово спасает, когда ищете переменную Сумма и не хотите попадать в СуммаНДС и СуммаДокумента.
Поиск во всех текстах конфигурации
Когда неизвестно даже, в каком модуле искать, используйте Правка → Найти во всех текстах. Результаты появятся в отдельном окне списком: модуль и строка с совпадением. Двойной щелчок по результату открывает модуль на нужной строке.
Это лучший способ найти, где формируется текст сообщения пользователю. Скопируйте фразу из окна сообщения 1С, вставьте в поиск по всем текстам — и через пару секунд увидите модуль и строку.
Переход по структуре модуля
Для больших модулей пригодятся ещё три приёма:
Ctrl+Alt+P— список процедур и функций модуля. Начните печатать имя, выберите строку — курсор встанет на объявление.F12на имени вызываемой процедуры — переход к её определению, даже если она в общем модуле.- Закладки:
Alt+F2на важной строке, затемF2для возврата к ней из любого места модуля. Удобно, когда правите одну процедуру и сверяетесь с другой в 2 000 строк ниже.
Как видеть номер текущей строки
В редакторе модулей Конфигуратора номер строки и колонки, где стоит курсор, показывается в строке состояния внизу окна: вида «Стр: 245 Кол: 12». Если строки состояния не видно, включите её в меню Вид.
Номеров на поле слева классический Конфигуратор исторически не выводит. В свежих версиях платформы загляните в Сервис → Параметры, на вкладку «Модули»: если там есть флажок отображения номеров строк, включите его. Если флажка нет — ориентируйтесь на строку состояния и Ctrl+G.
В 1С:EDT нумерация включается штатно, как в любом редакторе на базе Eclipse:
- щёлкните правой кнопкой по серой полосе слева от текста и включите показ номеров строк;
- или задайте настройку глобально в параметрах текстовых редакторов (
Window → Preferences → General → Editors → Text Editors, флажок отображения номеров строк — в русской локализации пункты переведены).
Если часто разбираете ошибки по номерам строк и работаете с конфигурацией в EDT, сразу включите нумерацию. Сопоставлять текст ошибки с кодом станет заметно быстрее.
Чем отличается переход по строкам в Конфигураторе, EDT и старых версиях
Основные клавиши перехода устойчивы и мало менялись между версиями платформы. Отличия скорее между инструментами, чем между релизами.
| Инструмент | Переход к строке | Нумерация слева | Где видна текущая строка |
|---|---|---|---|
| Конфигуратор 8.3 | Ctrl+G, Правка → Перейти к строке… | Зависит от версии платформы | Строка состояния |
| 1С:EDT | Ctrl+L | Включается в настройках | Строка состояния и поле слева |
| Конфигуратор 8.2 | Ctrl+G | Нет | Строка состояния |
Ещё несколько различий, которые сбивают с толку:
- 🧩 Расширения конфигурации
. Если ошибка возникла в коде расширения, модуль ищите не в основной конфигурации, а в дереве расширения (
Конфигурация → Расширения конфигурации, затем открыть нужное). Номер строки относится к модулю расширения. - 📦 Внешние обработки и отчёты. Файл
.epfили.erfоткрывают черезФайл → Открытьв Конфигураторе. Дальше переход по строке тот же. - 🔀 Модуль формы и модуль объекта. У документа может быть ошибка и в модуле объекта, и в модуле формы с одинаковым номером строки. Смотрите на путь в фигурных скобках:
МодульОбъектаилиФорма.ФормаДокумента.Форма. - 🗄️ Хранилище конфигурации. Пока объект не захвачен, модуль открывается только для чтения. Читать и переходить по строкам можно, редактировать — нет.
Почему курсор попадает не туда
Ситуация «перешёл на 245 строку, а там пустая строка или комментарий» встречается постоянно. Причины почти всегда одни и те же.
Код изменился после ошибки. Ошибка в журнале регистрации записана вчера, а сегодня кто-то обновил конфигурацию или добавил строки выше. Номер больше не совпадает. Ищите по тексту ошибки или по имени процедуры из стека.
Не тот модуль. У документа есть модуль объекта, модуль менеджера, модули каждой формы. Путь в фигурных скобках однозначно указывает, какой нужен, — читайте его до конца.
Конфигурация базы и основная конфигурация расходятся. В Конфигураторе вы смотрите основную конфигурацию, а база работает на конфигурации базы данных. Если изменения не применены через Конфигурация → Обновить конфигурацию базы данных, номера строк могут не совпадать с тем кодом, который реально выполнялся. Для проверки откройте Конфигурация → Конфигурация базы данных → Открыть конфигурацию БД и найдите модуль там.
Ошибка в общем модуле, а вы смотрите вызывающий код. В цепочке вызовов нижние строки показывают, откуда вызвали процедуру. Если открыть модуль из нижней строки, номер будет «правильным», но строка — не той, где произошло деление на ноль.
Не правьте код прямо в рабочей базе, пока не нашли причину на копии. Переход по строке — безопасная операция, а вот исправление «на глаз» в модуле проведения может сломать учёт у всех пользователей.
Частые вопросы
Почему Ctrl+G ничего не делает?
Можно ли перейти к строке в пользовательском режиме 1С?
Ctrl+F или сортировку по колонке «N».