Выделение всех строк в таблицах и списках 1С 8.3
Содержание
Отдельной кнопки «Выделить всё» в большинстве списков 1С нет — её ищут, не находят и решают, что массовое выделение недоступно. На самом деле выделить все позиции в 1С проще всего одним сочетанием: встаньте в таблицу или список и нажмите Ctrl+A. Выделятся все строки, которые сейчас видит форма.
Способ работает одинаково в «Бухгалтерии предприятия», ЗУП, «Управлении торговлей» и в собственных обработках — это поведение платформы 8.3, а не отдельной конфигурации. Ниже разберём четыре рабочих варианта: клавиатуру, мышь, встроенный язык и выделение в отчётах, а также особенности веб- и мобильного клиента.
Сочетания клавиш: выделить все строки за секунду
Клавиатура — самый быстрый путь. Курсор должен стоять внутри таблицы или списка, а не в поле ввода над ним.
- ⌨️
Ctrl+A— выделить все строки текущего списка или табличной части. - ⌨️
Shift+↓/Shift+↑— расширить выделение на строку вниз или вверх. - ⌨️
Ctrl+Shift+End— выделить от текущей строки до конца списка. - ⌨️
Ctrl+Shift+Home— выделить от текущей строки до начала. - ⌨️
Ctrl+щелчок мышью— добавить одну строку к выделению или снять с неё отметку.
Если Ctrl+A выделяет только одну строку, фокус стоит не на таблице, а на поле или командной панели. Щёлкните сначала по любой строке списка, затем нажимайте сочетание.
Выделение через Ctrl+A охватывает только те записи, которые уже подгружены в список. Про динамические списки с тысячами строк поговорим в разделе о проблемах — там есть нюанс.
Выделение мышью и через контекстное меню
Когда нужен не весь список, а диапазон подряд, удобнее мышь.
- Щёлкните по первой нужной строке.
- Зажмите
Shiftи щёлкните по последней строке диапазона. - Все строки между ними выделятся разом.
Чтобы собрать выделение из строк вразнобой, щёлкайте по ним с зажатым Ctrl. Повторный Ctrl+щелчок по выделенной строке снимает отметку — это удобнее, чем начинать заново.
Правый клик по списку открывает контекстное меню. Набор команд в нём зависит от формы: обычно это Скопировать, Изменить, иногда — команды группового изменения, настроенные разработчиком. Универсальной команды «Выделить всё» в стандартном контекстном меню ждать не стоит — за массовое выделение отвечает именно Ctrl+A, а дальше действие (пометить на удаление, скопировать, провести) вызывается из командной панели или меню Ещё.
Чтобы не держать все варианты в голове, вот короткая сводка — какой способ под какую задачу:
| Способ | Когда применять | Что выделяет |
|---|---|---|
Ctrl+A | Нужны все строки сразу | Все загруженные строки списка |
Shift + щелчок | Нужен диапазон подряд | Строки от текущей до указанной |
Ctrl + щелчок | Строки вразнобой | Отдельные строки по одной |
Ctrl+Shift+End | От места курсора до конца | Текущую и все ниже |
Код ВыделенныеСтроки | Массовое действие в обработке | То, что задаёте программно |
Для списка справочника или журнала документов хватает первых четырёх строк таблицы. Код нужен там, где выделение — часть автоматизации: своя команда на форме, расширение, внешняя обработка.
Как выделить все строки программно во встроенном языке
В обработках и расширениях выделением управляет свойство элемента таблицы ВыделенныеСтроки. Это коллекция идентификаторов строк: что в ней лежит — то и подсвечено на форме.
Чтобы программно выделить все строки табличной части (например, Товары на форме документа):
&НаКлиенте
Процедура ВыделитьВсе(Команда)
Элементы.Товары.ВыделенныеСтроки.Очистить();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Элементы.Товары.ВыделенныеСтроки.Добавить(СтрокаТЧ.ПолучитьИдентификатор());
КонецЦикла;
КонецПроцедуры
Метод ПолучитьИдентификатор() возвращает идентификатор строки табличной части, а Добавить() кладёт его в выделение. Сначала вызываем Очистить(), чтобы не смешать с тем, что пользователь отметил раньше.
Обратная задача — обойти то, что выделил пользователь. Здесь пригодится метод ДанныеСтроки():
&НаКлиенте
Процедура ОбработатьВыделенные(Команда)
Для Каждого ИдСтроки Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.Список.ДанныеСтроки(ИдСтроки);
Сообщить(ДанныеСтроки.Ссылка);
КонецЦикла;
КонецПроцедуры
Если данные лежат не в табличной части документа, а в таблице значений обработки, идентификатор строки берут тем же методом — ПолучитьИдентификатор() есть и у строки таблицы значений, выведенной на форму. А чтобы собрать из выделения сами значения строк для дальнейшей работы, пройдите по ВыделенныеСтроки и для каждого идентификатора возьмите данные:
&НаКлиенте
Процедура СуммаПоВыделенным(Команда)
Итог = 0;
Для Каждого ИдСтроки Из Элементы.Товары.ВыделенныеСтроки Цикл
Строка = Элементы.Товары.ДанныеСтроки(ИдСтроки);
Итог = Итог + Строка.Сумма;
КонецЦикла;
Сообщить(СтрШаблон("Выделено строк на сумму %1", Формат(Итог, "ЧГ=0")));
КонецПроцедуры
Число к строке здесь склеено не напрямую, а через СтрШаблон и Формат — иначе платформа подставит число с разделителями по умолчанию и строка получится неаккуратной.
Чтобы множественное выделение вообще было доступно, у элемента таблицы в палитре свойств должно быть разрешено выделение нескольких строк (свойство множественного выбора). Если оно выключено, пользователь и Ctrl+A смогут отметить только одну запись, а код ВыделенныеСтроки вернёт максимум один идентификатор. Этот режим задаётся на этапе разработки формы — из пользовательского режима его не переключить.
ВыделенныеСтроки у динамического списка содержит только загруженные строки. Для операции над всей базой (все документы за период, все элементы справочника) не полагайтесь на выделение в форме — обходите данные запросом, иначе часть записей молча выпадет.
Выделение ячеек в отчётах и табличных документах
Результат отчёта — это табличный документ, и выделение в нём устроено иначе: отмечают не строки списка, а ячейки и области.
Ctrl+Aв области отчёта выделяет весь табличный документ.- Протяжка мышью выделяет прямоугольную область ячеек.
Shift+щелчокпо ячейке расширяет выделенную область до неё.- Клик по заголовку строки или столбца выделяет строку либо столбец целиком.
Дальше выделенное обычно копируют во внешнюю таблицу: Ctrl+C, затем вставка в Excel или другой редактор — форматирование и числа переносятся. Если нужен весь отчёт как файл, используйте Сохранить как и выберите табличный формат — это надёжнее, чем копировать огромную область через буфер обмена.
Пара приёмов, которые экономят время с большими отчётами:
- Клик по левому верхнему углу таблицы (на пересечении заголовков строк и столбцов) выделяет весь документ — альтернатива
Ctrl+A, если курсор упорно не хочет вставать в область. - Чтобы распечатать не весь отчёт, а только часть, выделите нужную область и в настройках печати укажите печать области. Остальное на бумагу не попадёт.
- Группировки в отчёте можно свернуть перед выделением — тогда в буфер уйдут только итоговые строки, а не вся детализация.
В собственных обработках, где данные лежат в таблице значений на форме, выделение работает как у обычной таблицы формы: те же Ctrl+A, Shift, Ctrl и то же свойство ВыделенныеСтроки в коде.
Выделение в веб-клиенте и мобильном приложении
Веб-клиент. Поведение совпадает с тонким клиентом: Ctrl+A выделяет все строки списка, Shift и Ctrl работают так же. 1С рисует собственное контекстное меню поверх браузерного, поэтому правый клик открывает команды формы, а не меню браузера. Если первый Ctrl+A выделил текст страницы, а не строки, — щёлкните по списку и повторите.
Мобильный клиент. Клавиатуры с Ctrl под рукой нет, поэтому множественное выделение включается иначе: длинным нажатием по строке список переходит в режим выделения, рядом со строками появляются отметки, дальше отмечаете нужные касанием. Набор массовых действий на мобильном урезан по сравнению с десктопом — часть групповых операций просто недоступна в интерфейсе телефона.
Если на телефоне нужно разово обработать много строк, практичнее подключиться к
той же базе с компьютера: там доступны и Ctrl+A, и групповые обработки. Мобильный клиент рассчитан на точечные действия в поле, а не на массовую правку списков.
Тонкий клиент на удалённом рабочем столе. Если 1С открыта через RemoteApp или терминальный сервер
, сочетания клавиш уходят в сеанс 1С, а не в локальную систему — Ctrl+A работает штатно. Исключение — когда фокус перехватил сам терминальный клиент; тогда сначала щёлкните внутри окна 1С.
Групповые операции вместо ручного выделения
Иногда выделять всё вручную не нужно — задачу лучше решить готовым механизмом.
- 🔧 Групповое изменение реквизитов. Стандартная обработка меняет один и тот же реквизит сразу у выбранных объектов (или у всех, подходящих под отбор). Открывается через меню
Ещё → Изменить выделенныев списке либо изВсе функции. Подходит, когда цель выделения — поменять организацию , склад, ответственного у пачки документов. - 🗑️ Пометка на удаление пачкой. Выделите строки через
Ctrl+Aи нажмитеDeleteили команду пометки на удаление в командной панели — пометятся все отмеченные записи. - 📤 Выгрузка для обработки вне 1С. Если задача — не действие в базе, а анализ, часто быстрее вывести список в табличный документ (команда вывода списка) и обработать данные в таблице.
Для разовой массовой правки над тысячами объектов групповая обработка по отбору надёжнее ручного выделения: отбор возьмёт все подходящие записи, даже не отображённые на экране.
Порядок действий с выделенной пачкой строк обычно один и тот же:
Пометка на удаление и групповое изменение затрагивают все выделенные записи сразу и в рабочей базе. Перед массовой правкой убедитесь, что в выделение попало именно то, что нужно, а по важным данным есть свежая резервная копия.
Почему не выделяется всё сразу: разбор проблем
Самые частые причины, по которым Ctrl+A «не срабатывает».
Ещё одна типичная ошибка — пытаться выделить строки в поле, а не в таблице. В формах документов над табличной частью часто есть поля ввода; пока курсор в них, Ctrl+A выделяет текст поля, а не строки. Нужен один щелчок по самой таблице.
Проверить, что выделилось именно то, что нужно, проще всего по подсветке строк: отмеченные записи остаются выделенными, пока вы не щёлкнете по списку без модификатора. Если случайно сбросили выделение одним кликом — ничего страшного, повторите Ctrl+A или протяжку заново, данные от этого не меняются. Само по себе выделение ничего не правит в базе: опасны только команды, которые вы к нему примените.
Отдельно стоит помнить про отбор. Если над списком стоит фильтр (по организации, периоду, статусу), Ctrl+A выделит строки в пределах отбора, а не всю базу. Это удобно: сначала сужаете список отбором до нужных записей, затем выделяете всё и применяете действие — лишнее под раздачу не попадёт.
Частые вопросы
Какое сочетание выделяет все позиции в 1С?
Ctrl+A, когда курсор стоит внутри списка или табличной части. Это универсальный способ для тонкого и веб-клиента в 1С 8.3.Можно ли выделить строки сразу на нескольких страницах динамического списка?
Как снять выделение с одной строки, не сбрасывая остальные?
Ctrl — отметка снимется только с этой строки, остальные останутся выделенными.Почему `Ctrl+A` выделяет только одну строку?
Как выделить все ячейки в готовом отчёте?
Ctrl+A — выделится весь табличный документ. Дальше Ctrl+C переносит данные в Excel.