Быстрый старт · 10 мин
Как в 1С выделить строку: все способы для пользователя и разработчика
Как выделить строку в 1С: одиночное и множественное выделение мышью и клавишами, выделение в табличных частях документов и программное выделение строк в коде.
Выделение строк — базовая операция в 1С, без которой невозможно групповое удаление, копирование, установка пометок или обработка данных. В зависимости от задачи выделяют одну строку, несколько строк подряд, произвольный набор строк или все строки сразу. Способы отличаются для обычных форм (толстый клиент), управляемых форм и веб-клиента, а разработчикам дополнительно доступно программное выделение через встроенный язык.
Важно понимать разницу между активной строкой и выделенными строками. Активная строка — это та, на которой стоит курсор, она подсвечивается цветом. Выделенные строки — это набор строк, отмеченных для групповой операции. Многие ошибки пользователей связаны именно с тем, что операция применяется к активной строке, а не к выделенному диапазону, или наоборот.
Как выделить одну строку в списке или табличной части
Самый простой случай — выделение одиночной строки. В списке документов, справочника или табличной части документа достаточно щёлкнуть левой кнопкой мыши по нужной строке. Строка подсветится цветом — это активная строка, к ней будут применяться команды «Изменить», «Удалить», «Пометить на удаление» и другие действия из меню или контекстного меню.
Если работа ведётся с клавиатуры, перемещаться между строками можно клавишами «Вверх» и «Вниз». Текущая строка при этом автоматически становится активной. В табличной части документа для перехода между строками также работают Page Up и Page Down при большом количестве позиций.
Учтите: в управляемых формах щелчок по ячейке может сразу активировать редактирование значения, если форма настроена на редактирование прямо в списке. Чтобы просто выделить строку без входа в режим редактирования, щёлкайте по области слева от первой колонки или по номеру строки, если он отображается.
Выделение нескольких строк: Shift, Ctrl и Ctrl+A
Групповое выделение нужно для массовых операций: пометки на удаление нескольких документов, копирования набора позиций, группового изменения реквизитов. В 1С работают стандартные для Windows комбинации.
Диапазон строк через Shift
Чтобы выделить несколько строк подряд, щёлкните по первой строке диапазона, затем зажмите клавишу Shift и щёлкните по последней строке. Все строки между ними будут выделены. Альтернатива с клавиатуры: установите курсор на первую строку и, удерживая Shift, двигайтесь клавишами «Вниз» или «Вверх», расширяя выделение.
Произвольные строки через Ctrl
Если нужные строки разбросаны по списку, зажмите Ctrl и щёлкайте по каждой нужной строке. Каждая щёлкнутая строка добавится к выделению. Повторный щелчок по уже выделенной строке с зажатым Ctrl снимает выделение именно с неё, не затрагивая остальные.
Все строки сразу
Комбинация Ctrl+A выделяет все строки текущего списка или табличной части. Это удобно перед копированием всего содержимого или массовой обработкой. Будьте осторожны: если после Ctrl+A нажать Delete, команда применится ко всем строкам.
Выделение строк в табличной части документа
Табличные части («Товары», «Услуги», «Начисления») поддерживают те же приёмы, но имеют особенности. Чтобы выделить строку целиком, а не встать в конкретную ячейку, щёлкните по серой области слева от строки — там, где отображается номер строки, либо используйте клавиатурную навигацию.
Для копирования выделенных строк табличной части используйте Ctrl+C или пункт «Копировать» контекстного меню, затем Ctrl+V в том же или другом документе. При вставке в другой документ 1С перенесёт данные, если структура табличных частей совместима. Во многих типовых конфигурациях есть и кнопка «Добавить из...» или «Заполнить», которая решает задачу переноса надёжнее ручного копирования.
Если нужно выделить строки по условию — например, все позиции одного товара, — ручное выделение неудобно. Используйте сортировку или отбор по колонке (кнопка отбора в командной панели табличной части либо правый щелчок по заголовку колонки), чтобы нужные строки оказались рядом, а затем выделите их диапазоном через Shift.
Выделение строк в динамических списках и журналах документов
Журналы документов и списки справочников в управляемом приложении построены на динамических списках. Здесь множественное выделение через Ctrl и Shift работает так же, но есть ограничение: если для списка включён режим иерархического просмотра или сложная группировка, поведение выделения может отличаться — выделяться могут только видимые развёрнутые строки.
Для выделения большого количества объектов по условию (например, все документы контрагента) эффективнее не выделять вручную, а сначала установить отбор в списке, а затем применить групповую обработку. В типовых конфигурациях для этого есть обработка «Групповое изменение реквизитов» (раздел «Администрирование»), которая работает с результатом отбора без ручного выделения строк.
- 1Откройте нужный список документов или справочник
- 2Установите отбор, чтобы остались только целевые объекты
- 3Выделите строки: Ctrl+A для всех или Ctrl+щелчок для выборочных
- 4Нажмите Delete или выберите «Пометить на удаление» в меню «Ещё»
- 5Проверьте, что пометка установилась именно у выделенных объектов
Программное выделение строк в коде 1С
Разработчику часто нужно установить выделение из кода — например, после добавления строки подсветить её или выделить строки, не прошедшие проверку. В управляемой форме за это отвечает свойство ВыделенныеСтроки элемента формы типа «ТаблицаФормы». Оно доступно только для чтения как коллекция, но выделение можно задать, очищая и заполняя её идентификаторами строк.
// Элементы.Товары — таблица формы, связанная с реквизитом Объект.Товары
Элементы.Товары.ВыделенныеСтроки.Очистить();
Для Каждого СтрокаТаблицы Из Объект.Товары Цикл
Если СтрокаТаблицы.Количество = 0 Тогда
Элементы.Товары.ВыделенныеСтроки.Добавить(СтрокаТаблицы.ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
Обратите внимание: в коллекцию добавляется не сама строка данных, а её идентификатор, полученный методом ПолучитьИдентификатор(). Чтобы определить, какие строки выделил пользователь, используют обход коллекции Элементы.Товары.ВыделенныеСтроки и получение данных через Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки).
Для установки активной строки (курсора) используется свойство ТекущаяСтрока элемента формы: Элементы.Список.ТекущаяСтрока = НайденнаяСсылка; для динамического списка или идентификатор строки для таблицы значений.
Особенности в обычных формах и веб-клиенте
В обычных формах (режим толстого клиента старых конфигураций) выделение работает аналогично, но программный интерфейс другой: у элемента управления «ТабличноеПоле» есть свойство ВыделенныеСтроки, доступное и для записи — туда можно присвоить массив строк напрямую, без идентификаторов.
В веб-клиенте множественное выделение поддерживается, но при медленном соединении щелчки с зажатым Ctrl могут обрабатываться с задержкой, и часть строк визуально не подсвечивается, хотя фактически выделена. Перед ответственной операцией проверяйте количество выделенных строк — в некоторых формах оно отображается в строке состояния или в заголовке команды.
Как проверить результат
Все нужные строки подсвечены цветом выделения
Часть строк не подсвечена — щелчки с Ctrl не зарегистрированы, повторите выделение
Операция (копирование, пометка) применилась ко всем выделенным строкам
Обработана только активная строка — команда не поддерживает множественное выделение
После выполнения кода строки подсвечены в форме
Выделение не появилось — проверьте, что добавлены идентификаторы строк, а не сами строки
Часто задаваемые вопросы
Почему Ctrl+A выделяет не все строки списка?
В динамических списках Ctrl+A выделяет загруженные в данный момент строки. Если список очень большой и подгружается порциями, выделены могут быть не все записи. Для операций над всем списком надёжнее использовать групповые обработки, работающие с результатом отбора, а не с выделением.
Как снять выделение со всех строк?
Щёлкните левой кнопкой мыши по любой одиночной строке без зажатых клавиш — выделение сбросится, и активной станет только эта строка. Программно в управляемой форме вызовите метод Очистить() у коллекции ВыделенныеСтроки элемента таблицы.
Можно ли выделить строки по условию без программирования?
Да, частично. Установите отбор или сортировку в списке так, чтобы нужные строки шли подряд, затем выделите их диапазоном через Shift. Для сложных условий в типовых конфигурациях используйте обработку «Групповое изменение реквизитов» — она подбирает объекты по произвольному отбору без ручного выделения.
Почему код выделяет строки, но на форме ничего не подсвечено?
Чаще всего в коллекцию ВыделенныеСтроки добавлены сами строки данных вместо их идентификаторов. Используйте метод ПолучитьИдентификатор() у строки таблицы значений формы. Также проверьте, что код выполняется на клиенте и обращается к правильному элементу формы.
Работает ли множественное выделение в мобильном клиенте 1С?
В мобильном клиенте интерфейс адаптирован под сенсорный ввод, и классические комбинации Ctrl и Shift недоступны. Множественное выделение там либо реализуется специальным режимом формы (если разработчик его предусмотрел), либо недоступно вовсе — тогда массовые операции выполняются через обработки.
Как в коде узнать, сколько строк выделил пользователь?
Используйте свойство Количество() у коллекции выделенных строк: Элементы.Товары.ВыделенныеСтроки.Количество(). Перед выполнением групповой операции полезно проверить, что это значение больше нуля, иначе команда отработает вхолостую или применится только к активной строке.
Что важно запомнить
Одна строка выделяется щелчком, диапазон — через Shift, произвольный набор — через Ctrl, все строки — Ctrl+A. В управляемых формах программное выделение задаётся через коллекцию ВыделенныеСтроки с добавлением идентификаторов строк. Перед массовыми операциями всегда проверяйте состав выделенных строк.