Разработка и Конфигурация · 10 мин
Как изменить цвет таблицы в 1С
Как изменить цвет таблицы в 1С: условное оформление формы, программная раскраска строк и ячеек, настройка цвета в табличных документах и отчётах. Примеры кода.
Изменение цвета таблицы в 1С — типовая задача, с которой сталкиваются и пользователи, и разработчики. Под «таблицей» может пониматься табличная часть документа, динамический список, таблица значений на форме или табличный документ в отчёте — и в каждом случае механизм раскраски свой. Универсальной кнопки «сменить цвет» нет: выбор инструмента зависит от того, где именно отображается таблица и что требуется — подсветить строки по условию или просто оформить внешний вид.
Для управляемых форм основной инструмент — условное оформление формы, которое позволяет красить строки и ячейки по условиям без единой строки кода. Для более сложных сценариев используется программное изменение оформления через модуль формы. В табличных документах цвет задаётся через свойства области: фон, шрифт, рамки.
Ниже разобраны все основные способы: от простой настройки условного оформления до программной раскраски ячеек, с примерами кода и типичными ошибками.
Определяем, какая таблица требует раскраски
Перед изменением цвета важно понять, с каким объектом вы работаете, потому что механизмы не взаимозаменяемы. В 1С встречаются четыре типичных случая: табличная часть документа или справочника, динамический список (журнал документов, список справочника), таблица значений на форме обработки и табличный документ (печатная форма, отчёт).
Табличная часть и динамический список отображаются на управляемой форме и раскрашиваются через условное оформление. Таблица значений — тоже через условное оформление формы, но условия строятся на её колонках. Табличный документ — это отдельный объект, где цвет задаётся напрямую областям ячеек при формировании или в режиме редактирования.
Как выбрать способ
Меняем цвет через условное оформление формы без кода
Самый доступный способ — условное оформление формы в конфигураторе. Откройте форму объекта в конфигураторе, перейдите на закладку «Условное оформление» (либо через свойства формы) и добавьте новый элемент. В нём задаются три составляющие: условие отбора, оформляемые поля и само оформление — цвет фона, цвет текста, шрифт.
Например, чтобы подсветить строки табличной части «Товары», где количество равно нулю, в условии укажите: поле «Объект.Товары.Количество», вид сравнения «Равно», значение 0. В оформлении установите цвет фона, например светло-красный, а в списке оформляемых полей добавьте нужные колонки таблицы. После сохранения формы строки будут подсвечиваться автоматически.
Обратите внимание: если не указать оформляемые поля, оформление применится ко всей строке таблицы. Это удобно для подсветки строки целиком, но при необходимости выделить только одну ячейку список полей нужно заполнить явно.
- 1Откройте форму в конфигураторе и перейдите к условному оформлению формы
- 2Добавьте элемент и задайте условие отбора по полю таблицы
- 3Укажите оформление: цвет фона, цвет текста, стиль шрифта
- 4Перечислите оформляемые поля или оставьте пустым для всей строки
- 5Сохраните форму и проверьте результат в режиме Предприятие
Программное изменение цвета строк и ячеек
Когда условие сложное или зависит от данных, недоступных в отборе, оформление добавляется программно в модуле формы. Обычно это делается в обработчике ПриСозданииНаСервере. Работа ведётся с коллекцией УсловноеОформление формы: создаётся элемент, в него добавляются отбор, оформление и поля.
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
// Условие
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = 10000;
ЭлементОтбора.Использование = Истина;
// Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЖелтый);
// Оформляемые поля
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыЦена");
ПолеОформления.Использование = Истина;
Важный нюанс: в свойстве «Поле» указывается имя элемента формы (колонки таблицы), а не путь к данным. Если указать имя, которого нет среди элементов формы, оформление просто не сработает, и платформа не выдаст ошибку — это одна из самых частых причин «неработающей» раскраски.
Изменение цвета в табличном документе
Табличный документ — это печатные формы и многие отчёты. Здесь цвет задаётся напрямую области ячеек через свойства ЦветФона, ЦветТекста, Шрифт. Сделать это можно программно при формировании документа или вручную в открытом табличном документе.
Программный вариант выглядит так:
Область = ТабДок.Область("R5C3:R5C8");
Область.ЦветФона = Новый Цвет(255, 240, 200);
Область.ЦветТекста = WebЦвета.ТемноСиний;
Область.Шрифт = Новый Шрифт(, , Истина); // жирный
Цвет можно задавать тремя способами: конструктором Новый Цвет(красный, зелёный, синий) со значениями от 0 до 255, предопределёнными значениями WebЦвета (например, WebЦвета.Красный) или абсолютными цветами стиля. Вручную в открытом табличном документе цвет меняется через контекстное меню «Свойства» после выделения нужных ячеек — но такие изменения не сохраняются в макете и пропадут при повторном формировании.
Раскраска отчётов на СКД
Если таблица — это отчёт на системе компоновки данных, цвет настраивается через условное оформление в настройках отчёта. В конфигураторе откройте схему компоновки, закладку «Настройки», вкладку «Условное оформление» и добавьте элемент: условие, область использования и оформление. Пользователь может сделать то же самое в режиме Предприятия через «Изменить вариант отчёта», не привлекая разработчика.
Преимущество СКД в том, что условное оформление работает и для группировок, и для итоговых строк. Например, можно подсветить итоги с отрицательным остатком красным, а строки с просроченной задолженностью — жёлтым, и всё это без изменения запроса отчёта.
Сравнение способов раскраски
Подходит для табличных частей, списков и таблиц значений; не требует кода, но ограничено возможностями отбора
Гибкие условия любой сложности, но требует доработки модуля формы
Полный контроль над печатной формой, но только при формировании или вручную
Доступно пользователю без конфигуратора, но работает только в отчётах на СКД
Типичные ошибки и проверка результата
Чаще всего раскраска «не работает» по одной из четырёх причин. Первая — в оформляемых полях указан путь к данным вместо имени элемента формы. Вторая — условие отбора построено по полю, которого нет в данных таблицы, и отбор молча не срабатывает. Третья — оформление добавлено, но позже перекрыто другим элементом условного оформления с более высоким приоритетом (элементы применяются сверху вниз, и нижние могут переопределять верхние). Четвёртая — попытка раскрасить динамический список через обработчики ПриПолученииДанных, которые в управляемых формах не используются.
После настройки проверьте результат на тестовых данных, где условие гарантированно выполняется и гарантированно не выполняется: подсвеченные строки должны быть только в первом случае. Проверьте также поведение при прокрутке длинного списка и после перезаполнения таблицы — условное оформление должно применяться автоматически к новым строкам.
Как проверить результат
Строка или ячейка окрашена заданным цветом
Цвет не меняется — проверяйте отбор и имена полей
Оформление стандартное
Окрашены все строки — условие отбора пустое или неверное
Раскраска воспроизводится без дублей
Оформление пропадает или дублируется
Подсветка применяется автоматически
Новые строки не окрашиваются
Что важно запомнить
Таблицы на форме раскрашиваются условным оформлением — в конфигураторе или программно; табличные документы — свойствами ЦветФона и ЦветТекста области; отчёты на СКД — условным оформлением настроек. Перед доработкой типовой конфигурации сделайте резервную копию и предпочтите расширение.
Часто задаваемые вопросы
Можно ли изменить цвет таблицы без конфигуратора?
Да, если это отчёт на СКД — пользователь может добавить условное оформление через «Изменить вариант отчёта» в режиме Предприятия. Для табличных частей документов без доработки формы раскраску добавить нельзя.
Как раскрасить строку целиком, а не отдельные ячейки?
В условном оформлении формы оставьте список оформляемых полей пустым — оформление применится ко всей строке таблицы. Либо перечислите в полях все видимые колонки таблицы.
Почему условное оформление не срабатывает, хотя условие верное?
Наиболее частые причины: в оформляемых полях указан путь к данным вместо имени элемента формы, у элемента отбора не установлено свойство Использование, или оформление перекрыто другим элементом, расположенным ниже в списке.
Как задать произвольный цвет, которого нет в WebЦветах?
Используйте конструктор Новый Цвет(красный, зелёный, синий) со значениями компонентов от 0 до 255. Например, Новый Цвет(255, 200, 200) даст светло-красный оттенок.
Можно ли менять цвет ячейки в зависимости от её значения в табличном документе?
Да, при программном формировании: после вывода значения проверьте его условием и установите области нужный ЦветФона. Для отчётов на СКД аналогичную задачу решает условное оформление в настройках схемы.
Повлияет ли раскраска на обновление типовой конфигурации?
Условное оформление, добавленное в форму типовой конфигурации, при обновлении может конфликтовать с изменениями поставщика или быть утеряно, если форма заменяется полностью. Безопаснее оформлять доработки через расширение конфигурации.