Выделение ячеек, строк и диапазонов в отчётах и списках 1С 8.3
Содержание
Чтобы выделить ячейку в 1С, достаточно щёлкнуть по ней левой кнопкой мыши — вокруг появится жирная рамка. Диапазон выделяют протяжкой мышью или Shift + стрелки, несколько разрозненных ячеек — щелчками с зажатым Ctrl, весь отчёт — Ctrl+A. Это работает в любом табличном документе платформы 8.3: в отчётах, печатных формах, оборотно-сальдовой ведомости.
Частое заблуждение: «в 1С нельзя выделить одну ячейку в списке документов, выделяется только вся строка». На самом деле в списке тоже есть текущая ячейка — её отмечает рамка внутри подсвеченной строки, и Ctrl+C копирует именно её значение. Ниже — как это работает в отчётах, в списках и в табличных частях, а также как выделять ячейки программно.
С чего начать: где вы выделяете — в отчёте или в списке
В 1С есть два разных вида таблиц, и выделение в них устроено по-разному.
| Где | Как выглядит | Что можно выделить |
|---|---|---|
| Табличный документ | Отчёт, печатная форма, ОСВ, карточка счёта. Сетка как в Excel, есть заголовки строк и колонок | Ячейку, диапазон, строку, колонку, несколько областей сразу |
| Таблица формы | Список документов или справочника, табличная часть документа («Товары», «Услуги») | Строку (одну или несколько), текущую ячейку внутри строки |
Как быстро понять, где вы:
- 📄 видите буквы и номера по краям сетки или можете растянуть колонку как в Excel — это табличный документ;
- 📋 видите шапку колонок с сортировкой, при щелчке подсвечивается вся строка — это таблица формы.
Правила этого раздела относятся к платформе 8.3 и интерфейсу «Такси». Конфигурация роли не играет: в БП 3.0, ЗУП 3.1 и УТ 11 выделение работает одинаково, потому что его обеспечивает платформа.
Выделение ячеек мышью: одна ячейка, диапазон, строка, колонка
Все приёмы ниже — для табличного документа (отчёт, печатная форма).
Одна ячейка
Щёлкните по ячейке левой кнопкой. Рамка вокруг неё — это текущая область. Если ячейка объединённая (например, шапка «Обороты за период» над двумя колонками), выделится вся объединённая область целиком.
Диапазон ячеек
Есть два способа:
- Нажмите левую кнопку на первой ячейке и, не отпуская, протяните до последней.
- Щёлкните по первой ячейке, зажмите
Shiftи щёлкните по последней. Выделится прямоугольник между ними.
Второй способ удобнее на длинных отчётах: щёлкнули в начале, прокрутили колёсиком вниз, Shift+щелчок в конце. Протяжкой на 500 строк вниз промахнуться гораздо проще.
Строка и колонка целиком
- ➡️ Щелчок по номеру строки слева выделяет всю строку.
- ⬇️ Щелчок по заголовку колонки сверху выделяет всю колонку.
- ↕️ Протяжка по номерам строк или заголовкам колонок выделяет несколько подряд.
Если заголовков строк и колонок не видно, их отключили в отображении. В большинстве отчётов они скрыты, но выделять ячейки протяжкой это не мешает.
Несколько разрозненных областей
Зажмите Ctrl и щёлкайте или протягивайте по нужным участкам. Каждая область добавится к уже выделенным. Так, например, выделяют обороты по трём несмежным счетам в ОСВ, чтобы сразу увидеть их сумму.
Если случайно щёлкнули без Ctrl, всё выделение сбросится. Начните заново — отменить «потерю выделения» нельзя.
Горячие клавиши для выделения в табличном документе
Клавиатура быстрее мыши, когда нужно аккуратно выделить точный диапазон.
| Клавиши | Что делают |
|---|---|
| Стрелки | Переместить текущую ячейку |
Shift + стрелки | Расширить выделение на одну ячейку в нужную сторону |
Shift + щелчок | Выделить прямоугольник от текущей ячейки до щелчка |
Ctrl + щелчок | Добавить ещё одну область к выделению |
Ctrl+A | Выделить весь табличный документ |
Ctrl+C | Скопировать выделенное в буфер обмена |
Ctrl+F | Найти текст: найденная ячейка становится текущей |
Порядок при копировании блока в Excel:
- Щёлкните по левой верхней ячейке нужного блока.
- Зажмите
Shiftи стрелками доведите выделение до правой нижней ячейки. - Нажмите
Ctrl+C. - В Excel встаньте в ячейку и нажмите
Ctrl+V. Значения и ширина колонок перенесутся, формулы — нет, потому что в отчёте 1С их и не было.
Нужна конкретная строка в длинном отчёте? Ctrl+F, введите номер документа или наименование контрагента, нажмите «Найти». 1С сама поставит текущую ячейку на найденное, дальше расширяйте выделение Shift + стрелками.
Как выделить ячейки и строки в списках и табличных частях
В управляемых формах (интерфейс «Такси») таблица работает построчно, но и там есть ячейка.
Текущая ячейка в списке
Щелчок по строке подсвечивает её целиком, а колонку, по которой вы щёлкнули, отмечает рамка. Это и есть текущая ячейка. Стрелками ← и → она переходит между колонками в пределах строки.
Что с ней можно сделать:
- 📋
Ctrl+C— скопировать значение ячейки, например номер документа или ИНН; - 🔍 начать набирать текст — в большинстве списков сработает быстрый поиск по колонке, в которой стоит текущая ячейка;
- ✏️ в табличной части документа — двойной щелчок или
F2, чтобы открыть ячейку на редактирование.
Несколько строк сразу
| Действие | Как |
|---|---|
| Несколько строк подряд | Щелчок по первой, Shift+щелчок по последней |
| Расширить выделение с клавиатуры | Shift + ↑ / ↓ |
| Строки вразброс | Ctrl+щелчок по каждой |
| Все строки списка | Ctrl+A |
После этого групповые команды применяются ко всем выделенным строкам: пометка на удаление, проведение, печать, групповое изменение реквизитов.
Когда в списке нужно выделить «прямоугольник» ячеек
Выделить в динамическом списке блок ячеек, как в Excel, нельзя: список выделяет строки, а не области. Решение — вывести его в табличный документ:
- Откройте список, при необходимости настройте отбор.
- Нажмите
Ещёи выберитеВывести список.... - Отметьте нужные колонки и нажмите
ОК. - Откроется табличный документ — в нём работают все приёмы из предыдущих разделов.
Команда выводит только то, что видно по текущему отбору. Если список отфильтрован по периоду, в таблицу попадут только документы за этот период.
Программное выделение ячеек (для разработчиков)
Код ниже рассчитан на управляемую форму, где реквизит формы ТабДок типа ТабличныйДокумент выведен в поле Элементы.ТабДок. Адрес области задаётся в нотации R<строка>C<колонка>.
Сделать ячейку или диапазон текущим
&НаКлиенте
Процедура ВыделитьИтог(Команда)
// Одна ячейка: 10-я строка, 4-я колонка
Элементы.ТабДок.ТекущаяОбласть = ТабДок.Область("R10C4");
КонецПроцедуры
&НаКлиенте
Процедура ВыделитьБлок(Команда)
// Прямоугольник со 2-й по 15-ю строку, со 2-й по 5-ю колонку
Элементы.ТабДок.ТекущаяОбласть = ТабДок.Область("R2C2:R15C5");
КонецПроцедуры
Строку целиком задают как Область("R5"), колонку — Область("C3"). Именованную область из макета можно получить по имени: ТабДок.Область("Итоги").
Прочитать, что выделил пользователь
Метод ПолучитьВыделенныеОбласти() поля табличного документа возвращает все области, включая выделенные с Ctrl.
&НаКлиенте
Процедура СуммаВыделенного(Команда)
Сумма = 0;
Области = Элементы.ТабДок.ПолучитьВыделенныеОбласти();
Для Каждого Обл Из Области Цикл
Если ТипЗнч(Обл) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить; // рисунки и прочие объекты пропускаем
КонецЕсли;
Для НомСтр = Обл.Верх По Обл.Низ Цикл
Для НомКол = Обл.Лево По Обл.Право Цикл
Текст = ТабДок.Область(НомСтр, НомКол, НомСтр, НомКол).Текст;
Сумма = Сумма + ЧислоИзСтроки(Текст);
КонецЦикла;
КонецЦикла;
КонецЦикла;
Сообщить("Сумма выделенного: " + Формат(Сумма, "ЧДЦ=2; ЧГ=0"));
КонецПроцедуры
&НаКлиенте
Функция ЧислоИзСтроки(Знач Текст)
Текст = СтрЗаменить(СтрЗаменить(СокрЛП(Текст), Символы.НПП, ""), " ", "");
Текст = СтрЗаменить(Текст, ",", ".");
Попытка
Возврат Число(Текст);
Исключение
Возврат 0; // текст, пустая ячейка
КонецПопытки;
КонецФункции
Если выделена колонка или строка целиком, у области не заполнены нижняя или правая граница. Перед циклом по такой области ограничьте её через ТабДок.ВысотаТаблицы и ТабДок.ШиринаТаблицы.
Выделение строк в таблице формы
&НаКлиенте
Процедура ПерейтиКДокументу(Ссылка)
Элементы.Список.ТекущаяСтрока = Ссылка;
Элементы.Список.ТекущийЭлемент = Элементы.СписокНомер; // ячейка в колонке «Номер»
ТекущийЭлемент = Элементы.Список;
КонецПроцедуры
Для множественного выбора у таблицы должен стоять режим РежимВыделенияТаблицы.Множественный (свойство РежимВыделения). Выделенные строки лежат в коллекции Элементы.Список.ВыделенныеСтроки: её можно очистить методом Очистить() и пополнить методом Добавить().
Почему ячейка не выделяется и как это исправить
Выделение по условию: подсветка нужных ячеек
Иногда задача звучит не «выделить мышью», а «чтобы все отрицательные остатки сразу бросались в глаза». Для этого есть условное оформление.
В отчёте на СКД — без программирования
В большинстве типовых отчётов есть настройки с условным оформлением:
- Откройте отчёт и нажмите
Настройки. - Переключите вид настроек на расширенный.
- Найдите вкладку оформления и добавьте правило: условие (например, «Сумма меньше 0») и цвет фона или текста.
- Сформируйте отчёт заново.
Правило сохранится вместе с вариантом отчёта, если сохранить настройки.
В табличном документе — кодом
Если вы сами формируете табличный документ, ячейку можно подсветить при выводе:
Обл = ТабДок.Область("R7C3");
Обл.ЦветФона = WebЦвета.Желтый;
Обл.Шрифт = Новый Шрифт(Обл.Шрифт, , , Истина); // жирный
Для таблиц формы и динамических списков подсветку задают через УсловноеОформление формы, а не через цвет ячеек: строки списка перерисовываются при каждой прокрутке.
Большие отчёты: как выделять, не теряя время
ОСВ по счёту 41 на 10 000 строк или анализ субконто за год выделять протяжкой мучительно. Что помогает:
- 🔼 Сверните группировки. Кнопки уровней группировки слева сверху отчёта сворачивают детали. Выделите итоговые строки, а не весь массив.
- ⌨️
Shift+ щелчок вместо протяжки. Щелчок в начале, прокрутка,Shift+щелчок в конце — без риска «уехать» мышью. - 📊 Весь документ —
Ctrl+A. Быстрее, чем протягивать, если нужны все данные. - 💾 Не копируйте 50 000 строк через буфер. Сохраните отчёт в файл: меню
Ещё → Сохранить как(или кнопка сохранения в командной панели), формат.xlsx. Буфер обмена на больших объёмах заметно тормозит. - 🎯 Сначала отбор, потом выделение. Отбор по счёту, складу или контрагенту в настройках сокращает отчёт в разы.
При копировании отчёта со свёрнутыми группировками в Excel могут попасть и скрытые строки. Проверьте результат на итоговой сумме: она должна совпасть с суммой в 1С.