Групповое выделение в списках и табличных частях 1С — от Ctrl и Shift до ВыделенныеСтроки

· 10 мин

Содержание

Чтобы выделить несколько строк в 1С 8.3, держите Ctrl и щёлкайте мышью по нужным строкам — каждая добавится к выделению. Сплошной диапазон выделяют так: щелчок по первой строке, затем Shift + щелчок по последней. Все строки списка сразу — Ctrl+A.

Приёмы одинаковы в любой конфигурации на платформе 8.3 — Бухгалтерии, ЗУП, Управлении торговлей: это поведение самой платформы, а не прикладного решения. Отличаются только команды, которые потом можно применить к выделенным строкам, и то, разрешено ли множественное выделение в конкретной таблице.

Где работает групповое выделение и где нет

В 1С строки выделяют в трёх видах таблиц. Поведение у них разное, и это объясняет большинство вопросов «почему не выделяется».

ГдеПримерЧто можно сделать с выделенными строками
Список объектов (динамический список)Журнал документов, справочник «Номенклатура»Провести, отменить проведение, пометить на удаление, изменить реквизиты группой
Табличная часть документаВкладка «Товары» в реализацииУдалить, скопировать, вставить в другой документ
Табличный документ (отчёт)Оборотно-сальдовая ведомостьПосмотреть сумму, скопировать в Excel

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

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

Как выделить несколько строк мышью

Мышь — самый наглядный способ, когда нужные строки видны на экране.

Отдельные строки вразброс

  1. Щёлкните по первой нужной строке.
  2. Зажмите Ctrl.
  3. Не отпуская Ctrl, щёлкайте по остальным строкам. Каждая подсветится.
  4. Повторный щелчок с Ctrl по уже выделенной строке снимает с неё выделение, остальные остаются.

Так удобно отобрать, например, 4 счёта из 30 в журнале, чтобы провести только их.

Сплошной диапазон

  1. Щёлкните по первой строке диапазона.
  2. Прокрутите список до последней строки.
  3. Зажмите Shift и щёлкните по ней. Выделятся все строки между ними, включая крайние.

Комбинация двух приёмов

Диапазон можно дополнить отдельными строками. Сначала выделите блок через Shift, потом с зажатым Ctrl добавьте строки за его пределами. Можно и наоборот — Ctrl-щелчком исключить из блока лишние строки.

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

Горячие клавиши для выделения строк в 1С

Клавиатура быстрее мыши на длинных списках: не нужно целиться и прокручивать.

СочетаниеЧто делает
Shift + ↓ / Shift + ↑Расширяет выделение на одну строку вниз или вверх
Shift + PageDown / Shift + PageUpРасширяет выделение на страницу
Ctrl + AВыделяет все строки таблицы
Ctrl + щелчокДобавляет строку к выделению или убирает её
Shift + щелчокВыделяет диапазон от текущей строки до указанной
Ctrl + CКопирует выделенные строки в буфер обмена
DeleteУдаляет выделенные строки табличной части или помечает на удаление выделенные объекты в списке

Типовой сценарий для табличной части с сотней строк: встаньте на первую строку, нажмите Ctrl + A, затем Ctrl + C и вставьте в Excel. Колонки разложатся по столбцам листа.

Ctrl + A в динамическом списке выделяет строки, которые попадают под текущий отбор. Это важно для следующего раздела.

Выделение ячеек в отчёте

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

Выделение через отбор, когда строк сотни

Выделять мышью 300 документов из 2 000 — долго и рискованно: один промах обычным щелчком, и всё заново. Правильный путь — сначала сузить список, а потом выделить всё, что осталось.

Порядок действий

  1. Откройте нужный список, например журнал документов реализации.
  2. Задайте отбор: введите текст в строку поиска над списком (например, наименование контрагента) или воспользуйтесь расширенным поиском Alt + F по конкретной колонке.
  3. Ограничьте период, если список документный: команда установки периода есть в командной панели журнала.
  4. Убедитесь, что в списке остались только нужные строки. Проверьте количество — прокрутите до конца.
  5. Нажмите Ctrl + A.
  6. Выполните команду над выделенными строками: через меню Ещё или контекстное меню правой кнопкой.

Отбор по значению из ячейки

Быстрый вариант — встать на ячейку с нужным значением (например, склад «Основной») и найти команду поиска по текущему значению в контекстном меню. В списке останутся только строки с тем же значением в этой колонке. Дальше — Ctrl + A.

Если в списке включена группировка или иерархия (папки справочника), Ctrl + A захватит то, что сейчас показано на экране. Для справочника с папками удобнее переключить вид на список без иерархии — тогда выделятся элементы всех групп.

Что делают с выделенными строками в списке

  • ✅ Проведение группы документов — команда «Провести» применяется ко всем выделенным.
  • ✅ Отмена проведения — так же, группой.
  • 🗑️ Пометка на удаление — Delete, программа попросит подтвердить для всех строк.
  • ✏️ Групповое изменение реквизитов — в типовых конфигурациях в меню Ещё есть команда «Изменить выделенные…». Она открывает форму, где задаётся новое значение реквизита сразу для всех выбранных объектов: например, сменить ответственного у 50 документов.
  • 📋 Печать — многие печатные формы формируются сразу на все выделенные документы одной пачкой.

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

Работа с выделенными строками табличной части

Табличная часть документа — отдельный случай. Здесь выделение нужно, чтобы удалить, перенести или скопировать строки.

Удаление нескольких строк

Выделите строки любым способом из разделов выше и нажмите Delete. Строки исчезнут сразу, но изменения не сохранятся, пока документ не записан. Если удалили лишнее — закройте форму без записи, на вопрос о сохранении ответьте «Нет».

Перенос строк в другой документ

В Бухгалтерии предприятия 3.0 и других решениях на БСП в табличных частях есть команды «Скопировать строки» и «Вставить строки» (меню Ещё над табличной частью). Порядок:

  1. В исходном документе выделите строки.
  2. Выполните «Скопировать строки».
  3. Откройте документ-приёмник, перейдите на ту же табличную часть.
  4. Выполните «Вставить строки».

Эта пара команд переносит именно данные 1С — ссылки на номенклатуру, ставки НДС, счета учёта, — а не текст. Обычный Ctrl + C / Ctrl + V между документами так не работает : он копирует текстовое представление.

Копирование в Excel

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

Диагностика: выберите симптом

Программное выделение строк: для разработчиков

В управляемой форме за выделение отвечает свойство элемента формы ВыделенныеСтроки. Это коллекция, в которой лежат:

  • 📄 для табличной части или таблицы значений на форме — идентификаторы строк данных формы;
  • 🔗 для динамического списка — ключи строк, для списка справочника или документа это ссылки на объекты.

Чтобы коллекция содержала больше одного элемента, у элемента таблицы должен стоять режим РежимВыделенияТаблицы.Множественный. Его можно задать в конфигураторе в свойствах элемента или в коде:

Элементы.Товары.РежимВыделения = РежимВыделенияТаблицы.Множественный;

Обработать выделенные строки табличной части

Пример: команда формы документа ставит скидку 5% всем выделенным строкам табличной части «Товары».

&НаКлиенте
Процедура УстановитьСкидкуВыделенным(Команда)
	
	Для Каждого Идентификатор Из Элементы.Товары.ВыделенныеСтроки Цикл
		СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
		Если СтрокаТЧ <> Неопределено Тогда
			СтрокаТЧ.ПроцентСкидки = 5;
		КонецЕсли;
	КонецЦикла;
	
	Модифицированность = Истина;
	
КонецПроцедуры

Имя реквизита ПроцентСкидки здесь условное — подставьте реальное имя колонки вашей табличной части.

Выделить строки по условию из кода

Обратная задача: программа сама выделяет строки, например все с нулевым количеством, чтобы пользователь их увидел и удалил.

&НаКлиенте
Процедура ВыделитьПустыеСтроки(Команда)
	
	Элементы.Товары.ВыделенныеСтроки.Очистить();
	
	Для Каждого СтрокаТЧ Из Объект.Товары Цикл
		Если СтрокаТЧ.Количество = 0 Тогда
			Элементы.Товары.ВыделенныеСтроки.Добавить(СтрокаТЧ.ПолучитьИдентификатор());
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

Удалить выделенные строки

Удалять прямо в цикле по ВыделенныеСтроки нельзя: при удалении строки коллекция меняется. Сначала скопируйте идентификаторы в массив.

&НаКлиенте
Процедура УдалитьВыделенные(Команда)
	
	Идентификаторы = Новый Массив;
	Для Каждого Идентификатор Из Элементы.Товары.ВыделенныеСтроки Цикл
		Идентификаторы.Добавить(Идентификатор);
	КонецЦикла;
	
	Для Каждого Идентификатор Из Идентификаторы Цикл
		СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
		Если СтрокаТЧ <> Неопределено Тогда
			Объект.Товары.Удалить(СтрокаТЧ);
		КонецЕсли;
	КонецЦикла;
	
	Модифицированность = Истина;
	
КонецПроцедуры

Выделенные документы в динамическом списке

В форме списка Элементы.Список.ВыделенныеСтроки возвращает ссылки. Если в списке включена группировка, среди элементов могут попасться строки группировки, поэтому тип стоит проверить:

&НаКлиенте
Процедура ОбработатьВыделенныеДокументы(Команда)
	
	Ссылки = Новый Массив;
	Для Каждого Строка Из Элементы.Список.ВыделенныеСтроки Цикл
		Если ТипЗнч(Строка) <> Тип("ГруппировкаСтрокДинамическогоСписка") Тогда
			Ссылки.Добавить(Строка);
		КонецЕсли;
	КонецЦикла;
	
	Если Ссылки.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ОбработатьНаСервере(Ссылки);
	Элементы.Список.Обновить();
	
КонецПроцедуры

Для команды, которая добавляется в форму списка из общей команды, проще другой путь: у команды выставляют РежимИспользованияПараметра = Множественный. Тогда в ПараметрКоманды сразу приходит массив выделенных ссылок, и перебирать элемент формы не нужно.

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

Готовые обработки для массовой работы со строками

Когда штатных команд мало, а программировать некому, выручают обработки. По надёжности их стоит рассматривать в таком порядке.

ИнструментГде взятьКогда подходитРиски
«Изменить выделенные…»Встроена в типовые конфигурации, меню Ещё спискаСменить значение реквизита у группы объектовМинимальные, есть контроль прав
Универсальная обработка подбора и группового изменения объектовПоставляется фирмой 1С в составе стандартных обработок для партнёров и пользователей с поддержкойСложный отбор по нескольким условиям, изменение табличных частейИзменяет данные в обход формы; без копии ошибку не откатить
Обработка стороннего разработчикаКаталоги разработок, свои программистыСпецифичные задачи: перенос строк между документами по условиюНепроверенный код, возможны ошибки и вредоносные вставки

Как подключить внешнюю обработку

  1. Файл .epf откройте через главное меню: Файл → Открыть. Для разового запуска этого достаточно.
  2. Для постоянного использования в БП, ЗУП и УТ подключайте её в разделе Администрирование → Печатные формы, отчёты и обработки через «Дополнительные отчёты и обработки».
  3. Если при открытии появляется сообщение о нехватке прав, у пользователя нет права на интерактивное открытие внешних обработок. Его выдаёт администратор.

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

Частые вопросы

Можно ли выделить несколько строк на сенсорном экране без клавиатуры?
В веб-клиенте и на планшете зажатых клавиш нет. Используйте отбор и команду выделения всех строк в меню Ещё, если она есть в этой таблице, или подключите экранную клавиатуру с клавишами Ctrl и Shift.
Сохраняется ли выделение после закрытия формы?
Нет. Выделение живёт только пока форма открыта. После повторного открытия списка выделена одна текущая строка.
Как узнать, сколько строк выделено?
Штатного счётчика в списках нет. Ориентир — команда «Изменить выделенные…»: в её форме указано, сколько объектов будет изменено, и её можно закрыть без изменений. Разработчик получает его как Элементы.Список.ВыделенныеСтроки.Количество().
Почему в веб-клиенте Ctrl+A выделяет текст страницы, а не строки?
Фокус стоит не на таблице. Щёлкните по любой строке списка, чтобы таблица получила фокус, и повторите сочетание.
Можно ли выделить столбец в табличной части?
Нет, в таблице формы выделяются только строки целиком. Выделить столбец можно в табличном документе отчёта, щёлкнув по ячейкам с Shift.