Выделение всех строк в таблицах и списках 1С 8.3

· 9 мин

Содержание

Отдельной кнопки «Выделить всё» в большинстве списков 1С нет — её ищут, не находят и решают, что массовое выделение недоступно. На самом деле выделить все позиции в 1С проще всего одним сочетанием: встаньте в таблицу или список и нажмите Ctrl+A. Выделятся все строки, которые сейчас видит форма.

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

Сочетания клавиш: выделить все строки за секунду

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

  • ⌨️ Ctrl+A — выделить все строки текущего списка или табличной части.
  • ⌨️ Shift+↓ / Shift+↑ — расширить выделение на строку вниз или вверх.
  • ⌨️ Ctrl+Shift+End — выделить от текущей строки до конца списка.
  • ⌨️ Ctrl+Shift+Home — выделить от текущей строки до начала.
  • ⌨️ Ctrl+щелчок мышью — добавить одну строку к выделению или снять с неё отметку.

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

Выделение через Ctrl+A охватывает только те записи, которые уже подгружены в список. Про динамические списки с тысячами строк поговорим в разделе о проблемах — там есть нюанс.

Выделение мышью и через контекстное меню

Когда нужен не весь список, а диапазон подряд, удобнее мышь.

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

Чтобы собрать выделение из строк вразнобой, щёлкайте по ним с зажатым 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С. Если задача — не действие в базе, а анализ, часто быстрее вывести список в табличный документ (команда вывода списка) и обработать данные в таблице.

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

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

Массовое действие над выделенными строками
Выполнено: 0 / 5

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

Почему не выделяется всё сразу: разбор проблем

Самые частые причины, по которым Ctrl+A «не срабатывает».

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

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

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

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

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

Какое сочетание выделяет все позиции в 1С?
Ctrl+A, когда курсор стоит внутри списка или табличной части. Это универсальный способ для тонкого и веб-клиента в 1С 8.3.
Можно ли выделить строки сразу на нескольких страницах динамического списка?
Нет. Выделение охватывает только подгруженные строки. Для операции над всеми записями применяйте групповую обработку по отбору, а не выделение в форме.
Как снять выделение с одной строки, не сбрасывая остальные?
Щёлкните по ней с зажатым Ctrl — отметка снимется только с этой строки, остальные останутся выделенными.
Почему `Ctrl+A` выделяет только одну строку?
Либо фокус не на таблице (щёлкните по строке и повторите), либо у таблицы в конфигурации разрешён только одиночный выбор — это настраивается разработчиком.
Как выделить все ячейки в готовом отчёте?
Щёлкните по области отчёта и нажмите Ctrl+A — выделится весь табличный документ. Дальше Ctrl+C переносит данные в Excel.