Выделение в 1С 8.3 мышью, клавишами и кодом: от строки списка до области отчёта

· 10 мин

Содержание

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

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

Выделение строк в списках и табличных частях

Списки справочников и документов, табличные части («Товары», «Услуги», «Начисления») — это таблицы формы. В них работает один набор приёмов.

Мышь и клавиши

Что нужноКак сделать
Одна строкаЩелчок по строке или стрелки ↑ ↓
Диапазон подрядЩелчок по первой, Shift + щелчок по последней
Диапазон с клавиатурыShift+↑ / Shift+↓, на страницу — Shift+PageDown
Отдельные строкиCtrl + щелчок по каждой
Снять одну строку из выделенияПовторный Ctrl + щелчок по ней
Все строкиCtrl+A при фокусе в таблице

Выделенные строки подсвечиваются цветом. Текущая строка — та, на которой стоит курсор, — обведена рамкой. Это разные вещи: команда «Открыть» сработает по текущей строке, а «Удалить» или «Провести» — по всем выделенным.

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

  • 🗑 Пометить на удаление — Delete или команда в меню Ещё. Пометка ставится на все выделенные строки сразу.
  • 📄 Провести или отменить проведение пачки документов — команды в журнале работают по выделению.
  • ✏️ Групповое изменение реквизитов — в типовых конфигурациях в меню Ещё есть команда Изменить выделенные.... Она меняет один реквизит у всех выделенных элементов: например, ставку НДС у 40 номенклатурных позиций.
  • 📋 Копирование — Ctrl+C копирует выделенные строки в буфер. В Excel они вставятся по колонкам.
  • 🖨 Печать нескольких документов — выделите их в журнале и нажмите «Печать». Формы выйдут одним пакетом.

Если нужно выгрузить весь список с колонками, удобнее Ещё → Вывести список.... Программа соберёт табличный документ, который можно сохранить в Excel.

Почему выделяется только одна строка

У каждой таблицы формы есть режим выделения: одиночный или множественный. Его задаёт разработчик. В журналах документов и списках справочников обычно стоит множественный режим. В некоторых формах подбора и в части табличных частей — одиночный. Тогда Shift и Ctrl просто не работают. Обойти это пользователю нельзя, нужна доработка формы.

Выделение в деревьях и иерархических справочниках

Справочники с группами («Номенклатура», «Контрагенты», «Статьи затрат») показывают данные деревом. Здесь есть своя логика.

  1. Щелчок по группе выделяет только строку группы, а не её содержимое.
  2. Раскрыть группу — щелчок по треугольнику слева или + на цифровом блоке клавиатуры. Свернуть — -.
  3. Shift + щелчок выделяет строки, которые сейчас видны на экране. Элементы свёрнутых групп в диапазон не попадают.
  4. Ctrl + щелчок позволяет собрать элементы из разных групп, если обе группы раскрыты.

Пометка на удаление группы помечает и всё её содержимое. Если хотели убрать один элемент, а выделенной оказалась группа, потеряете доступ ко всем позициям внутри. Перед Delete проверьте, какая строка подсвечена.

Как выделить все элементы группы без самой группы

Переключите вид списка. В меню Ещё найдите Режим просмотра и выберите Список. Иерархия пропадёт, элементы встанут плоским списком. Теперь поставьте отбор по родителю или найдите позиции поиском и нажмите Ctrl+A.

Вернуть дерево — тем же пунктом, вариант Дерево или Иерархический список.

Выделение ячеек в отчётах и печатных формах

Отчёты, оборотно-сальдовые ведомости, печатные формы — это табличный документ. Здесь выделяются ячейки, как в Excel.

Приёмы для табличного документа

  • 🖱 Область — зажмите левую кнопку мыши и протяните.
  • ⇧ Прямоугольник по краям — щелчок по первой ячейке, Shift + щелчок по последней.
  • ⌨️ С клавиатуры — Shift + стрелки.
  • ➕ Несколько разрозненных областей — Ctrl + протяжка мышью.
  • ↔️ Вся строка или колонка — щелчок по заголовку строки слева или колонки сверху. Заголовки видны, если включено их отображение; в готовом отчёте они бывают скрыты.
  • ⬛ Весь документ — Ctrl+A.

Сумма выделенных ячеек

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

Пример. В ОСВ по счёту 62 выделяете с Ctrl сальдо трёх покупателей: 120 000, 45 500 и 8 300. Программа показывает 173 800. Калькулятор не нужен.

Если сумма показывает 0 при выделенных цифрах, ячейки содержат текст, а не число. Так бывает в печатных формах и в отчётах, собранных обработками. Скопируйте область в Excel и посчитайте там.

Копирование в Excel

Выделите область, нажмите Ctrl+C и вставьте в Excel через Ctrl+V. Колонки и строки сохранятся. Для целого отчёта надёжнее сохранить файл кнопкой сохранения в форме отчёта и выбрать формат .xlsx: объединённые ячейки и форматы при копировании через буфер иногда съезжают.

Выделение текста в полях и ячейках

Текст внутри поля выделяется по обычным правилам Windows.

ДействиеКлавиши
СловоДвойной щелчок по слову
ПосимвольноShift + ← / →
По словамCtrl+Shift + ← / →
До начала или конца строкиShift+Home / Shift+End
Весь текст поляCtrl+A, когда курсор внутри поля

В ячейке табличной части сначала войдите в режим редактирования: F2, Enter или двойной щелчок. Пока ячейка не редактируется, Ctrl+A выделит строки таблицы, а не текст.

💡 Скопировать текст ошибки из окна сообщений внизу формы можно так же: щёлкните сообщение и нажмите Ctrl+C. Текст удобно вставить в поиск или письмо администратору без перепечатывания.

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

Для управляемых форм ключевые свойства такие:

Свойство или методОбъектЧто даёт
ТекущаяСтрокаТаблица формыСтрока под курсором
ВыделенныеСтрокиТаблица формыМассив выделенных строк
РежимВыделенияТаблица формыОдиночный или множественный
ТекущаяОбластьПоле табличного документаАктивная область, можно установить
ПолучитьВыделенныеОбласти()Поле табличного документаВсе выделенные области
ВыделенныйТекстПоле вводаВыделенный фрагмент текста

Выделенные строки табличной части

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

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

Имя реквизита ПроцентСкидки замените на своё. Если сумма в строке пересчитывается из скидки, вызовите тот же обработчик пересчёта, что срабатывает при ручном вводе.

Выделенные элементы динамического списка

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

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

&НаСервереБезКонтекста
Процедура ОбработатьНаСервере(Ссылки)
    Для Каждого Ссылка Из Ссылки Цикл
        // Ваша обработка: например, Ссылка.ПолучитьОбъект(), изменение и запись
    КонецЦикла;
КонецПроцедуры

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

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

Чтобы выделить все строки табличной части программно, очистите выделение и добавьте идентификаторы:

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

Сработает только при множественном режиме. В конфигураторе он задаётся в свойстве таблицы РежимВыделения или из кода: Элементы.Товары.РежимВыделения = РежимВыделенияТаблицы.Множественный.

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

Перевести курсор на ячейку отчёта:

Элементы.Результат.ТекущаяОбласть = Результат.Область("R5C2");

Здесь Результат — реквизит формы с табличным документом, а Элементы.Результат — его поле. Все выделенные области возвращает Элементы.Результат.ПолучитьВыделенныеОбласти(). Перебирайте её через Для Каждого и проверяйте тип области: при выделении колонки целиком приходит не обычный прямоугольник ячеек.

Выделенный пользователем текст в поле ввода читается из Элементы.Комментарий.ВыделенныйТекст. Это полезно для команды «Найти выделенное» или «Вставить шаблон вместо выделенного».

Веб-клиент и мобильное приложение 1С

Веб-клиент

Shift, Ctrl и щелчки работают так же, как в тонком клиенте. Отличия связаны с браузером:

  • 🌐 Ctrl+A выделяет таблицу, только если фокус в ней. Если фокус ушёл на страницу, браузер выделит всё содержимое вкладки. Щёлкните строку таблицы и повторите.
  • 📋 Копирование и вставка из буфера зависят от разрешений браузера. Если Ctrl+V в поле не срабатывает, проверьте, не заблокирован ли доступ к буферу для адреса публикации.
  • 🖱 Ctrl + щелчок на macOS выполняется через Cmd + щелчок.

Мобильное приложение

На телефоне клавиш нет, поэтому всё строится на касаниях:

  • 👆 Касание строки делает её текущей или открывает элемент — зависит от формы.
  • ✋ Долгое нажатие на строку открывает контекстное меню с командами для неё.
  • ✍️ Текст в поле выделяется стандартным жестом системы: долгое нажатие на слово, затем маркеры границ. Копирование — через всплывающее меню Android или iOS.

Множественное выделение строк в мобильных формах есть не везде, оно зависит от того, как разработчик сделал форму. Если нужно обработать несколько строк на телефоне, надёжнее вариант с флажками из следующего раздела.

Когда стандартное выделение не подходит

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

  1. Отбор вместо выделения. Нужны все документы одного контрагента за квартал? Поставьте отбор по контрагенту и периоду, затем Ctrl+A. Это быстрее и надёжнее, чем 80 щелчков с Ctrl.
  2. Колонка-флажок. В обработках и формах подбора делают булеву колонку «Пометка». Отметки сохраняются при прокрутке и обновлении, их видно на телефоне. Программист потом перебирает строки с Пометка = Истина. Этот вариант выбирают, когда пользователь отмечает строки долго и по одной.
  3. Групповая обработка по отбору. Команда Изменить выделенные... и типовые обработки группового изменения умеют работать не только с выделенным, но и с отбором. Для тысяч элементов отбор безопаснее: не придётся проверять, всё ли вы выделили.

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

Если выделение работает не так, как ждёте

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

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

Как выделить колонку в табличной части, а не строку?
В обычной таблице формы выделяются строки целиком. Колонку целиком можно выделить только в табличном документе: щёлкните её заголовок. Если нужны значения одной колонки, выведите список через Ещё → Вывести список... и выделите колонку там.
Можно ли выделить строки в двух разных списках одновременно?
Нет. Выделение принадлежит одной таблице. При переходе в другую таблицу подсветка в первой остаётся, но команды работают с той таблицей, где стоит фокус.
Сохраняется ли выделение после закрытия формы?
Нет. При повторном открытии формы выделена только текущая строка. Если нужно запомнить набор строк, используйте флажки или отбор.
Как выделить и скопировать номер документа из шапки?
Щёлкните поле номера, нажмите Ctrl+A, затем Ctrl+C. Если поле недоступно для редактирования, текст в нём всё равно выделяется мышью.
Почему `Ctrl` + щелчок в отчёте сбрасывает прежнее выделение?
Скорее всего, вы отпустили Ctrl до щелчка или щёлкнули без протяжки внутри уже выделенной области. Держите клавишу до конца выделения каждой новой области.