Выделение в 1С 8.3 мышью, клавишами и кодом: от строки списка до области отчёта
Содержание
Чтобы выделить в 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 просто не работают. Обойти это пользователю нельзя, нужна доработка формы.
Выделение в деревьях и иерархических справочниках
Справочники с группами («Номенклатура», «Контрагенты», «Статьи затрат») показывают данные деревом. Здесь есть своя логика.
- Щелчок по группе выделяет только строку группы, а не её содержимое.
- Раскрыть группу — щелчок по треугольнику слева или
+на цифровом блоке клавиатуры. Свернуть —-. Shift+ щелчок выделяет строки, которые сейчас видны на экране. Элементы свёрнутых групп в диапазон не попадают.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.
Множественное выделение строк в мобильных формах есть не везде, оно зависит от того, как разработчик сделал форму. Если нужно обработать несколько строк на телефоне, надёжнее вариант с флажками из следующего раздела.
Когда стандартное выделение не подходит
Выделение живёт до первого щелчка мимо. Обновили список, сменили отбор — подсветка сбрасывается. Для работы с сотней позиций это неудобно. Есть три обходных пути.
- Отбор вместо выделения. Нужны все документы одного контрагента за квартал? Поставьте отбор по контрагенту и периоду, затем
Ctrl+A. Это быстрее и надёжнее, чем 80 щелчков сCtrl. - Колонка-флажок. В обработках и формах подбора делают булеву колонку «Пометка». Отметки сохраняются при прокрутке и обновлении, их видно на телефоне. Программист потом перебирает строки с
Пометка = Истина. Этот вариант выбирают, когда пользователь отмечает строки долго и по одной. - Групповая обработка по отбору. Команда
Изменить выделенные...и типовые обработки группового изменения умеют работать не только с выделенным, но и с отбором. Для тысяч элементов отбор безопаснее: не придётся проверять, всё ли вы выделили.
Групповое изменение и пометка на удаление сотен объектов — операция, которую трудно откатить вручную. Перед ней сделайте резервную копию базы.
Если выделение работает не так, как ждёте
Esc, щёлкните строку таблицы и повторите.Частые вопросы
Как выделить колонку в табличной части, а не строку?
Ещё → Вывести список... и выделите колонку там.Можно ли выделить строки в двух разных списках одновременно?
Сохраняется ли выделение после закрытия формы?
Как выделить и скопировать номер документа из шапки?
Ctrl+A, затем Ctrl+C. Если поле недоступно для редактирования, текст в нём всё равно выделяется мышью.Почему `Ctrl` + щелчок в отчёте сбрасывает прежнее выделение?
Ctrl до щелчка или щёлкнули без протяжки внутри уже выделенной области. Держите клавишу до конца выделения каждой новой области.