Разработка и Конфигурация · 11 мин
Как найти номер строки в модуле 1С
Как узнать номер строки в модуле 1С: переход по номеру строки в конфигураторе, поиск по тексту, отладчик, окно сообщений об ошибках и поиск по всем модулям конфигурации.
Номер строки в модуле 1С требуется чаще всего в двух ситуациях: когда платформа выдала ошибку с указанием конкретной строки и нужно быстро перейти к проблемному месту, либо когда в тексте модуля на несколько тысяч строк нужно найти определённый фрагмент кода. В конфигураторе 1С для этого есть несколько встроенных инструментов: переход к строке по номеру, контекстный поиск, глобальный поиск по всем модулям и отладчик.
Важно понимать, что сам текстовый редактор модулей в 1С по умолчанию не отображает постоянную нумерацию строк слева, как это делают многие IDE. Поэтому разработчики, перешедшие из других сред, часто теряются: номер строки виден только в строке состояния или через специальную команду перехода. Ниже разобраны все рабочие способы с точными действиями и ограничениями каждого.
Материал применим к конфигуратору 1С:Предприятие 8.3 в обычном и управляемом режиме разработки. Отдельно рассмотрены поиск строки из сообщения об ошибке, работа отладчика и случаи, когда конфигурация закрыта для редактирования.
Где в конфигураторе виден номер текущей строки
Когда модуль открыт в конфигураторе, текущая позиция курсора отображается в строке состояния в нижней части окна. Там указаны два числа через запятую: номер строки и номер колонки, например «152, 18». Это самый простой способ узнать, на какой строке вы находитесь, — достаточно щёлкнуть мышью в нужное место кода и посмотреть вниз окна.
Если строка состояния не видна, проверьте, что окно конфигуратора развёрнуто и не обрезано. В редких случаях при нестандартном масштабировании экрана нижняя панель может уходить за пределы видимой области. Прокрутка модуля колёсиком мыши при этом не меняет номер текущей строки — меняется только позиция курсора, установленная щелчком или клавишами со стрелками.
Постоянной колонки с нумерацией всех строк слева от кода в стандартном редакторе модулей нет. Поэтому ориентироваться «на глаз» по номерам не получится — используйте либо строку состояния, либо команду перехода к конкретной строке.
Как перейти к строке по её номеру
Основной инструмент — команда «Перейти к строке». Откройте нужный модуль, нажмите сочетание клавиш Ctrl+G (в русской раскладке работает так же), в появившемся диалоге введите номер строки и подтвердите ввод клавишей Enter. Курсор переместится в начало указанной строки, а она окажется в видимой области редактора.
Та же команда доступна через меню: Текст → Перейти к строке. Если пункта нет или он неактивен, убедитесь, что фокус находится в окне редактора модуля, а не в дереве конфигурации или другой панели — команда работает только при активном текстовом редакторе кода.
- 1Откройте модуль двойным щелчком по объекту в дереве конфигурации
- 2Щёлкните в область текста модуля, чтобы редактор получил фокус
- 3Нажмите Ctrl+G и введите номер строки из сообщения об ошибке
- 4Нажмите Enter и проверьте позицию курсора по строке состояния
- 5Если строка не та, уточните, из какого именно модуля была ошибка: объекта, формы, менеджера или общего модуля
Частая ситуация: разработчик вводит правильный номер, но попадает «не туда». Причина почти всегда в том, что открыт не тот модуль. У одного объекта может быть несколько модулей — модуль объекта, модуль формы, модуль менеджера, модуль команды. Номер строки в ошибке относится к конкретному модулю, и его имя обычно указано в тексте самой ошибки.
Как найти строку из сообщения об ошибке
Когда 1С выдаёт ошибку выполнения, в сообщении обычно указано место: имя модуля и номер строки в фигурных скобках, например «{ОбщийМодуль.РасчётЦен.Модуль(245)}: Деление на ноль». Цифра в скобках — это и есть номер строки, на которой произошёл сбой.
Если ошибка появилась в конфигураторе в окне сообщений (например, при проверке конфигурации или синтаксическом контроле модуля), самый быстрый путь — двойной щелчок по строке сообщения. Конфигуратор сам откроет нужный модуль и установит курсор на проблемную строку. Это исключает ошибки ручного ввода номера.
Если ошибка пришла от пользователя в виде скриншота или текста, действуйте вручную: найдите в сообщении имя модуля, откройте его через дерево конфигурации или поиск по метаданным, затем перейдите к строке через Ctrl+G. Имейте в виду, что номер строки актуален только для той версии конфигурации, в которой возникла ошибка: если код с тех пор редактировался, строки могли сместиться.
Поиск нужного места по тексту кода
Если номер строки неизвестен, но известен фрагмент кода — имя процедуры, переменной или текст сообщения, — используйте поиск. Внутри открытого модуля нажмите Ctrl+F, введите фрагмент и перебирайте вхождения клавишей F3 (следующее) или Shift+F3 (предыдущее). Поиск по умолчанию нечувствителен к регистру, что удобно для русскоязычного кода.
Для поиска по всей конфигурации служит глобальный поиск: меню Правка → Глобальный поиск или сочетание Ctrl+Shift+F. Укажите текст, при необходимости ограничьте область поиска (например, только модули) и запустите. Результаты выводятся списком, и двойной щелчок по любой строке результата открывает модуль точно на найденном месте с указанием номера строки.
Глобальный поиск незаменим, когда нужно найти все места вызова процедуры или все модули, где встречается определённый запрос. Учитывайте ограничение: поиск ищет текстовое совпадение, поэтому одноимённые переменные в разных модулях дадут лишние результаты — их придётся отфильтровать вручную по контексту.
// Пример: сообщение об ошибке
// {Документ.РеализацияТоваров.МодульОбъекта(312)}: Поле объекта не обнаружено (Склад)
// Открываем модуль объекта документа и жмём Ctrl+G, вводим 312Как отладчик помогает выйти на нужную строку
Отладчик — самый точный способ попасть на строку, где реально происходит ошибка, особенно когда номер из сообщения не совпадает с ожиданиями (например, ошибка возникает в динамически формируемом коде или в вызове из другого модуля). Включите отладку в конфигураторе: Отладка → Начать отладку, предварительно убедившись, что отладка разрешена в свойствах информационной базы.
Чтобы остановиться на конкретной строке, установите точку останова: щёлкните слева от нужной строки в редакторе модуля или поставьте курсор на строку и нажмите F9. При выполнении кода отладчик остановится именно там, и вы увидите номер строки в строке состояния, значения переменных и стек вызовов.
Стек вызовов (окно доступно через меню Отладка) особенно полезен, когда ошибка возникает глубоко в цепочке вызовов: он показывает последовательность процедур с номерами строк, и двойной щелчок по любому уровню стека переносит вас на соответствующую строку соответствующего модуля.
Сравнение вариантов
Когда известен точный номер строки и нужный модуль. Не работает, если модуль закрыт для редактирования или открыт не тот модуль.
Самый быстрый способ при синтаксических ошибках и проверке конфигурации. Не подходит для ошибок, присланных пользователями текстом.
Когда номер строки неизвестен, но есть фрагмент кода. Требует ручной фильтрации лишних совпадений.
Для ошибок времени выполнения и сложных цепочек вызовов. Требует права на отладку и воспроизводимой ситуации.
Ограничения и частые ошибки
Несколько типовых ситуаций мешают найти строку даже при правильных действиях. Первая — модуль внешней обработки или расширения: номер строки в ошибке относится к коду расширения, и искать его нужно в модуле расширения, а не в основной конфигурации. Вторая — код, сгенерированный динамически через «Выполнить» или «Вычислить»: для него физической строки в модуле не существует, и анализировать такие места можно только через отладку.
Третья ловушка — рассинхронизация версий. Пользователь присылает ошибку с номером строки из рабочей базы, а разработчик смотрит актуальную версию конфигурации, где код уже изменён. Всегда сверяйте версию конфигурации в базе пользователя с той, что открыта у вас, иначе переход по номеру приведёт к неверному месту.
Как проверить, что вы нашли правильное место
После перехода к строке убедитесь, что код на ней логически связан с текстом ошибки. Если ошибка «Поле объекта не обнаружено (Склад)», на найденной строке должно быть обращение к реквизиту «Склад». Если вместо этого там пустая строка или комментарий — вы, скорее всего, в другом модуле или в другой версии кода.
Дополнительная проверка — контекстный синтаксический контроль модуля (кнопка на панели инструментов или через меню Текст). Если ошибка синтаксическая, после исправления повторная проверка должна пройти без сообщений. Для ошибок времени выполнения воспроизведите ситуацию под отладчиком и убедитесь, что выполнение проходит проблемную строку без остановки.
Как проверить результат
На найденной строке есть обращение к объекту или операция из сообщения об ошибке
На строке пусто, комментарий или несвязанный код — открыт не тот модуль или версия
Заголовок окна модуля совпадает с именем модуля из ошибки
Имена различаются — например, открыт модуль формы вместо модуля объекта
После исправления сценарий выполняется без сообщений
Ошибка повторяется на той же или соседней строке — причина не устранена
Что важно запомнить
Номер текущей строки виден в строке состояния конфигуратора, переход по номеру выполняется через Ctrl+G, а двойной щелчок по сообщению об ошибке открывает модуль сразу на проблемном месте. Всегда сверяйте имя модуля и версию конфигурации — большинство «неправильных» строк объясняется поиском не в том модуле или не в той версии кода.
Частые вопросы
Почему в редакторе модуля нет колонки с номерами строк?
Стандартный редактор модулей конфигуратора 1С не отображает постоянную нумерацию строк. Текущая позиция курсора показывается в строке состояния внизу окна в формате «строка, колонка», а для перехода к конкретной строке используется команда Ctrl+G. Это штатное поведение платформы, а не ошибка настройки.
Что означает запись вида {ОбщийМодуль.Расчёты.Модуль(245)} в ошибке?
Это указание места возникновения ошибки: имя модуля (общий модуль «Расчёты») и номер строки 245 в скобках. Чтобы попасть на это место, откройте указанный общий модуль в дереве конфигурации и перейдите к строке 245 через Ctrl+G.
Как найти строку, если конфигурация закрыта паролем или на поддержке?
Просмотр модулей обычно доступен даже при запрете изменений — откройте модуль в режиме чтения и используйте Ctrl+G и поиск. Если модуль поставщика полностью закрыт от просмотра, узнать содержимое строки нельзя; в этом случае анализ ведётся через отладчик и стек вызовов либо запросом информации у поставщика конфигурации.
Номер строки из ошибки пользователя не совпадает с кодом у меня. Что делать?
Сверьте версию конфигурации в информационной базе пользователя с вашей версией: если код редактировался после возникновения ошибки, номера строк сместились. Откройте версию конфигурации, соответствующую базе пользователя (из хранилища или копии), и ищите строку в ней.
Можно ли найти строку, где вызывается конкретная процедура, во всей конфигурации?
Да, через глобальный поиск (Ctrl+Shift+F): введите имя процедуры, ограничьте область поиска модулями и запустите. В результатах будут перечислены все вхождения с указанием модулей и номеров строк; двойной щелчок по строке результата открывает модуль на нужном месте.
Работает ли переход к строке в толстом и тонком клиенте при отладке?
Сама команда Ctrl+G — это функция конфигуратора, а не клиентского приложения. В отладчике вы останавливаетесь на строках через точки останова и стек вызовов, и конфигуратор показывает текущую строку исполнения независимо от типа клиента, в котором запущен сеанс.