Выделение нескольких строк подряд в списках, табличных частях и отчётах 1С
Содержание
Чтобы выделить диапазон строк в 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. Здесь выделяют не строки формы, а области ячеек.
Строки и колонки целиком
- Щёлкните по номеру строки в сером поле слева — выделится вся строка.
- Зажмите
Shiftи щёлкните номер последней нужной строки — выделится диапазон строк. - Чтобы выделить колонку, щёлкните по её заголовку сверху. С колонками
Shiftработает так же. - Протянуть мышью по номерам строк с зажатой кнопкой — тот же результат, что и
Shift+щелчок.
Если серых полей с номерами не видно, их скрыли в настройках отчёта или макета. Тогда выделяйте ячейки: щелчок по первой, Shift+щелчок по последней.
Несколько несмежных областей
Зажмите Ctrl и выделяйте области по очереди: например, итоги по трём разным контрагентам в оборотно-сальдовой ведомости. Каждая область остаётся отдельной, это видно и в коде (о нём ниже).
Что делать с выделенным
- 📋
Ctrl+Cкопирует ячейки в буфер. В Excel или Google Таблицы они вставляются с разбивкой по колонкам. - ➕ В отчётах типовых конфигураций (БП 3.0, ЗУП 3.1, УТ 11) в верхней части формы есть поле, где показывается сумма выделенных числовых ячеек. Удобно сверить итог по нескольким строкам ОСВ без калькулятора.
- 🔍
Ctrl+Fищет текст по документу. Найденная ячейка становится текущей, от неё удобно строитьShift-диапазон.
Сумма в поле считается только по числам. Если в выделение попала ячейка с текстом или пустая, она просто не учитывается, итог от этого не ломается.
Работа с выделенными строками в списке документов
Список документов — динамический список. Он подгружает строки порциями по мере прокрутки, поэтому в нём есть особенности.
Массовые действия над выделенными документами
После выделения диапазона кнопки командной панели работают по всей пачке:
- Проведение и отмена проведения. Выделите документы, нажмите «Провести» — проведутся все. Если какой-то документ не провёлся, программа сообщит об ошибке именно по нему, остальные останутся проведёнными.
- Пометка на удаление.
Deleteили команда пометки — все выделенные документы получают пометку. - Печать. Команда «Печать» по нескольким документам формирует одну форму с документами подряд. Это быстрый способ напечатать 20 накладных за раз.
- Изменение реквизитов. В меню
Ещёесть команда «Изменить выделенные». Она открывает групповое изменение: например, поменять ответственного или комментарий сразу у всех выделенных документов.
Групповое проведение и изменение реквизитов меняют движения и данные в базе. Перед массовым изменением сотен документов за закрытый период сделайте резервную копию.
Сначала отбор, потом выделение
Выделять мышью 300 строк из 5000 неудобно и рискованно: легко промахнуться. Надёжнее так:
- Установите отбор по нужному признаку: организации, контрагенту, периоду, статусу. В формах списков БП 3.0 и УТ 11 отборы стоят прямо над таблицей, а период задаётся отдельной командой.
- В списке остаются только нужные документы.
- Нажмите
Ctrl+A— выделится вся отфильтрованная выборка. - Выполните действие.
При 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. Переносятся только выделенные ячейки, шапку отчёта при необходимости скопируйте отдельно.