Разработка и Конфигурация · 8 мин
Как раскрасить ячейку табличного документа в 1С
Как программно и вручную раскрасить ячейку табличного документа в 1С: свойство ЦветФона, условное оформление, примеры кода, типичные ошибки и ответы на вопросы.
Табличный документ в 1С — универсальный механизм вывода данных: через него формируются печатные формы, отчёты и произвольные таблицы. Часто возникает задача выделить отдельные ячейки цветом: подсветить отрицательные суммы, отметить строки с ошибками или сделать шапку таблицы контрастной. Раскраска выполняется либо программно через свойства области табличного документа, либо через макет, либо через условное оформление в СКД.
Выбор способа зависит от того, где формируется документ. Если вы пишете код в модуле объекта или внешней обработки — удобнее задавать цвет напрямую через свойство ЦветФона. Если документ строится по макету — цвет можно задать один раз в макете и не трогать код. Для отчётов на системе компоновки данных правильнее использовать условное оформление, чтобы не вмешиваться в программный вывод.
Способы раскраски ячеек: какой выбрать
Существует три основных подхода. Первый — программная установка цвета через свойства области табличного документа. Он даёт полный контроль: можно вычислять цвет по условию, красить ячейки в цикле, реагировать на значения данных. Второй — оформление в макете: цвет задаётся один раз при проектировании макета и автоматически применяется ко всем выводимым областям. Третий — условное оформление в настройках СКД, применимое только к отчётам.
Программный способ подходит, когда логика раскраски динамическая: например, цвет зависит от суммы документа или статуса строки. Макет удобен для статичного оформления — шапок, итоговых строк, фиксированных колонок. Условное оформление СКД — единственный корректный вариант для типовых отчётов, где результат формируется компоновщиком и прямой доступ к ячейкам затруднён.
Сравнение вариантов
Подходит для динамической раскраски по условиям; требует изменения кода
Подходит для статичного оформления шапок и итогов; не работает для условий по данным
Подходит для отчётов на компоновке; недоступно для произвольных табличных документов
Программная раскраска ячейки через ЦветФона
Основное свойство — ЦветФона у объекта «ОбластьЯчеекТабличногоДокумента». Сначала получаем область через метод Область(), затем присваиваем цвет. Область можно адресовать по имени, по координатам в формате R1C1 или по номерам строк и колонок.
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область("R1C1").Текст = "Товар";
ТабДок.Область("R1C1").ЦветФона = WebЦвета.СветлоСерый;
// Адресация по номерам строки и колонки
ОбластьЯчейки = ТабДок.Область(2, 3, 2, 3); // строка 2, колонка 3
ОбластьЯчейки.ЦветФона = Новый Цвет(255, 230, 230);
Цвет можно задавать тремя способами: через перечисление WebЦвета (готовые именованные цвета), через конструктор Новый Цвет(Красный, Зелёный, Синий) со значениями от 0 до 255, либо через системные цвета стиля — например, ЦветаСтиля.ЦветФонаПоля. Системные цвета предпочтительнее, если документ должен выглядеть одинаково при разных темах интерфейса.
Помимо ЦветФона полезны смежные свойства: ЦветТекста меняет цвет шрифта ячейки, ЦветРамки и ЦветГраницы — цвет обводки. Для тёмного фона обязательно подбирайте контрастный ЦветТекста, иначе содержимое станет нечитаемым.
ТабДок.Область("R2C3").ЦветФона = WebЦвета.СветлоЖелтый;Раскраска по условию в цикле
Типовая задача — подсветить строки, где значение не удовлетворяет условию. Например, вывести остатки товаров и закрасить красным ячейки с отрицательным остатком. Для этого при выводе строк проверяем значение и при необходимости меняем цвет области.
НомерСтроки = 1;
Для Каждого СтрокаОстатка Из ТаблицаОстатков Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьОстаток = ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3);
ОбластьОстаток.Текст = СтрокаОстатка.Остаток;
Если СтрокаОстатка.Остаток < 0 Тогда
ОбластьОстаток.ЦветФона = Новый Цвет(255, 200, 200);
ОбластьОстаток.ЦветТекста = WebЦвета.ТемноКрасный;
КонецЕсли;
КонецЦикла;
Если нужно закрасить всю строку целиком, а не одну ячейку, укажите диапазон колонок: ТабДок.Область(НомерСтроки, 1, НомерСтроки, 5). Учитывайте, что повторное присвоение цвета перезаписывает предыдущий — порядок операций имеет значение.
- 1Создайте или получите табличный документ и заполните его данными
- 2Определите номера строк и колонок ячеек, которые нужно раскрасить
- 3Получите область через ТабДок.Область() по координатам или имени
- 4Присвойте свойству ЦветФона нужный цвет через WebЦвета или Новый Цвет()
- 5При необходимости задайте контрастный ЦветТекста
- 6Выведите документ и проверьте результат на экране или при печати
Раскраска через макет
Если оформление статично, проще задать цвет прямо в макете табличного документа. Откройте макет в конфигураторе, выделите ячейку или диапазон, в палитре свойств найдите «Цвет фона» и выберите значение. При выводе области через методы ПолучитьОбласть() и Вывести() цвет применится автоматически.
Этот подход снижает объём кода и упрощает сопровождение: дизайнерские правки вносятся в макет без перекомпиляции логики. Ограничение очевидно — цвет фиксирован и не может меняться по данным. Комбинированный вариант тоже допустим: базовое оформление в макете, а точечная подсветка — кодом после вывода области.
Условное оформление в отчётах на СКД
Для отчётов, построенных на системе компоновки данных, прямой доступ к ячейкам результата неудобен и ненадёжен. Вместо этого используется условное оформление: в настройках отчёта на закладке «Условное оформление» добавьте элемент, задайте условие отбора (например, «Остаток Меньше 0»), укажите оформляемые поля и в параметре «Цвет фона» выберите нужный цвет.
Условное оформление можно добавлять и программно через коллекцию Настройки.УсловноеОформление.Элементы. Это удобно, когда набор правил формируется динамически. Плюс подхода в том, что оформление применяется компоновщиком при каждом формировании отчёта и не ломается при изменении структуры вывода.
Проверка результата и типичные ошибки
После вывода документа проверьте: цвет виден на экране, текст читаем, при выгрузке в Excel цвета сохраняются. Табличный документ при сохранении в формате MXL или Excel обычно переносит цвет фона корректно, но при выгрузке в HTML или PDF оттенки могут незначительно отличаться.
Ещё одна частая проблема — производительность. Если раскрашивать тысячи ячеек по одной через Область(), формирование замедлится. Для массовой раскраски красьте целые строки одним обращением к диапазону, а не перебирайте ячейки по отдельности.
Что важно запомнить
Ячейка табличного документа красится через свойство ЦветФона области. Для статичного оформления используйте макет, для отчётов на СКД — условное оформление. Всегда проверяйте контрастность текста и корректность координат области.
Частые вопросы
Как убрать цвет ячейки обратно?
Присвойте свойству ЦветФона значение Новый Цвет() без параметров — это «авто», то есть прозрачный фон по умолчанию. Либо установите белый цвет: WebЦвета.Белый, если нужен именно белый фон.
Можно ли раскрасить ячейку градиентом или картинкой?
Штатного градиента у области табличного документа нет. Доступен только сплошной цвет фона. Картинку можно вставить как отдельный рисунок табличного документа поверх области, но это не свойство ячейки.
Почему цвет не сохраняется при выгрузке в Excel?
Проверьте, что выгрузка выполняется методом Записать() с типом файла XLSX или XLS, а не через текстовый формат. Также убедитесь, что цвет задан после вывода области, а не до него.
Как раскрасить чередующиеся строки таблицы?
В цикле вывода проверяйте чётность номера строки: если НомерСтроки % 2 = 0, задавайте светлый фон диапазону строки. В отчётах на СКД для этого есть готовая настройка «Вариант чередования» у макета поля.
Работает ли раскраска в управляемых и обычных формах одинаково?
Да, объект ТабличныйДокумент и свойство ЦветФона работают одинаково в обоих режимах и в веб-клиенте. Различия возможны только в отображении оттенков в зависимости от темы интерфейса.