Выделение группы строк в документе 1С: клавиши, меню и код
Содержание
Чтобы выделить несколько строк
в табличной части документа 1С, щёлкайте по строкам с зажатой клавишей Ctrl — так отмечаются строки вразнобой. Чтобы выделить подряд идущий блок, щёлкните первую строку, зажмите Shift и щёлкните последнюю. Все строки сразу — Ctrl+A, когда курсор стоит в таблице.
Типичная ситуация: в реализации 120 позиций, покупатель отказался от двенадцати, и их надо убрать. Удалять по одной долго, а щелчок мышью без клавиш сбрасывает уже сделанное выделение. Приёмы описаны для платформы 8.3 в интерфейсе «Такси». Они одинаковы для БП 3.0, ЗУП 3.1, УТ 11 и других типовых конфигураций, потому что выделение строк работает на уровне платформы.
Клавиши и мышь: базовые способы выделить строки
Набор сочетаний небольшой, но его хватает на любую задачу.
| Что нужно | Как сделать |
|---|---|
| Добавить или снять одну строку | щелчок с зажатым Ctrl |
| Выделить диапазон мышью | щелчок по первой строке, затем Shift + щелчок по последней |
| Выделить диапазон с клавиатуры | Shift + стрелка вверх или вниз |
| Выделить экран строк | Shift + Page Up / Page Down |
| Выделить все строки таблицы | Ctrl+A или команда «Выделить все» в меню «Ещё» |
| Сбросить выделение | обычный щелчок по любой строке |
Как комбинировать Ctrl и Shift
Приёмы можно смешивать. Например, нужно выделить строки 5–15 и ещё 30–40:
- Щёлкните строку 5.
- Зажмите
Shiftи щёлкните строку 15 — выделен первый блок. - Зажмите
Ctrlи щёлкните строку 30 — она добавилась, первый блок остался. - Зажмите
Ctrl+Shiftи щёлкните строку 40 — добавился второй блок.
Если на шаге 4 зажать только Shift, первый блок пропадёт: выделение перестроится от строки 30 до 40.
Где щёлкать
Щёлкайте по ячейке, которая не открывается на редактирование, например по колонке N с номером строки. Щелчок по полю «Количество» или «Цена» в некоторых формах сразу запускает ввод значения, и выделение сбивается.
Если случайно включилось редактирование ячейки, нажмите Esc. Режим ввода закроется, выделенные строки останутся.
Выделение протягиванием мыши
Протянуть мышь с зажатой левой кнопкой в таблице формы — ненадёжный способ. Во многих таблицах это включает перетаскивание строки на новое место, и вместо выделения вы перенесёте позицию в другую часть списка. Для диапазона используйте Shift.
Интерфейс «Такси», веб-клиент и обычные формы
Тонкий клиент в «Такси»
Всё, что описано выше, работает в тонком клиенте без настроек. Выделенные строки подсвечиваются цветом, текущая строка (с курсором) отмечена рамкой. Это разные вещи: строк выделено может быть 20, а текущая всегда одна. Часть команд работает со всеми выделенными строками, часть — только с текущей.
Веб-клиент в браузере
В браузере сочетания те же. Есть две особенности:
- 🖱
Ctrl+Aсрабатывает для таблицы, только когда фокус в ней. Если фокус на странице браузера или в поле ввода, выделится текст страницы или поля. Сначала щёлкните любую строку, потом жмитеCtrl+A. - 🌐 Часть сочетаний перехватывает сам браузер. Если команда не срабатывает с клавиатуры, вызовите её из меню «Ещё» или из контекстного меню.
Обычные формы (старые конфигурации)
В конфигурациях на обычных формах, которые запускаются в толстом клиенте, Ctrl и Shift работают так же. Отличается только набор команд в панели над таблицей: меню «Ещё» там нет, групповые действия ищите в меню «Действия» над таблицей и в контекстном меню.
Действия с группой строк через контекстное меню
Выделили строки — щёлкните правой кнопкой по любой из выделенных. Если щёлкнуть правой кнопкой по невыделенной строке, выделение может сброситься на неё одну.
Что надёжно применяется ко всем выделенным строкам:
- 🗑 Удаление. Клавиша
Deleteили команда «Удалить» убирает все выделенные строки разом. Это самый частый сценарий. - 📋 Копирование в буфер. В типовых конфигурациях на современной БСП в меню табличной части товаров есть команды копирования и вставки строк. Скопированные строки вставляются в другой документ того же или подходящего вида: например, товары из счёта покупателю переносятся в реализацию.
- ↕ Перемещение. Команды «Переместить вверх» и «Переместить вниз» сдвигают выделенные строки. Перед массовым переносом проверьте поведение на двух строках: в некоторых формах сдвигается только текущая.
Удаление строк табличной части не отменяется сочетанием Ctrl+Z. Если удалили лишнее, закройте документ без сохранения и откройте заново. Пока документ не записан, в базе остаются прежние строки.
Если документ уже проведён и вы его записали после удаления, восстановить строки можно только вручную или из резервной копии базы. Перед массовым удалением в больших документах проверьте выделение: прокрутите таблицу и убедитесь, что подсвечены только нужные строки.
Командная панель и меню «Ещё» над табличной частью
Над каждой табличной частью есть своя командная панель. Кнопки «Добавить», «Подбор», «Заполнить» и стрелки перемещения видны сразу, остальное спрятано в меню «Ещё».
Что искать в меню «Ещё»
- Выделить все — то же, что
Ctrl+A. - Найти (
Ctrl+F) — поиск значения в колонке. Удобно, когда строк сотни. - Вывести список — выгружает таблицу в табличный документ. Оттуда строки сохраняются в Excel или копируются целиком.
- Изменить форму — настройка колонок. Пригодится, если нужной для сортировки колонки нет на экране.
- Команды конфигурации — заполнение цен, пересчёт скидок, смена ставки НДС. Многие из них обрабатывают все строки табличной части, а не только выделенные. Читайте подсказку команды.
Вывести список, если надо работать со строками в Excel
Когда задача — не изменить строки в 1С, а отдать их коллеге или сверить в Excel, выделение не нужно:
- Откройте
Ещё → Вывести список. - Отметьте колонки, которые нужны, и нажмите «ОК».
- В открывшемся табличном документе выделите ячейки мышью или
Ctrl+A. - Скопируйте
Ctrl+Cи вставьте в Excel, либо сохраните файл через меню формы.
В табличном документе при выделении нескольких ячеек с числами 1С показывает их сумму в поле над документом. Так быстро проверить итог по выделенным позициям, не считая вручную.
Выделение строк по условию: сортировка и поиск
В табличной части нет команды «выделить все строки, где количество равно нулю». Но задачу решают два приёма.
Приём 1. Отсортировать и выделить блок
Щелчок по заголовку колонки сортирует таблицу по этой колонке. Нужные строки встают рядом, и их легко выделить через Shift.
Пример: в документе 80 строк, у семи из них не заполнена цена.
- Щёлкните заголовок колонки «Цена». Строки с нулевой ценой окажутся вверху.
- Щёлкните первую такую строку.
- Зажмите
Shiftи щёлкните последнюю строку с нулём. - Заполните цену или удалите строки — по задаче.
Сортировка в форме меняет порядок строк в документе. После записи номера строк станут другими, и печатная форма выйдет в новом порядке. Если порядок важен (например, он согласован с покупателем), отсортируйте таблицу обратно по колонке N до записи или закройте документ без сохранения после разовой операции.
Приём 2. Поиск и выделение по одной
Если строки разбросаны и по сортировке их не собрать:
- Нажмите
Ctrl+F, введите значение, выберите колонку. - Найдите первую строку и отметьте её.
- Ищите следующую, а отмечайте с зажатым
Ctrl, чтобы не потерять предыдущие.
Этот способ годится для 5–10 строк. Для сотни — быстрее сортировка или обработка в коде.
Если строк тысячи
Документы на тысячи позиций (загрузка из Excel , инвентаризация) удобнее править не выделением, а повторной загрузкой: исправить данные в файле и заполнить табличную часть заново. В большинстве типовых документов загрузка из файла есть в командной панели табличной части.
Выделенные строки в коде: свойство ВыделенныеСтроки
Для программиста выделение — это свойство элемента формы ТаблицаФормы. Через него делают команды «Установить скидку выделенным», «Удалить выделенные» и подобные.
Режим выделения таблицы
Множественное выделение работает, только если у элемента таблицы свойство «Режим выделения» равно «Множественный». В конфигураторе оно в палитре свойств элемента формы, в коде — так:
Элементы.Товары.РежимВыделения = РежимВыделенияТаблицы.Множественный;
Если стоит «Одиночный», пользователь сможет выделить только одну строку, и Ctrl со Shift ничего не дадут.
Обработать выделенные строки
ВыделенныеСтроки у таблицы табличной части возвращает массив идентификаторов строк, а не сами строки. Строку по идентификатору находят методом НайтиПоИдентификатору:
&НаКлиенте
Процедура УстановитьСкидкуВыделенным(Команда)
Выделенные = Элементы.Товары.ВыделенныеСтроки;
Если Выделенные.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Выделите строки табличной части.");
Возврат;
КонецЕсли;
Для Каждого Идентификатор Из Выделенные Цикл
СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Если СтрокаТЧ <> Неопределено Тогда
СтрокаТЧ.ПроцентСкидки = 5;
КонецЕсли;
КонецЦикла;
Модифицированность = Истина;
КонецПроцедуры
После такой правки пересчитайте суммы строк той процедурой, которую использует сама форма при изменении скидки. Иначе процент поменяется, а сумма останется старой.
Выделить строки программно
Обратная задача — выделить строки по условию, чтобы пользователь увидел их и решил, что делать:
&НаКлиенте
Процедура ВыделитьСтрокиБезЦены(Команда)
Элементы.Товары.ВыделенныеСтроки.Очистить();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.Цена = 0 Тогда
Элементы.Товары.ВыделенныеСтроки.Добавить(СтрокаТЧ.ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Удалить выделенные строки
Удалять строки прямо внутри цикла по ВыделенныеСтроки нельзя: при удалении массив выделения меняется. Сначала соберите строки в отдельный массив, потом удаляйте:
&НаКлиенте
Процедура УдалитьВыделенные(Команда)
КУдалению = Новый Массив;
Для Каждого Идентификатор Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Если СтрокаТЧ <> Неопределено Тогда
КУдалению.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТЧ Из КУдалению Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
КонецПроцедуры
Что учитывать в коде
- 🔢 Порядок идентификаторов в
ВыделенныеСтрокине обязан совпадать с порядком строк в таблице. Если важна последовательность, сортируйте поНомерСтроки. - 📍
ТекущаяСтрока— это одна строка под курсором. Код, который читает только её, обработает одну позицию из двадцати выделенных. - 🖥 В процедуру
&НаСервереБезКонтекстаэлементы формы не передаются. Соберите идентификаторы или нужные значения на клиенте и передайте массивом в параметре. - 📑 В динамическом списке (журнал документов, справочник)
ВыделенныеСтрокисодержит не идентификаторы, а ссылки на объекты или ключи записей. Код для табличной части и для списка отличается.
Почему не получается выделить несколько строк
Если ничего не помогло
Проверьте сочетания в другой таблице, например в списке справочника «Номенклатура». Если там Ctrl и Shift работают, ограничение задано в конкретной форме. Если не работают нигде, причина в клавиатуре или в программе, которая перехватывает клавиши: переключатель раскладки, клиент удалённого рабочего стола. Запустите 1С без них и сравните.
Частые вопросы
Можно ли выделить несколько строк в табличной части без мыши?
Shift, нажимайте стрелку вниз или Page Down. Выделение растягивается вместе с курсором.Как скопировать выделенные строки в другой документ?
Почему в журнале документов выделение работает, а в документе нет?
Сохраняется ли выделение после записи документа?
Как узнать, сколько строк выделено?
Элементы.Товары.ВыделенныеСтроки.Количество(). Для разовой проверки выделенные позиции проще пересчитать по колонке N.