Как правильно сохранить цвет, включая цвет стиля и веб-цвет, в регистре 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке конфигураций на платформе 1С часто возникает задача сохранения пользовательских настроек оформления, в частности, цвета. Если с обычными RGB-цветами всё понятно, то при попытке сохранить ЦветСтиля или ВебЦвет возникает сложность: они не являются статичными числами. Рассмотрим, как эффективно решить эту задачу, чтобы данные корректно работали в запросах и при условном оформлении.

Решение 1: Использование справочника цветов

Создание справочника Цвета является наиболее архитектурно верным подходом, если вам необходимо использовать эти данные в запросах или для построения отчетов. Ссылка на справочник — это полноценный объект базы данных.

Преимущества:

  1. Возможность выбора через типовой диалог ВыбратьЦвет().
  2. Наличие ссылки (УИД), по которой можно легко фильтровать данные в запросах.
  3. Возможность централизованного управления: изменив параметры оформления в одном элементе справочника, они автоматически применятся во всей системе.

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

Решение 2: Сериализация в формат JSON или строку

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

Как это реализовать:

Используйте стандартные функции ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Это позволит «заморозить» состояние любого цвета, включая сложные системные значения.


// Пример получения строкового представления цвета для сохранения
СтрокаЦвета = ЗначениеВСтрокуВнутр(ВыбранныйЦвет);
// При чтении из регистра обратно в объект
ЦветДляОформления = ЗначениеИзСтрокиВнутр(СтрокаЦвета);

Этот метод удобен для хранения персональных настроек пользователя в ХранилищеНастроек или в обычных регистрах сведений, если не требуется сложная аналитика по цвету в запросах.

Решение 3: Использование ячейки Табличного документа

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

Алгоритм работы:

  1. Создаем невидимый ТабличныйДокумент в обработке.
  2. Присваиваем ячейке нужные свойства: ЦветФона, ЦветТекста, Шрифт.
  3. Сохраняем либо ссылку на макет, либо сериализованный объект.

// Пример работы с цветом через объект ячейки
Область = Макет.Область("ЦветоваяЯчейка");
Область.ЦветФона = ВыбранныйЦвет;
Область.Шрифт = Новый Шрифт(СтандартныйШрифт, , , Истина);

Почему не стоит хранить только RGB?

Проблема «застывшего» цвета является ключевой. Если вы сохраните ЦветСтиля (например, «Цвет фона инверсный») как жесткое RGB-значение (например, 255, 0, 0), то при переключении пользователя с «Обычной» темы на «Темную» ваш интерфейс не изменится. Использование системных типов данных 1С или ссылок на справочник позволяет платформе автоматически подставлять актуальные цвета стиля при выводе данных в УсловноеОформление или ТабличноеПоле.

Рекомендации по реализации

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

← На главную