Групповое выделение в списках, документах и отчётах 1С 8.3

· 9 мин

Содержание

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

Эти три приёма работают в 1С:Предприятии 8.3 одинаково: в списках справочников и документов, в табличных частях («Товары», «Услуги», «Начисления»), в тонком и веб-клиенте. Разница появляется в отчётах, где выделяются ячейки, а не строки, и в формах, где разработчик разрешил выбирать только одну строку. Об этих случаях ниже.

Выделение нескольких строк мышью: Ctrl, Shift и их сочетание

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

Строки подряд (диапазон)

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

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

Пример: нужно распечатать все реализации за 15 октября. Отсортируйте список по дате щелчком по заголовку колонки «Дата», щёлкните первую реализацию за это число, затем с Shift — последнюю. Порядок строк важен: Shift берёт то, что стоит между двумя строками на экране, а не по смыслу.

Строки вразброс

  1. Щёлкните первую нужную строку.
  2. Зажмите Ctrl и щёлкайте остальные.
  3. Ошиблись — щёлкните ту же строку ещё раз с Ctrl: выделение с неё снимется, остальные останутся.

Комбинация: диапазон плюс отдельные строки

Сначала выделите диапазон через Shift. Затем, держа Ctrl, добавьте отдельные строки или уберите лишние из середины диапазона. Так удобно отобрать, например, 40 счетов подряд без трёх оплаченных.

На ноутбуке с тачпадом то же самое: Ctrl или Shift держите левой рукой, «щелчок» делайте касанием тачпада. В macOS-клиенте и веб-клиенте на Mac вместо Ctrl обычно работает Cmd.

Почему протягивание мышью не подходит

Протянуть мышью с зажатой кнопкой, как в Excel, в списках 1С не получится. В иерархических справочниках (номенклатура, контрагенты) такое движение запускает перетаскивание: элемент можно случайно перенести в другую группу. Для диапазона пользуйтесь только Shift + щелчок.

Горячие клавиши, чтобы выделить несколько строк без мыши

Клавиатура выигрывает, когда диапазон длинный и не помещается на экране.

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

Порядок работы с клавиатуры:

  1. Встаньте на первую строку стрелками.
  2. Зажмите Shift и нажимайте ↓, пока не дойдёте до конца диапазона.
  3. Для длинных диапазонов чередуйте Shift+PageDown с Shift+↓, чтобы точно попасть в последнюю строку.

Ctrl+A работает только при фокусе в таблице. Если перед этим вы щёлкнули в поле поиска или в фильтре, сочетание выделит текст в этом поле, а в веб-клиенте — иногда текст всей страницы браузера. Сначала щёлкните любую строку таблицы.

Что можно сделать с выделенными строками

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

  • 🗑️ Пометить на удаление — в списке документов или справочника нажмите Delete и подтвердите. Пометка встанет на все выделенные объекты.
  • ✏️ Изменить выделенные — в типовых конфигурациях на базе БСП (БП 3.0, ЗУП 3.1, УТ 11) в меню Ещё списка есть команда группового изменения реквизитов. Например, сменить ответственного у 50 документов за раз.
  • 🖨️ Напечатать — команда Печать в списке документов формирует печатные формы сразу по всем выделенным документам.
  • ✅ Провести или отменить проведение — в меню Ещё списка документов.

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

Выделение строк в табличных частях, деревьях и отчётах 1С

Табличная часть документа

В табличной части выделение работает так же, как в списке. Отличия в последствиях:

  • Delete сразу удаляет строки из табличной части, без пометки. Пока документ не записан, это можно отменить: закройте его без сохранения.
  • В документах БП 3.0 и УТ 11 у табличных частей есть команды копирования и вставки строк (на панели табличной части или в меню Ещё). Выделите строки, скопируйте, откройте другой документ и вставьте — количество и цены перенесутся.
  • Если в режиме редактирования ячейки (курсор мигает внутри поля) нажать Shift+↓, выделится текст, а не строки. Сначала нажмите Esc, чтобы выйти из ячейки.

Иерархический список и дерево

В справочниках с группами (номенклатура, контрагенты, статьи затрат) выделение подчиняется тем же правилам, но есть два нюанса:

  • 📁 В режиме «Дерево» или «Иерархический список» Shift выделяет только видимые строки. Содержимое свёрнутых групп в диапазон не попадает, пока вы не раскроете группу.
  • 🗑️ Если среди выделенных есть группа, пометка удаления встанет и на группу, и на все элементы внутри неё. Перед Delete проверьте, не зацепили ли вы группу случайным Shift.

Чтобы выделить элементы из разных групп, удобнее переключить вид на плоский список (Ещё → Режим просмотра → Список) и установить отбор.

Отчёты (табличный документ)

В отчётах (ОСВ, анализ счёта, ведомости) выделяются не строки, а ячейки. Приёмы те же:

  • Shift + щелчок или протягивание мышью — прямоугольная область ячеек;
  • Ctrl + щелчок — несколько областей вразброс;
  • щелчок по номеру строки слева — вся строка целиком, если отчёт показывает заголовки строк и колонок.

В отчётах БП 3.0 и ЗУП 3.1 при выделении числовых ячеек в шапке формы отчёта появляется сумма выделенного. Через выпадающий список рядом с ней можно выбрать количество, среднее, минимум или максимум. Это быстрый способ сложить сальдо по нескольким субсчетам без калькулятора.

Сравнение режимов

ГдеЧто выделяетсяCtrl+ADelete по выделенному
Список справочника или документовобъектывсе строки спискапометка удаления
Табличная часть документастрокивсе строки ТЧудаление строк
Отчёт (табличный документ)ячейкивесь отчётничего (если отчёт защищён от редактирования)

Когда выделяется только одна строка: ограниченные режимы

Иногда ни Ctrl, ни Shift не помогают — выделяется одна строка. Причина почти всегда в настройке формы: у таблицы установлен режим выделения «Одиночный». Так делают формы выбора, где по смыслу нужен один элемент, и некоторые обработки.

Изменить это без конфигуратора нельзя, но задачу обычно решают обходным путём:

  1. Подбор вместо выбора. В документах для массового добавления позиций есть кнопка Подбор (в табличной части «Товары» и аналогичных). В форме подбора выбирают сразу много строк, а не одну.
  2. Групповое изменение через обработку. Если нужно изменить реквизит у многих объектов, откройте обработку группового изменения реквизитов. В БП 3.0 она находится в Администрирование → Обслуживание → Корректировка данных. Там отбор задаётся условиями, а не ручным выделением.
  3. Отбор плюс Ctrl+A. Если выделять приходится по признаку (все документы одного контрагента), сначала установите отбор списка, затем выделите всё. Это надёжнее ручного щёлканья.
  4. Выгрузка в табличный документ. Команда Ещё → Вывести список выводит строки любого списка в табличный документ. Там их можно выделять как ячейки, сохранять в Excel и считать суммы.
Диагностика: выберите симптом

Как выделить несколько строк программно (для разработчиков)

В управляемых формах за выделение отвечают три свойства элемента «Таблица формы»:

  • РежимВыделения — РежимВыделенияТаблицы.Одиночный или РежимВыделенияТаблицы.Множественный;
  • РежимВыделенияСтроки — выделяется строка целиком (РежимВыделенияСтрокиТаблицы.Строка) или отдельная ячейка (РежимВыделенияСтрокиТаблицы.Ячейка);
  • ВыделенныеСтроки — коллекция выделенных строк, с методами Добавить(), Удалить(), Очистить(), Количество().

В конфигураторе режим меняют в палитре свойств элемента таблицы, свойство «Режим выделения». Из кода — так:

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

Что хранится в ВыделенныеСтроки

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

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

&НаКлиенте
Процедура СуммаВыделенных(Команда)

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

	ПоказатьПредупреждение(, "Выделено строк: "
		+ Формат(Элементы.Товары.ВыделенныеСтроки.Количество(), "ЧГ=0")
		+ ", сумма: " + Формат(Итого, "ЧДЦ=2"));

КонецПроцедуры

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

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

&НаКлиенте
Процедура ВыделитьПустые(Команда)

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

КонецПроцедуры

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

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

&НаКлиенте
Процедура УдалитьВыделенные(Команда)

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

	Для Каждого СтрокаТЧ Из Удаляемые Цикл
		Объект.Товары.Удалить(СтрокаТЧ);
	КонецЦикла;

	Модифицированность = Истина;

КонецПроцедуры

Обработка выделенных элементов динамического списка

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

&НаКлиенте
Процедура ОбработатьВыделенные(Команда)

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

	Если Ссылки.Количество() = 0 Тогда
		ПоказатьПредупреждение(, "Выделите хотя бы один элемент.");
		Возврат;
	КонецЕсли;

	ОбработатьНаСервере(Ссылки);
	Элементы.Список.Обновить();

КонецПроцедуры

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

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

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

Можно ли увидеть, сколько строк выделено?
Строку-счётчик платформа в списке не выводит. В отчётах сумма и количество выделенных ячеек видны в шапке формы. Для списка можно временно вывести его через «Вывести список» и посмотреть число строк там.
Сохраняется ли выделение после закрытия формы?
Нет. Выделение живёт только в открытой форме. После закрытия, обновления списка или перезапуска 1С его нужно сделать заново.
Почему в веб-клиенте Ctrl+щелчок открывает новую вкладку браузера?
Так бывает, если щёлкнуть по гиперссылке в ячейке, например по номеру документа. Щёлкайте по свободной части строки, а не по тексту-ссылке.
Можно ли выделить несколько колонок в списке?
В списках и табличных частях выделяются строки целиком. Колонки по отдельности выделяются только в отчётах, где работа идёт с ячейками.
Работает ли выделение через удалённый рабочий стол?
Да. Сочетания Ctrl и Shift передаются в сеанс RDP так же, как на локальном компьютере, если их не перехватывает программа удалённого доступа.