К статье
Практический материал

Быстрый старт · 8 мин

Как выделить ячейку в 1С: все способы

Как выделить ячейку в 1С: интерактивное выделение мышью и клавишами, работа с табличным документом, программное выделение через область и текущую область.

Выделение ячейки в 1С — базовая операция, которая встречается в трёх разных контекстах: при работе пользователя с табличным документом (отчёты, печатные формы), при заполнении табличных частей документов и при программной обработке через встроенный язык. В каждом случае действуют свои правила, и путаница между ними — частая причина вопросов у начинающих.

В режиме просмотра табличного документа выделение работает почти как в Excel: щелчок мышью, протягивание диапазона, клавиши Shift и Ctrl. В табличных частях документов выделение означает выбор строки, а не отдельной ячейки. А в коде «выделить ячейку» обычно означает либо получить область табличного документа, либо установить текущую область в поле табличного документа на форме.

Ниже разобраны все сценарии: от простого выделения мышью до программной установки текущей области и изменения оформления ячейки. Примеры кода приведены для управляемых форм типовых конфигураций на платформе 1С:Предприятие 8.3.

Выделение ячеек в табличном документе мышью и клавиатурой

Табличный документ — это отчёты, печатные формы, макеты. Чтобы выделить одну ячейку, достаточно щёлкнуть по ней левой кнопкой мыши. Активная ячейка обозначается рамкой, а её адрес (например, R5C3) отображается в поле имени области рядом с командной панелью, если оно включено.

Диапазон ячеек выделяется протягиванием мыши с зажатой левой кнопкой либо по классической схеме: щелчок по первой ячейке, затем Shift+щелчок по последней. Несмежные области добавляются с зажатой клавишей Ctrl. Целая строка выделяется щелчком по заголовку строки слева, столбец — щелчком по заголовку колонки сверху.

С клавиатуры работают стандартные комбинации: стрелки перемещают активную ячейку, Shift+стрелки расширяют выделение, Ctrl+A выделяет весь документ, Ctrl+Home переводит в начало. Это удобно при копировании данных из отчёта в буфер обмена.

Как выделить диапазон в табличном документе
  1. 1
    Откройте отчёт или печатную форму
  2. 2
    Щёлкните по первой ячейке нужного диапазона
  3. 3
    Зажмите Shift и щёлкните по последней ячейке диапазона
  4. 4
    Для добавления отдельных областей удерживайте Ctrl и выделяйте их мышью
  5. 5
    Проверьте адрес выделенной области в поле имени

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

В табличных частях документов и в динамических списках логика другая: минимальной единицей выделения является строка, а не ячейка. Щелчок по любой ячейке строки делает активной всю строку. Перемещение между колонками внутри строки выполняется клавишей Tab или стрелками в режиме редактирования.

Чтобы начать редактирование конкретной ячейки, дважды щёлкните по ней или нажмите F2 (Enter) на активной строке. Для множественного выбора строк используются Shift (непрерывный блок) и Ctrl (произвольные строки) — это нужно, например, для группового удаления или копирования позиций.

Как программно получить ячейку табличного документа

Во встроенном языке ячейка табличного документа представлена объектом «ОбластьЯчеекТабличногоДокумента». Получить её можно по координатам или по имени. Метод Область() принимает адрес в формате R1C1, имя именованной области или пару индексов строки и колонки.

Через область доступны значение, текст и параметры оформления ячейки. Типичная задача — прочитать данные из загруженного табличного документа или изменить цвет конкретной ячейки в формируемом отчёте.

ТабДок = Новый ТабличныйДокумент;

ТабДок.Прочитать("C:\Данные\Отчет.mxl");

// Получение ячейки по адресу

Ячейка = ТабДок.Область("R5C3");

ЗначениеЯчейки = Ячейка.Текст;

// Изменение оформления ячейки

Ячейка.ЦветФона = WebЦвета.Желтый;

Ячейка.Шрифт = Новый Шрифт(, , Истина); // жирный

Обратите внимание: область может охватывать несколько ячеек. Свойства Верх, Низ, Лево, Право области возвращают координаты её границ, что удобно при обходе диапазонов в цикле.

Программное выделение ячейки на форме

Когда говорят «выделить ячейку» визуально — подсветить её для пользователя, — имеется в виду установка текущей области в элементе формы «Поле табличного документа». Для этого используется свойство ТекущаяОбласть, которому присваивается область табличного документа, связанного с полем.

&НаКлиенте

Процедура ВыделитьЯчейку(Команда)

// РеквизитФормы ТабДок связан с полем табличного документа

Область = ТабДок.Область("R10C2");

Элементы.ТабДок.ТекущаяОбласть = Область;

КонецПроцедуры

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

Типичные ошибки
01
Обращение к ТекущаяОбласть на сервере — свойство доступно только на клиенте, код нужно размещать в директиве &НаКлиенте
02
Использование несуществующего адреса области — Область() вернёт пустую область, и оформление «молча» не применится
03
Попытка выделить диапазон в табличной части документа — там выделяются только строки, для диапазонов нужен табличный документ
04
Изменение ячейки в отчёте СКД после вывода — оформление результата отчёта задаётся через условное оформление, а не через область

Как подсветить ячейку цветом по условию

Если задача — не выделить ячейку курсором, а визуально подсветить её по условию (например, отрицательные суммы красным), правильный инструмент зависит от контекста. В отчётах на СКД используется условное оформление: в настройках отчёта на вкладке «Условное оформление» задаётся отбор, оформляемое поле и цвет.

В табличных документах, формируемых программно, цвет назначается напрямую через свойство ЦветФона области в момент вывода. В табличных частях и списках на форме применяется условное оформление формы (раздел «Условное оформление» в редакторе формы), где условие проверяется по данным строки.

Способы подсветки ячеек

Условное оформление СКД

Для отчётов на компоновке данных; настраивается без кода, но только в рамках полей отчёта

ЦветФона области

Для программно формируемых табличных документов; полный контроль, но требует кода

Условное оформление формы

Для списков и табличных частей на форме; работает динамически при изменении данных

ТекущаяОбласть

Для разового позиционирования курсора на ячейке; не меняет оформление, только выделяет

Проверка результата и ограничения

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

Учитывайте ограничение защищённых документов: если для табличного документа включена защита, пользователь не сможет редактировать ячейки, но выделение и копирование обычно остаются доступными. В режиме «Только просмотр» выделение также работает, а редактирование заблокировано.

Контрольные точки

Как проверить результат

Адрес активной ячейки в поле имени
Норма

Отображается ожидаемый адрес, например R5C3

Тревожный признак

Адрес пустой или не совпадает с щёлкнутой ячейкой

Программное выделение на форме
Норма

Ячейка подсвечена рамкой, документ прокручен к ней

Тревожный признак

Ничего не изменилось — проверьте директиву &НаКлиенте и заполненность документа

Изменение цвета области
Норма

Ячейка окрашена после выполнения кода

Тревожный признак

Цвет не изменился — проверьте, что область получена по верному адресу

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

Как выделить весь табличный документ целиком?

Нажмите Ctrl+A при активном табличном документе или щёлкните по серой кнопке на пересечении заголовков строк и колонок в левом верхнем углу. Программно весь документ доступен как сам объект ТабличныйДокумент без вызова Область().

Как узнать, какую ячейку выделил пользователь?

В обработчике на клиенте прочитайте свойство Элементы.ИмяПоля.ТекущаяОбласть — оно вернёт область табличного документа. Координаты доступны через свойства Верх, Низ, Лево, Право этой области.

Можно ли выделить ячейку в макете при создании печатной формы?

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

Почему не работает выделение ячейки в отчёте СКД?

Результат отчёта СКД — это табличный документ, выделение в нём работает. Но изменить оформление отдельной ячейки напрямую нельзя: результат пересоздаётся при каждом формировании. Используйте условное оформление в настройках отчёта.

Как скопировать выделенные ячейки из 1С в Excel?

Выделите нужный диапазон в табличном документе, нажмите Ctrl+C и вставьте в Excel через Ctrl+V. Альтернатива — сохранить документ через Файл → Сохранить копию в формате Excel, если нужна вся таблица с оформлением.

Как программно выделить несколько несмежных ячеек?

ТекущаяОбласть поддерживает только одну область за раз. Для визуального акцента на нескольких ячейках измените им ЦветФона или шрифт — это даст эффект множественной подсветки без выделения курсором.

Итог

Что важно запомнить

Интерактивно ячейка выделяется щелчком мыши, диапазоны — через Shift и Ctrl. Программно ячейку получают методом Область(), а визуальное выделение на форме делается через ТекущаяОбласть в клиентском коде. Для подсветки по условию используйте условное оформление или ЦветФона области.