Быстрый старт · 10 мин
Как перейти на определенную строку в 1С
Как перейти на нужную строку в 1С: горячие клавиши, поиск по номеру, переход в табличной части документа и программная установка текущей строки в коде.
Задача перейти на конкретную строку возникает в 1С постоянно: бухгалтер ищет документ по номеру в длинном журнале, кладовщик проверяет позицию в табличной части накладной, разработчик отлаживает обработку и должен установить курсор на нужную запись программно. В зависимости от ситуации применяются разные инструменты — от горячих клавиш до встроенного языка.
Важно понимать, что «строка» в 1С бывает разной: строка динамического списка (журнал документов, список справочника), строка табличной части документа, строка таблицы значений в форме обработки, строка текста в модуле. Для каждого случая есть свой способ перехода, и универсальной комбинации клавиш на все сценарии не существует.
Ниже разобраны практические способы для пользовательского режима и для конфигуратора: поиск и позиционирование в списках, переход по номеру строки в табличных частях, программная установка текущей строки, а также типичные ошибки, из-за которых переход «не срабатывает».
Как перейти к нужной строке в журнале документов или списке справочника
Динамические списки в 1С не загружают все записи сразу — они подтягивают данные порциями по мере прокрутки. Поэтому команды «перейти к строке № 15420» в интерфейсе списка нет: платформа просто не знает, какая запись окажется на этой позиции, пока не прочитает данные. Вместо перехода по номеру используются поиск и фильтрация.
Основной инструмент — поиск по текущей колонке. Установите курсор в колонку, по которой известно значение (например, «Номер» или «Дата»), нажмите Ctrl+F, введите значение и подтвердите. Список спозиционируется на первой подходящей строке. Комбинация F3 или Ctrl+Shift+F (в зависимости от режима поиска) позволяет искать далее или назад по списку.
Если искомый документ известен по номеру, часто быстрее воспользоваться полем быстрого поиска в панели навигации списка (в управляемых формах типовых конфигураций) или командой «Найти по номеру» в меню «Ещё». После ввода номера и периода список отфильтруется, и нужная строка окажется единственной или одной из немногих.
- 1Откройте журнал документов или список справочника
- 2Установите курсор в колонку «Номер»
- 3Нажмите Ctrl+F и введите номер без лишних пробелов
- 4Подтвердите поиск — курсор встанет на найденную строку
- 5Если строка не найдена, проверьте отборы списка и период отображения
Как перейти на строку в табличной части документа
Табличная часть (товары в накладной, начисления в документе зарплаты) загружается целиком, поэтому здесь переход по номеру строки возможен, но штатной команды «перейти к строке № N» в большинстве типовых форм нет. Практические варианты: прокрутка с ориентиром на колонку «№», поиск по значению в колонке (Ctrl+F при активной табличной части) или сортировка табличной части, если она разрешена.
Поиск по табличной части работает так: кликните в любую ячейку табличной части, нажмите Ctrl+F, введите искомое значение (артикул, наименование, сумму). Платформа найдет ячейку и установит на неё курсор. Для длинных табличных частей на сотни позиций это основной рабочий приём.
В некоторых типовых конфигурациях для табличных частей доступна команда «Ещё → Изменить форму» или вывод в табличный документ, где уже работает стандартный поиск по листу. Если табличная часть регулярно превышает несколько сотен строк, имеет смысл использовать отборы или группировки, предусмотренные конфигурацией.
Как перейти на строку программно: установка текущей строки в форме
Разработчику часто нужно не просто найти запись, а установить на неё курсор в открытой форме — например, после добавления новой строки или при открытии формы с параметром. Для этого у элемента формы «Таблица» есть свойство ТекущаяСтрока.
Для динамического списка значением ТекущаяСтрока является ссылка на объект (для списка документов — ссылка на документ, для справочника — ссылка на элемент). Для табличной части и таблицы значений — идентификатор строки (число, получаемое через метод ПолучитьИдентификатор()).
// Позиционирование списка на конкретном документе
Элементы.Список.ТекущаяСтрока = СсылкаНаДокумент;
// Позиционирование в табличной части на последней строке
Если Объект.Товары.Количество() > 0 Тогда
ПоследняяСтрока = Объект.Товары[Объект.Товары.Количество() - 1];
Элементы.Товары.ТекущаяСтрока = ПоследняяСтрока.ПолучитьИдентификатор();
КонецЕсли;
Частая задача — активизировать строку с нужным значением в колонке. Для этого табличную часть перебирают циклом или методом НайтиСтроки() с отбором, а затем устанавливают ТекущаяСтрока по идентификатору найденной строки. Метод НайтиСтроки() возвращает массив, поэтому для единственного результата берут нулевой элемент массива, предварительно проверив, что массив не пуст.
Найденные = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура", ИскомаяНоменклатура));
Если Найденные.Количество() > 0 Тогда
Элементы.Товары.ТекущаяСтрока = Найденные[0].ПолучитьИдентификатор();
КонецЕсли;Переход по номеру строки в консоли запросов и табличном документе
В табличном документе (печатная форма, отчёт, макет) переход к строке выполняется стандартными средствами: Ctrl+G («Перейти») открывает диалог, где можно указать адрес ячейки, например R150C3 (строка 150, колонка 3) или имя именованной области. Это самый быстрый способ попасть в нужное место большого отчёта.
В редакторе программного модуля (конфигуратор) переход к строке кода выполняется через Ctrl+G или меню «Текст → Перейти к строке» — указывается номер строки модуля. Это незаменимо при разборе ошибок: платформа в сообщении об ошибке указывает номер строки модуля, и переход по номеру сразу приводит к проблемному месту.
В консоли запросов и при просмотре результата запроса перехода по номеру строки обычно нет — результат выводится как таблица, где навигация идёт прокруткой и поиском. Если результат большой, его удобнее выгрузить в табличный документ и использовать Ctrl+G там.
Способы перехода к строке
Подходит пользователю без прав разработчика; ограничение — ищет по значению, а не по номеру строки
Точный переход по номеру строки или адресу ячейки; работает только в табличных документах и редакторах кода
Программное позиционирование из обработчиков формы; требует прав на изменение конфигурации или внешней обработки
Сводит список к нескольким строкам вместо точного перехода; не подходит, когда нужна именно позиция в полном списке
Почему переход на строку не работает: типичные причины
Самая частая ситуация — поиск не находит строку, которая «точно есть». Причина почти всегда в отборах: на динамический список наложен отбор по периоду, организации или статусу, и искомая запись просто не входит в выборку. Проверьте панель отборов и настройки списка (Ещё → Настроить список) перед повторным поиском.
Вторая причина — несовпадение формата значения. Номера документов в 1С — строки с лидирующими нулями и префиксами, поэтому поиск «125» может не найти документ «00БП-000125». Используйте поиск по точному значению или по окончанию номера, если конфигурация это поддерживает.
При программной установке ТекущаяСтрока ошибки возникают из-за путаницы типов: для динамического списка присваивают идентификатор строки вместо ссылки, для таблицы значений — ссылку вместо идентификатора. Также позиционирование не сработает, если запись не удовлетворяет текущему отбору списка формы — платформа просто не сможет её показать.
Как проверить, что переход выполнен правильно
После поиска или программного позиционирования убедитесь, что активизирована именно та строка. В пользовательском режиме достаточно визуального контроля: выделенная строка должна содержать ожидаемые номер, дату и контрагента. Если найдено несколько совпадений, пройдитесь по ним клавишей повторного поиска.
В коде проверку делают сравнением: после присвоения ТекущаяСтрока можно прочитать Элементы.Список.ТекущаяСтрока обратно и сравнить с целевым значением, либо проверить Элементы.Список.ТекущиеДанные — там должны быть данные нужной записи. Это надёжный способ убедиться, что отбор не помешал позиционированию.
Как проверить результат
Номер, дата и ключевые реквизиты совпадают с искомыми
Выделена другая строка или курсор не сместился — проверьте отборы
Содержат значения целевой записи
Неопределено или данные другой строки — тип присвоенного значения не совпадает с типом списка
Курсор встал в указанную ячейку, адрес виден в строке состояния
Сообщение о неверном адресе — проверьте формат R<строка>C<колонка>
FAQ
Можно ли в списке документов перейти сразу на строку с заданным порядковым номером?
Нет, динамический список не поддерживает переход по порядковому номеру строки, потому что записи подгружаются порциями. Используйте поиск по значению (Ctrl+F) или отбор, чтобы свести список к нужной записи.
Как программно перейти на первую строку табличной части?
Проверьте, что табличная часть не пуста, затем присвойте Элементы.Товары.ТекущаяСтрока = Объект.Товары[0].ПолучитьИдентификатор(). Для последней строки используйте индекс Количество() - 1.
Почему поиск по номеру документа ничего не находит?
Чаще всего мешают префикс и лидирующие нули в номере, установленный отбор по периоду или организации, либо поиск выполняется не по той колонке. Снимите отборы и повторите поиск по полному номеру.
Как перейти к строке с ошибкой, которую указала платформа?
В конфигураторе откройте модуль из сообщения об ошибке двойным щелчком — курсор встанет на нужную строку автоматически. Вручную то же самое делает команда Ctrl+G с вводом номера строки модуля.
Можно ли спозиционировать список на записи при открытии формы?
Да. В обработчике ПриСозданииНаСервере или ПриОткрытии присвойте Элементы.Список.ТекущаяСтрока нужную ссылку. В типовых формах списка это часто делается автоматически через параметр формы «ТекущаяСтрока».
Чем отличается ТекущаяСтрока от ТекущиеДанные в форме?
ТекущаяСтрока — это идентификатор или ссылка, определяющие позицию курсора; её можно и читать, и присваивать. ТекущиеДанные — объект с содержимым активной строки, доступный только для чтения; присвоить его нельзя.
Что важно запомнить
В пользовательском режиме переход к строке выполняется поиском (Ctrl+F) и отборами, в табличном документе и модуле — через Ctrl+G. Программно курсор устанавливается свойством ТекущаяСтрока элемента формы: ссылкой для динамического списка и идентификатором строки для табличной части. Если переход не срабатывает, первым делом проверяйте отборы списка и тип присваиваемого значения.