К статье
Практический материал

Разработка и Конфигурация · 9 мин

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

Как быстро перейти на нужную строку в 1С: Ctrl+G в модуле и запросе, переход к строке табличного документа, программное позиционирование на строке таблицы.

Фраза «перейти на строку» в контексте 1С означает сразу несколько разных задач. Разработчику нужно попасть на конкретную строку модуля по номеру из сообщения об ошибке. Пользователю — быстро найти строку в длинном документе или табличном документе. Программисту — установить курсор на нужную строку табличной части из кода. Каждая из этих ситуаций решается своим инструментом, и смешивать их не стоит.

Самый частый сценарий — переход по номеру строки в конфигураторе. Когда платформа выдаёт ошибку вида «{ОбщийМодуль.Расчеты.Модуль(245)}: Переменная не определена», вручную листать модуль до 245-й строки долго и нерационально. Для этого есть штатная комбинация клавиш и команда меню, которые работают во всех текстовых редакторах платформы.

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

Переход на строку по номеру в конфигураторе (Ctrl+G)

Основной инструмент разработчика — команда «Перейти к строке». Откройте нужный модуль (общий модуль, модуль объекта, модуль формы), нажмите Ctrl+G и в появившемся окне введите номер строки. После нажатия Enter курсор встанет в начало указанной строки, и она будет подсвечена.

Та же команда доступна через меню: Текст → Перейти к строке (в некоторых версиях — «Правка → Перейти к строке»). Это удобно, если горячие клавиши переназначены или конфигуратор запущен в терминальном сеансе, где часть сочетаний перехватывается системой.

Команда работает не только в модулях, но и в любом текстовом редакторе платформы: в редакторе запроса (текст запроса), в текстовых документах, открытых в конфигураторе, в макетах типа «Текстовый документ». Номер строки считается от единицы, включая пустые строки и комментарии.

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

Как правильно найти строку из сообщения об ошибке

Ошибки времени выполнения в 1С содержат указание на место в коде в формате {ИмяОбъекта(НомерСтроки)}. Например, запись {Документ.РеализацияТоваров.МодульОбъекта(158)} означает: модуль объекта документа «РеализацияТоваров», строка 158. Сначала откройте именно тот модуль, который указан, — номер строки имеет смысл только в его контексте.

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

Для ошибок в запросах платформа указывает номер строки внутри текста запроса, а не модуля. Откройте текст запроса (через конструктор или как литерал в модуле) и переходите на строку уже внутри него — Ctrl+G работает и там.

Переход к строке в табличном документе и макете

Табличные документы (печатные формы, отчёты в режиме просмотра, макеты) не поддерживают переход по номеру строки через Ctrl+G. Здесь используется поиск: нажмите Ctrl+F, введите значение ячейки или фрагмент текста и нажмите «Найти далее». Платформа последовательно подсветит все совпадения.

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

В макетах табличных документов в конфигураторе дополнительно работают именованные области. Кликните по имени области в левой панели или выберите её через Таблица → Имена → Именованные области — курсор перейдёт к началу области. Это удобно при отладке печатных форм, когда нужно быстро найти конкретный шаблон строки.

Навигация по строкам в документах и списках в режиме предприятия

В табличных частях документов (например, «Товары» в реализации) переход по номеру строки напрямую не предусмотрен интерфейсом. Практичные варианты — сортировка по нужной колонке кликом по заголовку, поиск через Ctrl+F по значению в текущей колонке и фильтрация. В длинных табличных частях поиск — самый быстрый способ попасть на нужную строку.

В динамических списках (списки документов, справочников) работают: поиск по текущей колонке (Ctrl+F), поиск по номеру/наименованию (отдельная строка поиска в шапке списка), отбор (Ctrl+Shift+F или кнопка «Найти» в зависимости от интерфейса) и сортировка. Для журналов документов удобно искать по номеру документа — список сразу спозиционируется на нужной строке.

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

Если поиск в списке не находит заведомо существующую строку, проверьте, не установлен ли отбор, скрывающий её. Сбросьте отбор и повторите поиск — большинство «пропавших» строк находится именно так.
ПЗ
Практическое замечание

Программный переход на строку в коде

Разработчику часто нужно установить курсор на конкретную строку табличной части или списка из кода формы. Для этого используется свойство ТекущаяСтрока расширения таблицы формы. Для табличной части ему присваивается индекс строки (нумерация с нуля) или идентификатор строки:

// Позиционирование на строке табличной части по индексу

ИндексСтроки = Объект.Товары.Количество() - 1;

Элементы.Товары.ТекущаяСтрока = ИндексСтроки;

// Позиционирование на найденной строке

НайденныеСтроки = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура", ИскомаяНоменклатура));

Если НайденныеСтроки.Количество() > 0 Тогда

Элементы.Товары.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();

КонецЕсли;

Для динамического списка на форме ТекущаяСтрока принимает ссылку на объект:

// Спозиционировать список документов на конкретном документе

Элементы.Список.ТекущаяСтрока = ДокументСсылка;

Дополнительно полезен метод ВыделитьСтроку() / работа со свойством ВыделенныеСтроки для множественного выделения, а также стандартная обработка ПоказатьЗначение(), которая открывает объект и позиционируется на нём. При работе с табличным документом из кода активную область задают через Элементы.ТабличныйДокумент.ТекущаяОбласть.

bsl
Элементы.Товары.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();

Настройки и ограничения, о которых стоит знать

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

Учтите ограничения: Ctrl+G не работает в формах в режиме предприятия, в табличных документах и в полях ввода — там переход по номеру строки не предусмотрен платформой. В управляемых формах программная установка ТекущаяСтрока возможна только на сервере или в клиентском контексте формы, но не из внешнего кода без доступа к форме.

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

Типичные ошибки
01
Искать строку ошибки в модуле формы, когда ошибка указана в модуле объекта — это разные модули с разной нумерацией
02
Править код по номеру строки из чужой базы, не проверив совпадение версий конфигурации
03
Считать, что Ctrl+G работает в табличном документе — там нужен поиск Ctrl+F
04
Присваивать ТекущаяСтрока индекс вместо идентификатора строки для динамических списков — для списков нужна ссылка

Частые вопросы о переходе на строку в 1С

Как перейти на строку в модуле, если известен только текст ошибки без номера?

Используйте поиск по модулю (Ctrl+F) по уникальному фрагменту из текста ошибки — имени переменной, процедуры или сообщения. Также помогает двойной клик по строке в окне сообщений конфигуратора: платформа сама откроет модуль и спозиционируется на связанной строке, если ошибка имеет привязку к коду.

Работает ли Ctrl+G в тонком клиенте и веб-клиенте?

В режиме предприятия (любой клиент) Ctrl+G не используется, так как модули там недоступны. В конфигураторе, который существует только в толстом клиенте и в EDT, комбинация работает стандартно. В EDT переход к строке выполняется через Ctrl+L.

Как перейти на последнюю строку табличной части документа?

В интерфейсе — клавишей End или Ctrl+End при активной табличной части. Программно: вычислите индекс последней строки как Количество() минус один и присвойте его свойству ТекущаяСтрока элемента формы, либо используйте идентификатор последней строки коллекции.

Почему после Ctrl+G курсор встаёт не на ту строку, что в ошибке?

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

Можно ли перейти на строку в запросе по номеру из ошибки?

Да. Ошибки СУБД и синтаксические ошибки запроса указывают номер строки внутри текста запроса. Откройте текст запроса (в консоли запросов, конструкторе или как строковый литерал в модуле) и используйте Ctrl+G уже внутри этого текста — нумерация идёт от начала запроса.

Итог

Что важно запомнить

Переход на строку по номеру выполняется через Ctrl+G в конфигураторе и работает в модулях и текстах запросов. В табличных документах и списках вместо этого используются поиск и отбор, а программно строка активируется через свойство ТекущаяСтрока элемента формы. Всегда проверяйте, что версия модуля совпадает с той, где возникла ошибка.