Выделение ячеек цветом: условное оформление в 1С 8.3

· 9 мин

Содержание

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

Коротко по всем способам: вручную красят заливкой в панели форматирования табличного документа; в отчёте на СКД — через вкладку Условное оформление; в журналах и списках — через Настроить список; из своего кода — через свойство ЦветФона области и объект Новый Цвет(R, G, B). Ниже разберём каждый путь с точными шагами и примерами.

Что именно нужно подсветить?

Чем отличается ручная заливка от правила по условию

Разница принципиальная, и она определяет выбор способа.

  • 🖌️ Ручная заливка — это свойство конкретной ячейки в конкретном табличном документе. Пока документ открыт, цвет виден; пересформировали отчёт — цвет исчез, потому что документ построился заново.
  • 🎯 Условное оформление — это правило: «если значение удовлетворяет условию, применить такой-то цвет». Правило хранится в настройках отчёта или списка и срабатывает каждый раз автоматически.
  • ⚙️ Программное выделение — вы сами в коде присваиваете цвет области. Нужно, когда условие сложное или документ собирается обработкой, а не стандартным механизмом.

Для цвета в 1С используется объект Цвет. Задать его можно тремя способами — выбор зависит от того, нужен точный оттенок или совместимость с темой оформления:

СпособПримерКогда применять
Новый Цвет(R, G, B)Новый Цвет(255, 199, 206)нужен конкретный оттенок, значения 0–255
WebЦветаWebЦвета.Красныйхватает базового набора именованных цветов
ЦветаСтиляЦветаСтиля.ЦветФонаПоляВводацвет должен подстраиваться под тему платформы

Для подсветки «отрицательное — красным» удобнее Новый Цвет: подбираете мягкий оттенок, который не режет глаза в большой таблице. Яркий чистый красный Новый Цвет(255, 0, 0) на половину отчёта смотрится агрессивно.

Ручная заливка ячеек в табличном документе

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

  1. Выделите мышью нужную ячейку или диапазон (зажав Ctrl, можно выбрать несколько несмежных областей).
  2. На панели форматирования над документом нажмите стрелку рядом с кнопкой заливки (значок ведёрка с краской) и выберите цвет из палитры либо откройте полный выбор через Другие цвета.
  3. Там же рядом настраивается цвет текста (буква с цветной полосой) и рамка ячеек.

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

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

У ручной заливки всё же есть своя ниша. Если нужно разово пометить несколько строк перед тем, как отправить отчёт коллеге или в банк, — выделили, залили, сохранили результат в файл. Цвет сохранится и в формате табличного документа (.mxl), и при сохранении в Excel: получатель увидит ровно то, что вы подкрасили. Для постоянной же подсветки по значению этот путь не годится — придётся повторять заливку после каждого пересчёта.

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

Условное оформление в отчёте на СКД

Это основной способ для отчётов. Система компоновки данных (СКД) умеет красить ячейки по условию без единой строки кода.

Где настраивается. Откройте отчёт, нажмите Настройки и переключите форму настроек в расширенный (полный) вид — тогда станут видны все вкладки, включая Условное оформление.

Дальше добавляете элемент оформления:

  1. На вкладке Условное оформление нажмите Добавить — появится новая строка с тремя колонками.
  2. В колонке Оформление выберите, что менять: откройте форму и поставьте цвет в поле Цвет фона (или Цвет текста, Шрифт — можно сразу несколько свойств).
  3. В колонке Условие задайте правило: поле, вид сравнения и значение. Например, поле Остаток, сравнение Меньше, значение 0.
  4. В колонке Оформляемые поля укажите, к каким колонкам применить цвет. Оставите пустым — оформление применится ко всей строке.

Готово: при каждом формировании отчёта строки или ячейки, подходящие под условие, окрасятся сами.

Разбор на примере. Нужно в отчёте по взаиморасчётам подсветить долги красным. Порядок такой:

  1. Открыли отчёт, нажали Настройки, переключили в расширенный вид.
  2. Вкладка Условное оформление → Добавить.
  3. В Оформление поставили Цвет фона = светло-красный.
  4. В Условие выбрали поле Долг покупателя (или аналогичное поле вашего отчёта), сравнение Больше, значение 0.
  5. В Оформляемые поля указали только колонку с суммой долга — тогда подсветится ячейка, а не вся строка.

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

Несколько условий. Чтобы «отрицательные — красным, нулевые — серым, крупные — зелёным», добавьте три отдельных элемента оформления. Порядок имеет значение: если две строки правил подходят под одну ячейку, применится та, что выше.

Диапазон значений. Для условия «от и до» добавьте в одном элементе сразу два отбора через И: Сумма Больше или равно 100000 и Сумма Меньше 500000.

Если отчёт типовой и настройки хочется сохранить для коллег — сохраните их как вариант отчёта через Ещё → Сохранить вариант.

Подсветка строк в журналах и списках

Динамические списки — журналы документов, списки справочников, формы со списком — поддерживают то же условное оформление. Классика: подсветить просроченные заказы или непроведённые документы.

  1. В форме списка нажмите Ещё → Настроить список (в некоторых формах команда называется Настроить список сразу в меню Ещё).
  2. Перейдите на вкладку Условное оформление.
  3. Добавьте элемент так же, как в отчёте: оформление (цвет фона), условие (например, Проведён Равно Нет) и при необходимости оформляемые поля.

После закрытия настройки список перекрасится сразу. Настройка привязана к конкретной форме у конкретного пользователя — у других она не появится, если не включена на уровне конфигурации.

Частые сценарии подсветки в списках:

  • 🔴 непроведённые документы — условие Проведён Равно Нет;
  • 🟡 документы на крупную сумму — условие Сумма документа Больше или равно и порог;
  • 🔵 заказы за конкретного ответственного — условие по полю Ответственный.

Условие можно строить по реквизитам документа, которые есть в списке. Если нужного поля в условии нет, добавьте его в состав колонок списка — тогда оно станет доступно и для отбора, и для оформления.

Программное выделение цвета на встроенном языке

Когда документ собирается обработкой или условие слишком хитрое для СКД, цвет задают в коде. Работаем со свойством ЦветФона области табличного документа.

Адресовать область можно по имени или по номерам строки и колонки:

Макет = ПолучитьМакет("Макет");

// по имени области
Область = Макет.Область("Шапка");

// по координатам: ячейка в строке 2, колонке 3
ЯчейкаR2C3 = Макет.Область(2, 3, 2, 3);

ЯчейкаR2C3.ЦветФона = Новый Цвет(255, 255, 153);  // мягкий жёлтый
ЯчейкаR2C3.ЦветТекста = Новый Цвет(192, 0, 0);    // тёмно-красный

Подсветка по условию при выводе строк выглядит так:

Для Каждого СтрокаДанных Из ТаблицаЗначений Цикл
    ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
    ОбластьСтроки.Параметры.Заполнить(СтрокаДанных);

    Если СтрокаДанных.Остаток < 0 Тогда
        ОбластьСтроки.Область("Остаток").ЦветФона = Новый Цвет(255, 199, 206);
    КонецЕсли;

    ТабДок.Вывести(ОбластьСтроки);
КонецЦикла;

Новый Цвет принимает три числа от 0 до 255 — доли красного, зелёного и синего. Значение больше 255 вызовет ошибку. Если лень подбирать числа, берите готовые имена из WebЦвета или цвета, зависящие от темы платформы, из ЦветаСтиля.

Вместе с фоном у области меняются и другие свойства оформления: ЦветТекста для цвета шрифта и Шрифт — чтобы, например, сделать подсвеченные цифры жирными. Так подсветка становится заметнее даже при чёрно-белой печати.

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

Правьте цвет в коде только у области, которую сами создали или получили из макета. Менять оформление ячеек произвольного чужого табличного документа «на лету» — путь к трудноуловимым расхождениям между тем, что на экране, и тем, что уходит в печать.

Где подсветка работает без доработок

Условное оформление доступно пользователю в любой типовой конфигурации на управляемых формах — БП 3.0, ЗУП 3.1, УТ 11, ERP, Комплексная автоматизация. Отдельно включать ничего не нужно: отчёты построены на СКД, а списки — динамические, и оба механизма уже умеют красить по условию.

  • 📊 В отчётах — Настройки → расширенный вид → вкладка Условное оформление. Работает в оборотно-сальдовой ведомости, анализе счёта, ведомостях по взаиморасчётам.
  • 🧰 В универсальном отчёте раскраска особенно удобна: вы сами выбираете таблицу, поля и условие, а затем подсвечиваете нужные значения — хоть остатки на складе, хоть расхождения в учёте.
  • 📋 В списках — Настроить список в любом журнале документов или списке справочника.

Исключение одно: если отчёт сделан на старом макете, а не на СКД (такое встречается в нетиповых разработках), вкладки условного оформления в его настройках не будет. Там останется только ручная заливка готового результата или доработка отчёта программистом.

Частые ошибки при выделении цветом

❌ Раскрасили готовый отчёт вручную — цвет пропал. Ручная заливка не сохраняется в алгоритме. Для повторяемой подсветки нужно условное оформление или код.

❌ Оформление применяется ко всей строке, а нужна одна колонка. Заполните колонку Оформляемые поля — без неё СКД красит всю строку целиком.

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

❌ Цвет виден на экране, но не печатается или не выгружается в Excel. Обычно дело в том, что печатается другой макет или другой вариант отчёта. Условное оформление отчёта выгружается в Excel вместе с документом — проверьте, что печатаете именно тот результат, который видите.

❌ Новый Цвет с числом больше 255. Составляющие цвета — строго 0–255. Новый Цвет(300, 0, 0) даст ошибку при выполнении.

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

Может ли обычный пользователь выделить ячейку цветом без программирования?
Да. В отчётах и списках для этого есть встроенное условное оформление: Настройки в отчёте или Настроить список в форме списка, вкладка Условное оформление. Код не нужен.
Выгружается ли цвет в Excel и на печать?
Да. Условное оформление отчёта на СКД и заливка ячеек табличного документа сохраняются при сохранении в Excel и при печати. Пропадает только ручная заливка готового результата после переформирования.
Как покрасить только одну колонку, а не всю строку?
В элементе условного оформления заполните поле Оформляемые поля — укажите в нём конкретную колонку. Если оставить пусто, оформление применится ко всей строке.
Как убрать условное оформление?
Откройте ту же вкладку Условное оформление (в настройках отчёта или через Настроить список), выделите лишний элемент и нажмите Удалить. Для отчёта можно сбросить настройки к стандартным через Ещё → Установить стандартные настройки.
Можно ли красить по сравнению двух полей, а не с константой?
В типовом условном оформлении значение сравнивается с заданной величиной. Для сравнения двух полей между собой либо добавьте в данные вычисляемое поле с разницей и сравнивайте его с нулём, либо задавайте цвет программно.