Палитра web-цветов в 1С: как получить список и задать цвет

· 6 мин

Содержание

Нужно раскрасить элемент формы, ячейку отчёта или график, но под рукой только имя вроде «светло-жёлтый». В 1С за это отвечают web-цвета — набор именованных оттенков объекта WebЦвета и тип Цвет с компонентами RGB.

Разберём, чем web-цвета в 1С отличаются от произвольного RGB, как задать оттенок по имени, где взять полную палитру и как получить список всех цветов в коде — с таблицей значений и рабочими примерами.

Что такое web-цвета в 1С и объект WebЦвета

WebЦвета — это глобальный объект платформы. Он содержит набор именованных оттенков, каждый из которых возвращает значение типа Цвет.

Имена совпадают с классическими web-цветами HTML/CSS, только по-русски:

Цвет = WebЦвета.Красный;
Фон  = WebЦвета.СветлоЖелтый;

Всего в наборе порядка 140 именованных цветов — от базовых Белый, Черный, Красный до оттенков вроде Томатный или КоролевскийСиний.

Если нужен строго конкретный оттенок под бренд или фирменный стиль — имя не обязательно. Проще собрать цвет из компонентов через Новый Цвет().

Как задать цвет: три способа

Определитесь, что именно нужно — и путь станет очевиден.

Какой цвет вам нужен?

Именованный цвет из WebЦвета

Самый короткий вариант. Присваиваете свойству элемента готовое значение:

Элементы.ПолеСумма.ЦветТекста = WebЦвета.Красный;
Элементы.ПолеСумма.ЦветФона  = WebЦвета.СветлоЖелтый;

Свой цвет через Новый Цвет()

Компоненты RGB задаются числами 0..255. Например, светло-серый фон:

МойФон = Новый Цвет(240, 240, 240);
Элементы.Группа.ЦветФона = МойФон;

У готового значения Цвет можно прочитать компоненты обратно — свойства Красный, Зеленый, Синий:

Ц = WebЦвета.Оранжевый;
Сообщить(Ц.Красный + "/" + Ц.Зеленый + "/" + Ц.Синий);

Компоненты — целые от 0 до 255. Значение вне диапазона вызовет ошибку, а не «обрежется» само.

Палитра web-цветов: таблица популярных значений

Держите под рукой шпаргалку по самым ходовым оттенкам. HEX пригодится, если цвет пришёл из макета дизайнера, а RGB — для Новый Цвет().

Имя в 1СHEXRGB
Белый#FFFFFF255, 255, 255
Черный#0000000, 0, 0
Красный#FF0000255, 0, 0
Зеленый#0080000, 128, 0
Синий#0000FF0, 0, 255
Желтый#FFFF00255, 255, 0
Оранжевый#FFA500255, 165, 0
Серый#808080128, 128, 128
СветлоСерый#D3D3D3211, 211, 211
СветлоЖелтый#FFFFE0255, 255, 224

Полный набор имён шире — это лишь самые частые. Обратите внимание: web-цвет Зеленый (#008000) заметно темнее «чистого» зелёного #00FF00 — так же, как в стандарте HTML.

Безопасные web-цвета: 216 оттенков и как собрать их в коде

Есть отдельная палитра «безопасных» web-цветов (web-safe). Это 216 оттенков, у которых каждый компонент берётся только из шести значений: 0, 51, 102, 153, 204, 255 (в HEX — 00, 33, 66, 99, CC, FF).

Шесть уровней на три канала дают 6 × 6 × 6 = 216. Такую сетку удобно показывать пользователю как палитру выбора.

Соберём весь набор программно:

Уровни = Новый Массив;
Для Каждого З Из СтрРазделить("0,51,102,153,204,255", ",") Цикл
    Уровни.Добавить(Число(З));
КонецЦикла;

Палитра = Новый Массив;
Для Каждого R Из Уровни Цикл
    Для Каждого G Из Уровни Цикл
        Для Каждого B Из Уровни Цикл
            Палитра.Добавить(Новый Цвет(R, G, B));
        КонецЦикла;
    КонецЦикла;
КонецЦикла;
// Палитра.Количество() = 216

Дальше цвета из массива раскладываете по ячейкам табличного документа или по элементам формы — получаете готовую палитру выбора.

Как получить список web-цветов в 1С: 4 способа

Главная сложность: объект WebЦвета не умеет перечислять сам себя циклом Для Каждого. Отсюда и разные подходы.

Способ 1. Сгенерировать безопасную палитру

Тот самый тройной цикл из раздела выше. Плюс: полный, предсказуемый набор из 216 цветов без ручного ввода. Минус: это не именованные web-цвета, а математическая сетка.

Способ 2. Перебор через внутреннее представление

Значение Цвет можно сериализовать (ЗначениеВСтрокуВнутр) и разобрать. Способ рабочий, но хрупкий: формат внутреннего представления не документирован и может меняться между релизами.

Не завязывайте боевой код на разбор внутреннего представления. Обновление платформы может тихо сломать логику.

Способ 3. Справочный список имён в коде

Прописываете соответствие «имя → значение» вручную:

Список = Новый СписокЗначений;
Список.Добавить(WebЦвета.Красный,  "Красный");
Список.Добавить(WebЦвета.Зеленый,  "Зеленый");
Список.Добавить(WebЦвета.Синий,    "Синий");
// ... и так далее по нужным именам

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

Способ 4. Макет табличного документа с палитрой

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

Диалог выбора цвета и превью в конфигураторе

В палитре свойств конфигуратора у свойства-цвета есть кнопка выбора. Диалог разбит на вкладки:

  • 🎨 Оформление (стили) — цвета из стилей конфигурации;
  • 🌐 Web-цвета — те самые именованные оттенки;
  • 🪟 Windows-цвета — системные цвета ОС (меняются вместе с темой Windows);
  • 🎛️ Прочее — произвольный RGB ползунками.

Для превью и подбора web-цветов вне конфигуратора удобны сторонние палитры и подсказки синтаксиса BSL — там цвет виден рядом с именем.

Отдельного универсального диалога выбора цвета «на лету» для управляемых форм платформа не даёт — интерактивную палитру собирают сами, обычно на макете табличного документа или на форме с сеткой из 216 web-safe цветов.

Типичные ошибки

  • Путают Web-цвета и Windows-цвета. Windows-цвет зависит от темы ОС пользователя и на разных машинах выглядит по-разному. Для стабильного оформления берите WebЦвета или свой RGB.
  • Пробуют перебрать WebЦвета циклом Для Каждого. Объект это не поддерживает — нужен один из четырёх способов выше.
  • Задают компоненты в диапазоне 0–100 или дробью. Только целые 0..255.
  • Сравнивают цвета «на глаз». Два визуально близких оттенка — это разные значения Цвет; сравнивайте по компонентам RGB.
Проверьте себя
Сколько цветов в «безопасной» web-палитре?
В каком диапазоне задаются компоненты в `Новый Цвет()`?
Каким циклом перебрать все именованные значения `WebЦвета`?

Если не помогло

Цвет не применился или выглядит не так, как ждали — пройдитесь по чек-листу.

Цвет не применяется — что проверить
Выполнено: 0 / 6

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

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

Чем WebЦвета отличается от Нового Цвета?
WebЦвета — готовый набор именованных оттенков (WebЦвета.Красный). Новый Цвет(R, G, B) создаёт произвольный цвет из компонентов 0–255. Оба возвращают тип Цвет и взаимозаменяемы в свойствах формы.
Как получить список всех web-цветов в 1С?
Циклом объект не перечисляется. На практике либо генерируют безопасную палитру из 216 цветов тройным циклом, либо ведут свой справочный список имён, либо читают цвета из макета табличного документа.
Сколько всего web-цветов?
Именованных в WebЦвета — около 140. Отдельно есть «безопасная» палитра из 216 оттенков (по 6 уровней на каждый из каналов RGB).
Можно ли задать цвет по HEX-коду?
Прямого конструктора из HEX нет. Переводите HEX в три компонента RGB и передавайте в Новый Цвет(). Например, #FFA500Новый Цвет(255, 165, 0).
Почему цвет разный на двух компьютерах?
Скорее всего использован Windows-цвет — он берётся из темы ОС. Замените на WebЦвета или явный RGB, тогда оттенок будет одинаковым везде.
Как узнать RGB готового цвета?
У значения Цвет есть свойства Красный, Зеленый, Синий: WebЦвета.Оранжевый.Красный вернёт 255.