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