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

· 10 мин

Содержание

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

Приёмы одни для БП 3.0, ЗУП 3.1, УТ 11 и других конфигураций: выделение — механизм платформы, а не конкретной программы. Различаются только действия, которые потом можно сделать с выделенными строками.

Как устроено выделение строк в таблицах 1С

В 1С почти всё, что выглядит таблицей, относится к одному из двух видов:

  • 📋 Таблица формы — список документов, справочник, табличная часть «Товары» или «Сотрудники». Выделяются строки целиком.
  • 📊 Табличный документ — отчёт, печатная форма, оборотно-сальдовая ведомость. Выделяются ячейки, строки, колонки или их произвольные области, как в Excel.

В таблице формы одна строка всегда «текущая» — на ней стоит курсор. Выделенных может быть несколько, и текущая строка всегда входит в выделение. Когда вы нажимаете команду на панели, например «Провести» или «Удалить», она применяется ко всем выделенным строкам, а не только к текущей.

Если строки не выделяются пачкой, а курсор просто перескакивает, у этой таблицы включён одиночный режим выделения. Это задаёт разработчик формы, а не пользователь. Подробнее — в разделе про ошибки.

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

Мышью удобно, когда строк немного. Для длинных списков быстрее клавиатура.

ДействиеМышьКлавиатура
Выделить диапазон строкщелчок по первой, Shift+щелчок по последнейShift+↓ / Shift+↑
Добавить или снять одну строкуCtrl+щелчок—
Выделить всё—Ctrl+A
Снять выделениеобычный щелчок по любой строкестрелка без Shift
Скопировать выделенное—Ctrl+C

Комбинации можно сочетать. Например, выделили строки с 3-й по 10-ю через Shift, затем Ctrl+щелчком добавили 15-ю и сняли 7-ю. Получилось 8 строк: 3–6, 8–10 и 15.

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

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

Выделение диапазона в отчётах и табличных документах

В отчёте логика ближе к Excel. Здесь выделяют не строки формы, а области ячеек.

Строки и колонки целиком

  1. Щёлкните по номеру строки в сером поле слева — выделится вся строка.
  2. Зажмите Shift и щёлкните номер последней нужной строки — выделится диапазон строк.
  3. Чтобы выделить колонку, щёлкните по её заголовку сверху. С колонками Shift работает так же.
  4. Протянуть мышью по номерам строк с зажатой кнопкой — тот же результат, что и Shift+щелчок.

Если серых полей с номерами не видно, их скрыли в настройках отчёта или макета. Тогда выделяйте ячейки: щелчок по первой, Shift+щелчок по последней.

Несколько несмежных областей

Зажмите Ctrl и выделяйте области по очереди: например, итоги по трём разным контрагентам в оборотно-сальдовой ведомости. Каждая область остаётся отдельной, это видно и в коде (о нём ниже).

Что делать с выделенным

  • 📋 Ctrl+C копирует ячейки в буфер. В Excel или Google Таблицы они вставляются с разбивкой по колонкам.
  • ➕ В отчётах типовых конфигураций (БП 3.0, ЗУП 3.1, УТ 11) в верхней части формы есть поле, где показывается сумма выделенных числовых ячеек. Удобно сверить итог по нескольким строкам ОСВ без калькулятора.
  • 🔍 Ctrl+F ищет текст по документу. Найденная ячейка становится текущей, от неё удобно строить Shift-диапазон.

Сумма в поле считается только по числам. Если в выделение попала ячейка с текстом или пустая, она просто не учитывается, итог от этого не ломается.

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

Список документов — динамический список. Он подгружает строки порциями по мере прокрутки, поэтому в нём есть особенности.

Массовые действия над выделенными документами

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

  1. Проведение и отмена проведения. Выделите документы, нажмите «Провести» — проведутся все. Если какой-то документ не провёлся, программа сообщит об ошибке именно по нему, остальные останутся проведёнными.
  2. Пометка на удаление. Delete или команда пометки — все выделенные документы получают пометку.
  3. Печать. Команда «Печать» по нескольким документам формирует одну форму с документами подряд. Это быстрый способ напечатать 20 накладных за раз.
  4. Изменение реквизитов. В меню Ещё есть команда «Изменить выделенные». Она открывает групповое изменение: например, поменять ответственного или комментарий сразу у всех выделенных документов.

Групповое проведение и изменение реквизитов меняют движения и данные в базе. Перед массовым изменением сотен документов за закрытый период сделайте резервную копию.

Сначала отбор, потом выделение

Выделять мышью 300 строк из 5000 неудобно и рискованно: легко промахнуться. Надёжнее так:

  1. Установите отбор по нужному признаку: организации, контрагенту, периоду, статусу. В формах списков БП 3.0 и УТ 11 отборы стоят прямо над таблицей, а период задаётся отдельной командой.
  2. В списке остаются только нужные документы.
  3. Нажмите Ctrl+A — выделится вся отфильтрованная выборка.
  4. Выполните действие.

При Ctrl+A в большом списке платформа выделяет все строки, а не только видимые на экране. На 10–20 тысячах документов это может занять несколько секунд — не нажимайте команду, пока выделение не завершилось.

Табличные части документов

В табличной части выделение работает так же: Shift-диапазон, Ctrl-поправки. Полезные приёмы:

  • 🗑 Удалить 30 лишних строк товаров: выделить диапазон, нажать Delete.
  • 📄 Скопировать строки в другой документ. В БП 3.0 и УТ 11 в меню Ещё табличной части есть команды копирования и вставки строк. Вставка добавляет строки в конец таблицы.
  • 🔢 Выделить строки и посмотреть количество: в типовых формах число выделенных строк не показывается, ориентируйтесь на нумерацию в колонке «N».

Программное выделение строк в коде 1С

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

Режим выделения таблицы

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Элементы.Товары.РежимВыделения = РежимВыделенияТаблицы.Множественный;
КонецПроцедуры

Рядом есть свойство РежимВыделенияСтроки: значение Строка подсвечивает строку целиком, Ячейка — только активную ячейку. На количество выделяемых строк оно не влияет.

Получить выделенные строки

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

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

В табличной части в ВыделенныеСтроки лежат идентификаторы строк. Саму строку получают через НайтиПоИдентификатору:

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

Выделить диапазон строк кодом

Пример выделяет строки с 5-й по 10-ю табличной части «Товары». Индексы коллекции начинаются с нуля, поэтому 5-я строка — это индекс 4:

&НаКлиенте
Процедура ВыделитьСтроки5По10(Команда)
	Всего = Объект.Товары.Количество();
	Если Всего < 5 Тогда
		Возврат;
	КонецЕсли;
	Последний = Мин(9, Всего - 1);
	Элементы.Товары.ВыделенныеСтроки.Очистить();
	Для Инд = 4 По Последний Цикл
		Элементы.Товары.ВыделенныеСтроки.Добавить(Объект.Товары[Инд].ПолучитьИдентификатор());
	КонецЦикла;
	Элементы.Товары.ТекущаяСтрока = Объект.Товары[4].ПолучитьИдентификатор();
КонецПроцедуры

При 7 строках в таблице выделятся 5-я, 6-я и 7-я, ошибки выхода за границу не будет.

Выделенные области табличного документа

У табличного документа свойство ВыделенныеОбласти — коллекция областей. При выделении строк целиком у области не заданы колонки, при выделении колонок — строки. Поэтому границы берём по типу области. Пример суммирует числа в выделенных ячейках (Отчет — реквизит формы типа ТабличныйДокумент):

&НаКлиенте
Процедура СуммаВыделенного(Команда)
	ТабДок = Отчет;
	Сумма = 0;
	Для Каждого Обл Из ТабДок.ВыделенныеОбласти Цикл
		Если ТипЗнч(Обл) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
			Продолжить;
		КонецЕсли;
		Верх = Обл.Верх; Низ = Обл.Низ; Лево = Обл.Лево; Право = Обл.Право;
		Если Обл.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
			Лево = 1; Право = ТабДок.ШиринаТаблицы;
		ИначеЕсли Обл.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда
			Верх = 1; Низ = ТабДок.ВысотаТаблицы;
		ИначеЕсли Обл.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Таблица Тогда
			Верх = 1; Низ = ТабДок.ВысотаТаблицы;
			Лево = 1; Право = ТабДок.ШиринаТаблицы;
		КонецЕсли;
		Для Стр = Верх По Низ Цикл
			Для Кол = Лево По Право Цикл
				Текст = ТабДок.Область(Стр, Кол, Стр, Кол).Текст;
				Текст = СтрЗаменить(Текст, " ", "");
				Текст = СтрЗаменить(Текст, Символы.НПП, "");
				Текст = СтрЗаменить(Текст, ",", ".");
				Если ПустаяСтрока(Текст) Тогда
					Продолжить;
				КонецЕсли;
				Попытка
					Сумма = Сумма + Число(Текст);
				Исключение
					// текст в ячейке — пропускаем
				КонецПопытки;
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;
	Сообщить("Сумма выделенного: " + Формат(Сумма, "ЧДЦ=2"));
КонецПроцедуры

Выделить строки отчёта кодом можно через текущую область поля: Элементы.Отчет.ТекущаяОбласть = Отчет.Область("R5:R10"); — выделятся строки с 5-й по 10-ю.

Перебор ячеек по одной медленный. На отчёте в 50 000 строк выделение «всего листа» обработается заметно долго — для таких объёмов считайте итог на сервере по исходным данным, а не по ячейкам.

Почему не выделяются строки: частые ошибки

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

Отдельный случай — дерево (например, справочник с иерархией, раскрытый в виде дерева). Shift-диапазон в нём захватывает и строки групп. Если групповое действие не должно касаться папок, переключите вид на список или отберите только элементы.

Отличия в разных версиях платформы и интерфейсах

Сочетания Shift, Ctrl и Ctrl+A одинаковы во всех версиях 8.x. Меняется в основном программная часть.

ЧтоОбычные формы (8.2 и старые конфигурации)Управляемые формы (8.3, «Такси»)
Элемент таблицыТабличноеПолеТаблицаФормы
Что лежит в ВыделенныеСтрокисами строки или ссылкиключи: ссылки в динамическом списке, идентификаторы в табличной части
Где работает кодна клиенте, с прямым доступом к даннымклиент и сервер разделены, данные строк передают на сервер явно

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

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

Если вы каждый день отмечаете пачки документов, пара настроек сократит число щелчков:

  • 🎯 Сохранённые отборы. Настройте отбор в списке один раз — платформа запоминает его для пользователя. При следующем открытии сразу Ctrl+A.
  • 🧱 Лишние колонки — долой. Через Ещё → Изменить форму уберите колонки, которые не нужны. Строки становятся короче, на экран попадает больше, длинный Shift-диапазон видно целиком.
  • 🔃 Сортировка под задачу. Щелчок по заголовку колонки сортирует список. Отсортируйте по контрагенту или сумме — нужные строки встанут подряд, и их можно взять одним диапазоном.
  • 🛠 Групповое изменение вместо ручного. В БП 3.0 обработка доступна в Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов. Там отбор задаётся условиями, а не выделением мышью — удобно для тысяч записей.
  • 📌 Избранное. Часто используемый список добавьте в избранное (звёздочка в заголовке формы), чтобы открывать его без поиска по разделам.
Можно ли выделить строки через одну, например только чётные?
Штатного способа нет. Выделяйте Ctrl+щелчком вручную или отсортируйте список так, чтобы нужные строки встали подряд.
Как узнать, сколько строк выделено в списке?
Типовые формы списков счётчик выделенных строк не показывают. Если число важно, поставьте отбор, при котором в списке остаются только нужные строки, и считайте по нему.
Сохраняется ли выделение после закрытия формы?
Нет. При повторном открытии текущей становится строка, на которой вы были, но множественное выделение сбрасывается.
Почему после Ctrl+A провелись не все документы?
Скорее всего, по части документов были ошибки проведения: нехватка остатков, незаполненные реквизиты. Программа выводит сообщения по каждому такому документу — откройте их по ссылке из сообщения.
Как перенести выделенный диапазон отчёта в Excel без лишних строк?
Выделите нужные строки по номерам слева, нажмите Ctrl+C и вставьте в Excel. Переносятся только выделенные ячейки, шапку отчёта при необходимости скопируйте отдельно.