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

Быстрый старт · 10 мин

Как перейти на определенную строку в 1С

Как перейти на нужную строку в 1С: горячие клавиши, поиск по номеру, переход в табличной части документа и программная установка текущей строки в коде.

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

Важно понимать, что «строка» в 1С бывает разной: строка динамического списка (журнал документов, список справочника), строка табличной части документа, строка таблицы значений в форме обработки, строка текста в модуле. Для каждого случая есть свой способ перехода, и универсальной комбинации клавиш на все сценарии не существует.

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

Как перейти к нужной строке в журнале документов или списке справочника

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

Основной инструмент — поиск по текущей колонке. Установите курсор в колонку, по которой известно значение (например, «Номер» или «Дата»), нажмите Ctrl+F, введите значение и подтвердите. Список спозиционируется на первой подходящей строке. Комбинация F3 или Ctrl+Shift+F (в зависимости от режима поиска) позволяет искать далее или назад по списку.

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

Переход к документу по номеру в списке
  1. 1
    Откройте журнал документов или список справочника
  2. 2
    Установите курсор в колонку «Номер»
  3. 3
    Нажмите Ctrl+F и введите номер без лишних пробелов
  4. 4
    Подтвердите поиск — курсор встанет на найденную строку
  5. 5
    Если строка не найдена, проверьте отборы списка и период отображения

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

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

Поиск по табличной части работает так: кликните в любую ячейку табличной части, нажмите Ctrl+F, введите искомое значение (артикул, наименование, сумму). Платформа найдет ячейку и установит на неё курсор. Для длинных табличных частей на сотни позиций это основной рабочий приём.

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

Как перейти на строку программно: установка текущей строки в форме

Разработчику часто нужно не просто найти запись, а установить на неё курсор в открытой форме — например, после добавления новой строки или при открытии формы с параметром. Для этого у элемента формы «Таблица» есть свойство ТекущаяСтрока.

Для динамического списка значением ТекущаяСтрока является ссылка на объект (для списка документов — ссылка на документ, для справочника — ссылка на элемент). Для табличной части и таблицы значений — идентификатор строки (число, получаемое через метод ПолучитьИдентификатор()).

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

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

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

Если Объект.Товары.Количество() > 0 Тогда

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

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

КонецЕсли;

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

bsl
Найденные = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура", ИскомаяНоменклатура));
Если Найденные.Количество() > 0 Тогда
    Элементы.Товары.ТекущаяСтрока = Найденные[0].ПолучитьИдентификатор();
КонецЕсли;

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

В табличном документе (печатная форма, отчёт, макет) переход к строке выполняется стандартными средствами: Ctrl+G («Перейти») открывает диалог, где можно указать адрес ячейки, например R150C3 (строка 150, колонка 3) или имя именованной области. Это самый быстрый способ попасть в нужное место большого отчёта.

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

В консоли запросов и при просмотре результата запроса перехода по номеру строки обычно нет — результат выводится как таблица, где навигация идёт прокруткой и поиском. Если результат большой, его удобнее выгрузить в табличный документ и использовать Ctrl+G там.

Способы перехода к строке

Ctrl+F в списке или табличной части

Подходит пользователю без прав разработчика; ограничение — ищет по значению, а не по номеру строки

Ctrl+G в табличном документе и модуле

Точный переход по номеру строки или адресу ячейки; работает только в табличных документах и редакторах кода

Элементы.Таблица.ТекущаяСтрока в коде

Программное позиционирование из обработчиков формы; требует прав на изменение конфигурации или внешней обработки

Отбор и сортировка списка

Сводит список к нескольким строкам вместо точного перехода; не подходит, когда нужна именно позиция в полном списке

Почему переход на строку не работает: типичные причины

Самая частая ситуация — поиск не находит строку, которая «точно есть». Причина почти всегда в отборах: на динамический список наложен отбор по периоду, организации или статусу, и искомая запись просто не входит в выборку. Проверьте панель отборов и настройки списка (Ещё → Настроить список) перед повторным поиском.

Вторая причина — несовпадение формата значения. Номера документов в 1С — строки с лидирующими нулями и префиксами, поэтому поиск «125» может не найти документ «00БП-000125». Используйте поиск по точному значению или по окончанию номера, если конфигурация это поддерживает.

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

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

Как проверить, что переход выполнен правильно

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

В коде проверку делают сравнением: после присвоения ТекущаяСтрока можно прочитать Элементы.Список.ТекущаяСтрока обратно и сравнить с целевым значением, либо проверить Элементы.Список.ТекущиеДанные — там должны быть данные нужной записи. Это надёжный способ убедиться, что отбор не помешал позиционированию.

Контрольные точки

Как проверить результат

Выделенная строка в списке
Норма

Номер, дата и ключевые реквизиты совпадают с искомыми

Тревожный признак

Выделена другая строка или курсор не сместился — проверьте отборы

ТекущиеДанные в коде после установки ТекущаяСтрока
Норма

Содержат значения целевой записи

Тревожный признак

Неопределено или данные другой строки — тип присвоенного значения не совпадает с типом списка

Переход по Ctrl+G в табличном документе
Норма

Курсор встал в указанную ячейку, адрес виден в строке состояния

Тревожный признак

Сообщение о неверном адресе — проверьте формат R<строка>C<колонка>

FAQ

Можно ли в списке документов перейти сразу на строку с заданным порядковым номером?

Нет, динамический список не поддерживает переход по порядковому номеру строки, потому что записи подгружаются порциями. Используйте поиск по значению (Ctrl+F) или отбор, чтобы свести список к нужной записи.

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

Проверьте, что табличная часть не пуста, затем присвойте Элементы.Товары.ТекущаяСтрока = Объект.Товары[0].ПолучитьИдентификатор(). Для последней строки используйте индекс Количество() - 1.

Почему поиск по номеру документа ничего не находит?

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

Как перейти к строке с ошибкой, которую указала платформа?

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

Можно ли спозиционировать список на записи при открытии формы?

Да. В обработчике ПриСозданииНаСервере или ПриОткрытии присвойте Элементы.Список.ТекущаяСтрока нужную ссылку. В типовых формах списка это часто делается автоматически через параметр формы «ТекущаяСтрока».

Чем отличается ТекущаяСтрока от ТекущиеДанные в форме?

ТекущаяСтрока — это идентификатор или ссылка, определяющие позицию курсора; её можно и читать, и присваивать. ТекущиеДанные — объект с содержимым активной строки, доступный только для чтения; присвоить его нельзя.

Итог

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

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